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