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