張鑫+康磊
摘 要:LCD具有工作電壓低、功耗小等優(yōu)點,因而被廣泛應(yīng)用于電子產(chǎn)品中。LCD驅(qū)動電路是液晶顯示系統(tǒng)的重要組成部分,常規(guī)LCD驅(qū)動電路的開發(fā)既浪費時間,而且復用性也較差。隨著FPGA和SOPC技術(shù)的不斷成熟,基于IP核的設(shè)備驅(qū)動設(shè)計能夠提高產(chǎn)品的設(shè)計效率,縮短上市時間,因而受到越來越多開發(fā)人員的青睞。本文是基于IP核的LCD控制器的設(shè)計。首先,討論了LCD控制器的設(shè)計實現(xiàn);接著,為LCD控制器添加Avalon總線接口信號,實現(xiàn)與Avalon總線的連接,將其封裝成LCD IP核;隨后,為了方便軟件開發(fā),編寫了LCD的驅(qū)動函數(shù)庫;最后,構(gòu)建了一個包含該IP核的SOPC系統(tǒng),并且在Nios II IDE環(huán)境下,編寫程序?qū)υ揑P核的功能進行驗證,結(jié)果表明,該IP核的軟硬件功能設(shè)計正確。
關(guān)鍵詞:FPGA,SOPC,LCD,IP核,Avalon總線
前言
Nios II嵌入式處理器是Altera公司提出的SOPC解決方案, 是一種用戶可隨意配置和構(gòu)建的32位嵌入式處理器,結(jié)合豐富的外設(shè)可快速、靈活地構(gòu)建功能強大的SOPC系統(tǒng)[1],并且其提供了一些通用的IP核,使用非常方便[2],但是在構(gòu)建SOPC系統(tǒng)時,這些IP核都是受知識產(chǎn)權(quán)保護的,費用比較高。如果設(shè)計一個基于Avalon總線的LCD控制器IP核,這樣對于構(gòu)建一個具有顯示系統(tǒng)的SOPC系統(tǒng),就比較具有實際意義。本文在基于Nios II的SOPC系統(tǒng)中設(shè)計了LCD顯示驅(qū)動IP核,并下載到Cyclone 系列的FPGA中,實現(xiàn)了對LCD的顯示驅(qū)動。
1 系統(tǒng)開發(fā)流程
(1)了解開發(fā)板上的LCD顯示屏的規(guī)格原理。
(2)在Quartus II 8.1軟件環(huán)境下進行LCD控制器的實現(xiàn)。
(3)將實現(xiàn)的LCD控制器在SOPC Bulider下封裝成為IP核。
(4)建立LCD驅(qū)動函數(shù)庫。
(5)搭建模擬測試硬件系統(tǒng)。
(6)搭建模擬測試軟件系統(tǒng)。
2 LCD IP核的設(shè)計與實現(xiàn)
2.1 LCD 驅(qū)動模塊的實現(xiàn)
2.1.1 設(shè)計思路
LCD控制器的實現(xiàn)共包含三個部分,分別是LCD初始化模塊,LCD顯示模塊,LCD顯示頂層模塊。LCD顯示頂層模塊用于連接初始化與顯示模塊,其中LCD初始化完成后會有一個使能信號,來驅(qū)動LCD顯示模塊工作,通過頂層文件連接初始化與顯示模塊兩部分使得該系統(tǒng)可以正常工作。
2.1.2 LCD初始化模塊實現(xiàn)
LCD初始化主要是對LCD模塊的寄存器進行初始化,也就是給寄存器寫入預設(shè)的數(shù)據(jù),使得LCD可以正常工作。首先確定一系列輸入輸出信號,比如輸入有時鐘信號,復位信號,輸出有RS,RW,數(shù)據(jù)位等,通過把50MHz時鐘信號進行分頻,產(chǎn)生大于15ms,4.1ms,100us的時鐘信號,然后使用狀態(tài)機進行一系列的賦值工作,當狀態(tài)機進行到最后一個狀態(tài),即模式設(shè)置狀態(tài),將初始化完成信號賦值為1,代表初始化完成。
2.1.3 LCD顯示模塊實現(xiàn)
LCD顯示模塊主要是控制LCD正常工作,通過8位的數(shù)據(jù)輸入,然后在LCD顯示該8位數(shù)據(jù)代表的字符。首先LCD顯示模塊必須是在LCD初始完成后才能正常工作,所以LCD初始模塊初始完成信號便是LCD顯示模塊的使能信號,通過一系列狀態(tài),比如清屏狀態(tài),功能設(shè)置狀態(tài)等,使得輸入的八位數(shù)據(jù)可以到達輸出部分,并且在每個狀態(tài)中對RS,RW等LCD的功能引腳進行賦值,以達到在合適的時候,將合適的指令與數(shù)據(jù)送到對應(yīng)的引腳。這樣才能確保LCD顯示模塊正常工作。
2.1.4 頂層模塊的實現(xiàn)
首先,完成LCD初始模塊與LCD顯示模塊的編碼,然后通過各種器件進行連接,其中LCD初始化完成后會產(chǎn)生一個LCD初始化完成信號,來驅(qū)動LCD顯示模塊工作,LCD初始化與LCD顯示模塊的輸出都要進入一個擴展模塊,除了LCD初始模塊的初始化完成后的信號,將兩個模塊的輸出通過兩個擴展模塊后,再進入到一個二選一數(shù)據(jù)選擇器中,數(shù)據(jù)選擇器的選擇信號量為初始化的完成信號,最后,將選擇得到的數(shù)據(jù)進行拆分,分別輸送到LCD的功能引腳,LCD的控制器到此完成。
2.2 LCD IP核的封裝
在LCD IP核的封裝過程中,首先要了解Avalon總線常用信號接口,這樣才能確保LCD控制器信號量與Avalon總線連接的正確性;接著,將頂層模塊中的clk、reset_n、chipselect、address、data、write、writedata、export、read
data等信號與Avalon總線信號接口對應(yīng)相連,同時頂層模塊將LCD 顯示屏的初始化模塊與顯示模塊連接起來,使得LCD顯示屏可以正常的工作;最后在SOPC Bulider中,將LCD IP核設(shè)置為組件,實現(xiàn)LCD IP核的封裝。
2.3 建立LCD驅(qū)動函數(shù)庫
LCD驅(qū)動函數(shù)庫主要為了方便開發(fā)人員對該LCD IP核的使用。
3 LCD IP核功能驗證
3.1 模擬測試系統(tǒng)的設(shè)計思路
要驗證LCD IP核的功能,首先搭建一個包含該IP核的模擬測試硬件系統(tǒng),然后搭建一個模擬測試軟件系統(tǒng),通過兩部分的協(xié)作,來實現(xiàn)驗證功能。
3.2 搭建模擬測試硬件系統(tǒng)
模擬測試硬件系統(tǒng)是將自定義的LCD IP核添加到一個具有Nios II處理器、JATG UART、RAM,PIO組件的SOPC系統(tǒng)中,在此過程中要添加兩類PIO,分別是輸入PIO,中斷PIO,輸入PIO的主要是進行數(shù)據(jù)的輸入,中斷PIO主要是產(chǎn)生中斷信號,接著設(shè)置Nios II處理器的異常中斷與復位地址,自動分配地址與中斷號,最后生成SOPC系統(tǒng),添加輸入輸出,重命名,編譯綜合,完成后進行引腳分配,再次綜合,到此,一個完整的模擬測試硬件系統(tǒng)便搭建完畢。
3.3 搭建模擬測試軟件系統(tǒng)
模擬測試軟件系統(tǒng)主要是在模擬測試硬件系統(tǒng)的基礎(chǔ)上,通過調(diào)用LCD驅(qū)動函數(shù)來實現(xiàn)對LCD IP核的功能進行驗證。通過在Nios II IDE中創(chuàng)建NIOS II C/C++ Application,編譯該工程,配置和編譯完成后,出現(xiàn)一系列與硬件系統(tǒng)相關(guān)的文件,之后進行主函數(shù)的編寫,通過調(diào)用LCD驅(qū)動函數(shù)和中斷技術(shù)來實現(xiàn)功能,在主函數(shù)中,首先在中斷初始化程序中對中斷服務(wù)程序進行注冊,當捕獲到中斷時,便進入中斷服務(wù)程序,在此過程中,先得到輸入PIO的值,然后設(shè)定一個計數(shù)器來表示LCD字符的位置,先把字符顯示在LCD顯示屏第一行,當計數(shù)器大于15時,便把字符顯示在LCD顯示屏的第二行,當計數(shù)器等于31時,將計數(shù)器清零,繼續(xù)把字符顯示在LCD顯示屏第一行第一個位置,這樣便把輸入的值通過中斷顯示在LCD顯示屏上,通過撥動開關(guān)產(chǎn)生相對應(yīng)字符的Ascll碼,按下中斷按鍵后,對應(yīng)的字符便會顯示在LCD顯示屏上。
參考文獻
[1]趙倩編著,Verilog數(shù)字系統(tǒng)設(shè)計與FPGA應(yīng)用[M].北京:清華大學出版社,2012:139-244.
[2]劉敏.采用SOPCIP核技術(shù)實現(xiàn)液晶屏顯示[J].液晶與顯示,2011,(05):665-672.endprint