鄭恭明,沈媛媛,陳永軍 (長(zhǎng)江大學(xué)電子信息學(xué)院,湖北 荊州434023)
12864液晶模塊的顯示分辨率為128×64,其接口靈活、指令簡(jiǎn)單、操作方便,既可顯示8×4行16×16點(diǎn)陣漢字又可完成圖形顯示,構(gòu)成全中文的人機(jī)交互圖形界面,因而被廣泛應(yīng)用。可編程片上系統(tǒng)SOPC (System on a Programmable Chip)[1]是以Altera推出的第二代軟核 NiosⅡ處理器為核心的嵌入式系統(tǒng),包括硬件的配置、設(shè)計(jì)、仿真與軟件的設(shè)計(jì)、調(diào)試等。其開(kāi)發(fā)流程包括2個(gè)方面,即基于QuartusⅡ、SOPC Builder的硬件設(shè)計(jì)與基于NiosⅡIDE的軟件設(shè)計(jì)。在NiosⅡ系統(tǒng)的構(gòu)建過(guò)程中,SOPC Builder開(kāi)發(fā)環(huán)境集成了常用類型的設(shè)備模型,供開(kāi)發(fā)者調(diào)用。下面,筆者基于Avalon總線進(jìn)行LCD組件設(shè)計(jì)。
片上可編程 (SOPC)技術(shù)可以根據(jù)具體的點(diǎn)陣LCD顯示模塊設(shè)計(jì)對(duì)應(yīng)的驅(qū)動(dòng)程序,對(duì)不同類型的點(diǎn)陣LCD顯示模塊完成對(duì)應(yīng)的算法,提供相應(yīng)的時(shí)序信號(hào)和數(shù)據(jù)信號(hào)。此外,可以根據(jù)不同的微處理器設(shè)計(jì)出對(duì)應(yīng)的接口,適用于不同的操作,通過(guò)相關(guān)電路設(shè)計(jì)在一定程度上減輕微處理器的負(fù)擔(dān)。
SOPC Builder開(kāi)發(fā)工具允許用戶依據(jù)相應(yīng)規(guī)則擴(kuò)展其所需設(shè)備組件IP(Intellectual Property)核,完成系統(tǒng)的設(shè)計(jì)和開(kāi)發(fā),開(kāi)發(fā)者按照Avalon總線規(guī)范將設(shè)備驅(qū)動(dòng)程序集成到SOPC Builder的硬件抽象層 (HAL)中,在SOPC Builder環(huán)境下加載使用,從而方便用戶開(kāi)發(fā)一個(gè)自定制的片上系統(tǒng)[2-3]。
設(shè)計(jì)時(shí)采用自頂向下的設(shè)計(jì)和自底向上的實(shí)現(xiàn)思想,將其分為3個(gè)功能模塊:接口模塊 (avalon interface)作為頂層模塊,定義總線接口信號(hào);寄存器文件模塊 (register file)完成IP核與外部模塊進(jìn)行通信,提供訪問(wèn)與控制元件的邏輯界面;任務(wù)邏輯模塊 (task logic)實(shí)現(xiàn)元件的硬件功能[4]。從最底層的模塊開(kāi)始編程實(shí)現(xiàn),只要保證下層模塊的正確性,上層模塊的正確性也就容易得到保證。
1)接口模塊 接口模塊作為頂層模塊,為寄存器文件模塊提供了一個(gè)標(biāo)準(zhǔn)的Avalon前端。它遵循Avalon總線的規(guī)范,實(shí)現(xiàn)對(duì)LCD IP核寄存器的訪問(wèn),并支持任務(wù)邏輯的傳輸類型[3]??偩€接口主要完成從NiosⅡ處理器接收指令和數(shù)據(jù),實(shí)現(xiàn)對(duì)IP核的復(fù)位、片選、尋址及內(nèi)部寄存器進(jìn)行讀寫等操作。LCD接口信號(hào)如表1所示。
2)寄存器文件模塊 寄存器文件模塊提供了IP核與外界交換信息的途徑,依據(jù)寄存器文件,可以通過(guò)Avalon接口采用“基地址+地址偏移量”的方式來(lái)訪問(wèn)IP核內(nèi)部的各個(gè)寄存器。LCD IP核內(nèi)部寄存器如表2所示。
表1 LCD接口信號(hào)
表2 LCD IP核內(nèi)部寄存器
在HDL文件中,如果reset_n、chipselect、write均等于 ‘1’,且address信號(hào)為‘0’時(shí),將write_data的數(shù)據(jù)寫入Lcd_e控制寄存器;address信號(hào)為 ‘1’時(shí),將write_data的數(shù)據(jù)寫入Lcd_rw控制寄存器;address信號(hào)為 ‘2’時(shí),將write_data的數(shù)據(jù)寫入Lcd_rs控制寄存器;address信號(hào)為 ‘3’時(shí),將write_data的數(shù)據(jù)寫入Lcd_data數(shù)據(jù)寄存器。從而實(shí)現(xiàn)對(duì)LCD的顯示控制。
3)VerilogHDL實(shí)現(xiàn) 利用Altera公司提供的Component Editor工具可以設(shè)計(jì)符合時(shí)序要求的外設(shè)接口,并且可以將用戶開(kāi)發(fā)驅(qū)動(dòng)程序與NiosⅡHAL(硬件抽象層)系統(tǒng)庫(kù)集成在一起,形成NiosⅡ 的接口組件,在系統(tǒng)生成的時(shí)候,對(duì)外設(shè)進(jìn)行初始化設(shè)置。在建立新工程時(shí),只需將接口組件添加到系統(tǒng)即可,這樣對(duì)組件的訪問(wèn)變得輕松,并使得代碼可重復(fù)利用。LCD組件的代碼如下:
NiosⅡHAL系統(tǒng)庫(kù)是一個(gè)輕量級(jí)實(shí)時(shí)環(huán)境,提供一個(gè)組件驅(qū)動(dòng)接口,使得程序與底層硬件通信。HAL API(應(yīng)用程序接口)與ANSI C標(biāo)準(zhǔn)庫(kù)集成在一起,允許用戶通過(guò)庫(kù)函數(shù)訪問(wèn)設(shè)備和文件,例如printf()、fopen()和fwrite()等,這樣其他開(kāi)發(fā)者無(wú)需知道底層硬件結(jié)構(gòu)就可以對(duì)組件進(jìn)行操作[4]。以下是對(duì)LCD寄存器的讀寫操作函數(shù)和功能函數(shù)的接口程序設(shè)計(jì)。
構(gòu)建SOPC系統(tǒng)是硬件開(kāi)發(fā)的重點(diǎn)部分,需要添加7個(gè)模塊,分別是NiosⅡ中央處理器、JTAG UART串行通信接口、SDRAM存儲(chǔ)器、PIO口按鍵、設(shè)計(jì)的LCD2864組件、RAM片上存儲(chǔ)器和PIO數(shù)據(jù)交換模塊 (見(jiàn) 圖1(a))。建好SOPC系統(tǒng)后再通過(guò)添加輸入、輸出管腳,選擇對(duì)應(yīng)的鎖相環(huán)PLL模塊并與SOPC系統(tǒng)連接,分配管腳等步驟 (見(jiàn)圖1(b))。
軟件設(shè)計(jì)是在硬件系統(tǒng)搭建完畢的基礎(chǔ)上在NiosⅡIDE軟件中完成的,主要采用C語(yǔ)言進(jìn)行編程設(shè)計(jì),并在工程中加入驅(qū)動(dòng)函數(shù)進(jìn)行驗(yàn)證。在系統(tǒng)的硬件開(kāi)發(fā)和軟件開(kāi)發(fā)完成后,將配置文件和編譯好的程序下載到以EP3C16Q240FPGA芯片為核心的開(kāi)發(fā)板進(jìn)行測(cè)試,圖片、字符和圖形的顯示效果圖如圖2所示。
在QuartusⅡ和NiosⅡ開(kāi)發(fā)環(huán)境下,完成了基于SOPC技術(shù)的液晶顯示屏的圖形與字符顯示的軟硬件協(xié)同設(shè)計(jì)。該設(shè)計(jì)組件可移植性好,可以根據(jù)需要改變點(diǎn)陣LCD顯示模塊的顯示內(nèi)容。SOPC技術(shù)的靈活性使設(shè)計(jì)修改和產(chǎn)品升級(jí)變得簡(jiǎn)單,同時(shí)也提高了電子系統(tǒng)的靈活性和通用性。
圖1 SOPC測(cè)試系統(tǒng)設(shè)計(jì)
圖2 測(cè)試效果圖
[1]楊軍 .基于FPGA的SOPC實(shí)踐教程 [M].北京:科學(xué)出版社,2011.
[2]劉敏,戴曙光,穆平安 .采用SOPC IP核技術(shù)實(shí)現(xiàn)液晶屏顯示 [J].液晶與顯示,2011,26(5):665-672.
[3]高楓,玉松 .基于Nios自定制Avalon設(shè)備的設(shè)計(jì)與實(shí)現(xiàn) [J].中國(guó)測(cè)試技術(shù),2007(7):105-108.
[4]蔡偉綱 .NiosⅡ軟件架構(gòu)解析 [M].西安:電子科技大學(xué)出版社,2007.