基于SoPC的參數(shù)化TFT-LCD控制器IP核設(shè)計(jì)
SoPC Builder是Altera公司實(shí)現(xiàn)SoPC概念的一款工具軟件,使得用戶可以通過(guò)自定義邏輯的方法方便地開(kāi)發(fā)基于NiosⅡ的SoPC系統(tǒng)。SoPC Builder集成在EDA工具QuartusⅡ中,提供NiosⅡ處理器及一些常用外設(shè)接口,用于組建一個(gè)在模塊級(jí)和組件級(jí)定義的系統(tǒng),能夠自動(dòng)生成片上總線和總線仲裁器等所需的邏輯?;赟oPC的設(shè)計(jì)在很大程度上依賴于利用集成電路IP(intellectual property)。集成電路IP是指經(jīng)過(guò)預(yù)先設(shè)計(jì)、預(yù)先驗(yàn)證、符合產(chǎn)業(yè)界普遍認(rèn)同的設(shè)計(jì)規(guī)范和設(shè)計(jì)標(biāo)準(zhǔn),具有相對(duì)獨(dú)立,并可以重復(fù)利用的電路模塊或子系統(tǒng)。
本文中提出一種基于SoPC的參數(shù)化TFT-LCD控制器IP核設(shè)計(jì),用硬件描述語(yǔ)言實(shí)現(xiàn)控制器的邏輯功能,這種參數(shù)化的組件設(shè)計(jì)具有很強(qiáng)的通用性和兼容性。
1 通用冊(cè)LCD控制器總體設(shè)計(jì)
在嵌入式系統(tǒng)中,LCD控制器是非常重要的片上外圍設(shè)備,處理器通過(guò)LCD控制器來(lái)完成對(duì)顯示驅(qū)動(dòng)器的控制,最終實(shí)現(xiàn)LCD屏的點(diǎn)亮操作。由于LCD顯示驅(qū)動(dòng)器只是一個(gè)被動(dòng)系統(tǒng),還需要有控制電路提供驅(qū)動(dòng)系統(tǒng)所必須的掃描時(shí)序信號(hào)和顯示數(shù)據(jù)。處理器通過(guò)對(duì)LCD控制器的操作,實(shí)現(xiàn)對(duì)LCD顯示掃描時(shí)序的設(shè)置和顯示數(shù)據(jù)的寫(xiě)入,從而完成對(duì)LCD的顯示操作,其原理圖如圖1所示。
在SoPC Builder中以自定義組件的形式對(duì)LCD控制器進(jìn)行設(shè)計(jì),該控制器組件具有Avalon總線接口,可以很容易地將其與其他標(biāo)準(zhǔn)IP核一起構(gòu)建以。NiosⅡCPU為核心的片上系統(tǒng)。NiosⅡ處理器通過(guò)Avalon從端口對(duì)LCD控制器的寄存器組進(jìn)行配置,針對(duì)設(shè)計(jì)中幀緩存讀操作的特點(diǎn),選擇以Avalon主端口接口的形式對(duì)幀緩存中的顯示數(shù)據(jù)進(jìn)行主動(dòng)讀取,并實(shí)現(xiàn)IP核參數(shù)化設(shè)計(jì),提高控制器對(duì)于其他不同規(guī)格TFT液晶屏的復(fù)用性。該控制器還包含硬件光標(biāo)功能,為添加外部鼠標(biāo)設(shè)備接口提供了方便。LCD控制器的具體設(shè)計(jì)思路是在SDRAM中開(kāi)辟一段存儲(chǔ)空間,用來(lái)存放屏幕圖像數(shù)據(jù),稱之為幀緩存。通過(guò)設(shè)計(jì)適當(dāng)?shù)挠布壿媮?lái)建立幀緩存與屏幕圖像像素之間一一對(duì)應(yīng)的關(guān)系,并配合LCD顯示所需的行、場(chǎng)時(shí)序信號(hào),將幀緩存中的數(shù)據(jù)不斷地輸給LCD,用以完成最終的顯示刷新。LCD控制器總體結(jié)構(gòu)如圖2所示。
LCD控制器的具體工作流程為刷新周期開(kāi)始時(shí),主端口模塊根據(jù)幀緩存地址生成邏輯所產(chǎn)生的地址完成主端口的讀操作,實(shí)現(xiàn)幀緩存中數(shù)據(jù)的讀取,并將該數(shù)據(jù)輸送給輸出緩沖模塊。同時(shí),時(shí)序信號(hào)生成模塊依據(jù)LCD屏的時(shí)序規(guī)范生成行、場(chǎng)同步信號(hào),以及與像素?cái)?shù)據(jù)同步的相關(guān)顯示點(diǎn)的橫、縱坐標(biāo)。
設(shè)計(jì)的LCD控制器包含硬件光標(biāo)顯示模塊,所以在進(jìn)行最后屏幕顯示時(shí),像素輸出控制邏輯有兩部分的數(shù)據(jù)來(lái)源,一部分為從幀緩存中讀取的屏幕數(shù)據(jù);另一部分為硬件光標(biāo)的顯示數(shù)據(jù)。最后,像素輸出控制邏輯根據(jù)從端口模塊中各個(gè)系統(tǒng)寄存器內(nèi)的信息向LCD屏幕發(fā)送將要顯示的圖像數(shù)據(jù)。
2 硬件光標(biāo)模塊設(shè)計(jì)
硬件光標(biāo)模塊為L(zhǎng)CD控制器設(shè)計(jì)帶鼠標(biāo)光標(biāo)的顯示功能,為系統(tǒng)開(kāi)發(fā)中添加鼠標(biāo)接口提供了方便。光標(biāo)顯示的實(shí)現(xiàn)方式有硬件方式和軟件方式,軟件方式比較復(fù)雜,且占用大量的CPU處理時(shí)間;硬件方式用硬件邏輯資源來(lái)實(shí)現(xiàn),處理速度快,不占用CPU時(shí)間。硬件方式的設(shè)計(jì)思路是為光標(biāo)的圖像數(shù)據(jù)設(shè)置單獨(dú)的存儲(chǔ)空間(RAM)用以保存,當(dāng)LCD屏幕需要對(duì)光標(biāo)進(jìn)行顯示時(shí),由硬件邏輯負(fù)責(zé)在輸出光標(biāo)和背景圖像之間做出選擇。而軟件部分只需簡(jiǎn)單地修改光標(biāo)坐標(biāo)寄存器的值,就可以完成光標(biāo)在屏幕上的顯示操作。采用這種方法,大大提高了系統(tǒng)性能。硬件光標(biāo)RAM模塊是通過(guò)MegWizard Plug-In Manager編輯器生成的,最終生成的存儲(chǔ)光標(biāo)圖像數(shù)據(jù)的雙口RAM如圖3所示。
3 LCD控制器組件設(shè)計(jì)
將LCD控制器按總體設(shè)計(jì)要求編寫(xiě)相應(yīng)的硬件描述語(yǔ)言代碼,其端口定義的程序主要有系統(tǒng)時(shí)鐘、LCD時(shí)鐘、Avalon從端口、Avalon主端口和LCD輸出的定義。程序的主要內(nèi)容有各種寄存器和連線的定義,行場(chǎng)參數(shù)的設(shè)定,行掃描狀態(tài)機(jī)、場(chǎng)掃描狀態(tài)機(jī)、Avalon主端口讀控制邏輯狀態(tài)機(jī)、幀緩存地址生成邏輯、LCD有效顯示數(shù)據(jù)信號(hào)生成邏輯、硬件光標(biāo)模塊和兩個(gè)例化模塊的調(diào)用等。最終生成的元件符號(hào)如圖4所示。
組件編輯器是SoPC Builder的一個(gè)重要組成部分,可以使用該工具將用戶定制邏輯封裝成組件,并在SoPC Builder環(huán)境中像其他標(biāo)準(zhǔn)組件一樣使用。在SoPC Builder環(huán)境下,啟動(dòng)組件編輯器,按照組件編輯圖形用戶界面的提示,做相應(yīng)的操作。主要有導(dǎo)入硬件HDL代碼LCD-INTERFACE,為硬件邏輯代碼中的信號(hào)指定Avalon信號(hào)類型、Avalon接口設(shè)計(jì)和設(shè)置添加組件的界面向?qū)У?,最后就生成了用戶自定義的組件
LCD_INTERFACE。它以IP核的形式存放在SoPCBuilder的組件庫(kù)中供設(shè)計(jì)使用,把液晶顯示控制器設(shè)計(jì)成Avalon總線的slave設(shè)備。由于該控制器是參數(shù)化的,可以很容易地修改TFT_LCD液晶的時(shí)序參數(shù),具有很強(qiáng)的通用性。通過(guò)Terasic公司的TRDB_LTM彩色液晶顯示開(kāi)發(fā)板進(jìn)行設(shè)計(jì)驗(yàn)證。TRDB_LTM采用Toppoly公司的TFT_LCD模塊TD043MTEAl,4.3英寸屏。時(shí)序參數(shù)中,橫向時(shí)序參數(shù)為:時(shí)鐘頻率(NCLK)33.2 MHz;橫向有效數(shù)據(jù)為800點(diǎn);H_LINE=1 056;Hsync_Blank=216;Hsync_Front_Porch=40??v向時(shí)序參數(shù)為:縱向有效數(shù)據(jù)為480點(diǎn);V_LINE=525;Vsync_Blank=35;Vsync_Front_Porch=10。
按上面的時(shí)序參數(shù)在SoPC系統(tǒng)中配置TFT_LCD液晶IP核后,設(shè)置屏幕背景為白屏,并在上面用黑線畫(huà)一個(gè)矩形,顯示結(jié)果如圖5所示。如果將時(shí)序參數(shù)中的數(shù)據(jù)做如下調(diào)整,將橫向有效顯示數(shù)據(jù)設(shè)置為480點(diǎn),縱向有效顯示數(shù)據(jù)設(shè)置為360點(diǎn),做同上的驗(yàn)證,顯示結(jié)果如圖6所示。由這兩個(gè)圖可見(jiàn),該控制器具有很好的通用性。
4 結(jié)語(yǔ)
介紹一種通用TFT-LCD控制器的設(shè)計(jì),用HDL語(yǔ)言對(duì)各模塊進(jìn)行描述,包括內(nèi)部控制器、Avalon總線主從接口、液晶時(shí)序數(shù)據(jù)輸出接口等的邏輯描述。最后在SoPC Builder工具里以自定義組件的形式添加到SoPC系統(tǒng)中,以IP核的形式存放在SoPC的組件庫(kù)中,供以后的系統(tǒng)開(kāi)發(fā)使用。由于采用了參數(shù)化的組件設(shè)計(jì)思想,使得該IP核具有很強(qiáng)的通用性,大大簡(jiǎn)化了底層編程的復(fù)雜度。經(jīng)實(shí)驗(yàn)證明,該設(shè)計(jì)方法具有較強(qiáng)的實(shí)用性和通用性。同時(shí),該設(shè)計(jì)也為開(kāi)發(fā)其他基于SoPC的Controller IP Core提供了一個(gè)范例。