鄭恭明,沈媛媛,陳永軍 (長江大學電子信息學院,湖北 荊州434023)
12864液晶模塊的顯示分辨率為128×64,其接口靈活、指令簡單、操作方便,既可顯示8×4行16×16點陣漢字又可完成圖形顯示,構成全中文的人機交互圖形界面,因而被廣泛應用。可編程片上系統SOPC (System on a Programmable Chip)[1]是以Altera推出的第二代軟核 NiosⅡ處理器為核心的嵌入式系統,包括硬件的配置、設計、仿真與軟件的設計、調試等。其開發流程包括2個方面,即基于QuartusⅡ、SOPC Builder的硬件設計與基于NiosⅡIDE的軟件設計。在NiosⅡ系統的構建過程中,SOPC Builder開發環境集成了常用類型的設備模型,供開發者調用。下面,筆者基于Avalon總線進行LCD組件設計。
片上可編程 (SOPC)技術可以根據具體的點陣LCD顯示模塊設計對應的驅動程序,對不同類型的點陣LCD顯示模塊完成對應的算法,提供相應的時序信號和數據信號。此外,可以根據不同的微處理器設計出對應的接口,適用于不同的操作,通過相關電路設計在一定程度上減輕微處理器的負擔。
SOPC Builder開發工具允許用戶依據相應規則擴展其所需設備組件IP(Intellectual Property)核,完成系統的設計和開發,開發者按照Avalon總線規范將設備驅動程序集成到SOPC Builder的硬件抽象層 (HAL)中,在SOPC Builder環境下加載使用,從而方便用戶開發一個自定制的片上系統[2-3]。
設計時采用自頂向下的設計和自底向上的實現思想,將其分為3個功能模塊:接口模塊 (avalon interface)作為頂層模塊,定義總線接口信號;寄存器文件模塊 (register file)完成IP核與外部模塊進行通信,提供訪問與控制元件的邏輯界面;任務邏輯模塊 (task logic)實現元件的硬件功能[4]。從最底層的模塊開始編程實現,只要保證下層模塊的正確性,上層模塊的正確性也就容易得到保證。
1)接口模塊 接口模塊作為頂層模塊,為寄存器文件模塊提供了一個標準的Avalon前端。它遵循Avalon總線的規范,實現對LCD IP核寄存器的訪問,并支持任務邏輯的傳輸類型[3]。總線接口主要完成從NiosⅡ處理器接收指令和數據,實現對IP核的復位、片選、尋址及內部寄存器進行讀寫等操作。LCD接口信號如表1所示。
2)寄存器文件模塊 寄存器文件模塊提供了IP核與外界交換信息的途徑,依據寄存器文件,可以通過Avalon接口采用“基地址+地址偏移量”的方式來訪問IP核內部的各個寄存器。LCD IP核內部寄存器如表2所示。

表1 LCD接口信號

表2 LCD IP核內部寄存器
在HDL文件中,如果reset_n、chipselect、write均等于 ‘1’,且address信號為‘0’時,將write_data的數據寫入Lcd_e控制寄存器;address信號為 ‘1’時,將write_data的數據寫入Lcd_rw控制寄存器;address信號為 ‘2’時,將write_data的數據寫入Lcd_rs控制寄存器;address信號為 ‘3’時,將write_data的數據寫入Lcd_data數據寄存器。從而實現對LCD的顯示控制。
3)VerilogHDL實現 利用Altera公司提供的Component Editor工具可以設計符合時序要求的外設接口,并且可以將用戶開發驅動程序與NiosⅡHAL(硬件抽象層)系統庫集成在一起,形成NiosⅡ 的接口組件,在系統生成的時候,對外設進行初始化設置。在建立新工程時,只需將接口組件添加到系統即可,這樣對組件的訪問變得輕松,并使得代碼可重復利用。LCD組件的代碼如下:


NiosⅡHAL系統庫是一個輕量級實時環境,提供一個組件驅動接口,使得程序與底層硬件通信。HAL API(應用程序接口)與ANSI C標準庫集成在一起,允許用戶通過庫函數訪問設備和文件,例如printf()、fopen()和fwrite()等,這樣其他開發者無需知道底層硬件結構就可以對組件進行操作[4]。以下是對LCD寄存器的讀寫操作函數和功能函數的接口程序設計。

構建SOPC系統是硬件開發的重點部分,需要添加7個模塊,分別是NiosⅡ中央處理器、JTAG UART串行通信接口、SDRAM存儲器、PIO口按鍵、設計的LCD2864組件、RAM片上存儲器和PIO數據交換模塊 (見 圖1(a))。建好SOPC系統后再通過添加輸入、輸出管腳,選擇對應的鎖相環PLL模塊并與SOPC系統連接,分配管腳等步驟 (見圖1(b))。
軟件設計是在硬件系統搭建完畢的基礎上在NiosⅡIDE軟件中完成的,主要采用C語言進行編程設計,并在工程中加入驅動函數進行驗證。在系統的硬件開發和軟件開發完成后,將配置文件和編譯好的程序下載到以EP3C16Q240FPGA芯片為核心的開發板進行測試,圖片、字符和圖形的顯示效果圖如圖2所示。
在QuartusⅡ和NiosⅡ開發環境下,完成了基于SOPC技術的液晶顯示屏的圖形與字符顯示的軟硬件協同設計。該設計組件可移植性好,可以根據需要改變點陣LCD顯示模塊的顯示內容。SOPC技術的靈活性使設計修改和產品升級變得簡單,同時也提高了電子系統的靈活性和通用性。

圖1 SOPC測試系統設計

圖2 測試效果圖
[1]楊軍 .基于FPGA的SOPC實踐教程 [M].北京:科學出版社,2011.
[2]劉敏,戴曙光,穆平安 .采用SOPC IP核技術實現液晶屏顯示 [J].液晶與顯示,2011,26(5):665-672.
[3]高楓,玉松 .基于Nios自定制Avalon設備的設計與實現 [J].中國測試技術,2007(7):105-108.
[4]蔡偉綱 .NiosⅡ軟件架構解析 [M].西安:電子科技大學出版社,2007.