基于NiosⅡ處理器的TFT-LCD圖形顯示設(shè)計(jì)
2.2 SoPC系統(tǒng)建立
基于FPGA的SoPC方案[3]的可配置性表現(xiàn)在搭建硬件平臺(tái)時(shí),用戶可以根據(jù)自己要實(shí)現(xiàn)的功能來(lái)靈活選擇所需要的存儲(chǔ)器以及外圍接口設(shè)備,而不用把所有提供的元件添加到系統(tǒng)中,這樣就可以因功能不同而有針對(duì)性地設(shè)計(jì)每一個(gè)系統(tǒng),從而也避免了添加無(wú)用元件占用FPGA資源而引起浪費(fèi)。例如,由系統(tǒng)的整體結(jié)構(gòu)可知,本系統(tǒng)所需要的基本組件有CPU、SDRAM控制器、JTAG-UART、SRAM、定時(shí)器以及用三態(tài)橋來(lái)連接的CPI-FLASH,因?yàn)樵?a class="contentlabel" href="http://cafeforensic.com/news/listbylabel/label/TFT-LCD">TFT-LCD已經(jīng)帶有控制器了,所以就不需要以自定義組件的形式在SoPC Builder中添加該元件的控制器。
本系統(tǒng)的構(gòu)建基于QuartusⅡ8.0版本的SoPC Builder工具,它使用CPU、存儲(chǔ)器接口和外圍設(shè)備(例如本設(shè)計(jì)中添加的掛接在三態(tài)橋上的接口gx_tft_lcd)生成系統(tǒng)模塊,并在Avalon總線模塊和所有系統(tǒng)組件上的從屬設(shè)備端口之間自動(dòng)生成互連邏輯。由于利用總線方式來(lái)訪問(wèn)已經(jīng)帶有控制器(TCB8000A)的TFT LCD,因此需要在Nios Ⅱ系統(tǒng)模塊中手動(dòng)添加一個(gè)三態(tài)接口gx_tft_lcd。因?yàn)槭侵粍?chuàng)建一個(gè)接口,因此不需要HDL文件和HAL文件,但是在信號(hào)設(shè)置時(shí),應(yīng)根據(jù)Avalon總線三態(tài)從端口寫時(shí)序圖和TCB8000A的控制接口來(lái)添加需要的信號(hào)。
設(shè)置生成新元件后就可以將新定制的gx_tft_lcd添加到Nios系統(tǒng)中,產(chǎn)生Nios II 系統(tǒng)模塊,并添加到工程中。保存編譯,通過(guò)之后可將編譯生成的sof文件下載到FPGA芯片,至此硬件方面的工作基本完成。
圖2所示為搭建本設(shè)計(jì)的硬件平臺(tái)中使用SoPC Builder工具來(lái)添加生成的系統(tǒng)模塊。
3 軟件設(shè)計(jì)
Nios II處理器的軟件程序設(shè)計(jì)使用HAL (Hardware Abstraction Layer)系統(tǒng)庫(kù)。HAI系統(tǒng)庫(kù)[4]為程序員提供了應(yīng)用程序與底層硬件交互的設(shè)備驅(qū)動(dòng)接口,簡(jiǎn)化了應(yīng)用程序的開(kāi)發(fā),同時(shí)還為應(yīng)用程序與底層硬件驅(qū)動(dòng)劃分了一條很清晰的分界線,從而大大提高了應(yīng)用程序的可復(fù)用性,使得應(yīng)用程序不受底層硬件變化的影響實(shí)現(xiàn)系統(tǒng)硬件和應(yīng)用程序之間的通信。HAI API[5](Application Program Interface)集成了ANSI C標(biāo)準(zhǔn)庫(kù),使上層程序像訪問(wèn)C函數(shù)庫(kù)一樣訪問(wèn)系統(tǒng)硬件和軟件。軟件設(shè)計(jì)不用考慮底層硬件實(shí)現(xiàn)的細(xì)節(jié)而直接編寫應(yīng)用程序。系統(tǒng)軟件結(jié)構(gòu)如圖3所示。
軟件系統(tǒng)主要分為兩部分:系統(tǒng)的初始化對(duì)LCD控制器的控制以及顯示數(shù)據(jù)的處理。
評(píng)論