SoPC Builder是Altera公司實現SoPC概念的一款工具軟件,使得用戶可以通過自定義邏輯的方法方便地開發基于NiosⅡ的SoPC系統。SoPC Builder集成在EDA工具QuartusⅡ中,提供NiosⅡ處理器及一些常用外設接口,用于組建一個在模塊級和組件級定義的系統,能夠自動生成片上總線和總線仲裁器等所需的邏輯。基于SoPC的設計在很大程度上依賴于利用集成電路IP(intellectual property)。集成電路IP是指經過預先設計、預先驗證、符合產業界普遍認同的設計規范和設計標準,具有相對獨立,并可以重復利用的電路模塊或子系統。
本文中提出一種基于SoPC的參數化TFT-LCD控制器IP核設計,用硬件描述語言實現控制器的邏輯功能,這種參數化的組件設計具有很強的通用性和兼容性。
1 通用冊LCD控制器總體設計
在嵌入式系統中,LCD控制器是非常重要的片上外圍設備,處理器通過LCD控制器來完成對顯示驅動器的控制,最終實現LCD屏的點亮操作。由于LCD顯示驅動器只是一個被動系統,還需要有控制電路提供驅動系統所必須的掃描時序信號和顯示數據。處理器通過對LCD控制器的操作,實現對LCD顯示掃描時序的設置和顯示數據的寫入,從而完成對LCD的顯示操作,其原理圖如圖1所示。
在SoPC Builder中以自定義組件的形式對LCD控制器進行設計,該控制器組件具有Avalon總線接口,可以很容易地將其與其他標準IP核一起構建以。NiosⅡCPU為核心的片上系統。NiosⅡ處理器通過Avalon從端口對LCD控制器的寄存器組進行配置,針對設計中幀緩存讀操作的特點,選擇以Avalon主端口接口的形式對幀緩存中的顯示數據進行主動讀取,并實現IP核參數化設計,提高控制器對于其他不同規格TFT液晶屏的復用性。該控制器還包含硬件光標功能,為添加外部鼠標設備接口提供了方便。LCD控制器的具體設計思路是在SDRAM中開辟一段存儲空間,用來存放屏幕圖像數據,稱之為幀緩存。通過設計適當的硬件邏輯來建立幀緩存與屏幕圖像像素之間一一對應的關系,并配合LCD顯示所需的行、場時序信號,將幀緩存中的數據不斷地輸給LCD,用以完成最終的顯示刷新。LCD控制器總體結構如圖2所示。
LCD控制器的具體工作流程為刷新周期開始時,主端口模塊根據幀緩存地址生成邏輯所產生的地址完成主端口的讀操作,實現幀緩存中數據的讀取,并將該數據輸送給輸出緩沖模塊。同時,時序信號生成模塊依據LCD屏的時序規范生成行、場同步信號,以及與像素數據同步的相關顯示點的橫、縱坐標。
設計的LCD控制器包含硬件光標顯示模塊,所以在進行最后屏幕顯示時,像素輸出控制邏輯有兩部分的數據來源,一部分為從幀緩存中讀取的屏幕數據;另一部分為硬件光標的顯示數據。最后,像素輸出控制邏輯根據從端口模塊中各個系統寄存器內的信息向LCD屏幕發送將要顯示的圖像數據。
2 硬件光標模塊設計
硬件光標模塊為LCD控制器設計帶鼠標光標的顯示功能,為系統開發中添加鼠標接口提供了方便。光標顯示的實現方式有硬件方式和軟件方式,軟件方式比較復雜,且占用大量的CPU處理時間;硬件方式用硬件邏輯資源來實現,處理速度快,不占用CPU時間。硬件方式的設計思路是為光標的圖像數據設置單獨的存儲空間(RAM)用以保存,當LCD屏幕需要對光標進行顯示時,由硬件邏輯負責在輸出光標和背景圖像之間做出選擇。而軟件部分只需簡單地修改光標坐標寄存器的值,就可以完成光標在屏幕上的顯示操作。采用這種方法,大大提高了系統性能。硬件光標RAM模塊是通過MegWizard Plug-In Manager編輯器生成的,最終生成的存儲光標圖像數據的雙口RAM如圖3所示。
3 LCD控制器組件設計
將LCD控制器按總體設計要求編寫相應的硬件描述語言代碼,其端口定義的程序主要有系統時鐘、LCD時鐘、Avalon從端口、Avalon主端口和LCD輸出的定義。程序的主要內容有各種寄存器和連線的定義,行場參數的設定,行掃描狀態機、場掃描狀態機、Avalon主端口讀控制邏輯狀態機、幀緩存地址生成邏輯、LCD有效顯示數據信號生成邏輯、硬件光標模塊和兩個例化模塊的調用等。最終生成的元件符號如圖4所示。

組件編輯器是SoPC Builder的一個重要組成部分,可以使用該工具將用戶定制邏輯封裝成組件,并在SoPC Builder環境中像其他標準組件一樣使用。在SoPC Builder環境下,啟動組件編輯器,按照組件編輯圖形用戶界面的提示,做相應的操作。主要有導入硬件HDL代碼LCD-INTERFACE,為硬件邏輯代碼中的信號指定Avalon信號類型、Avalon接口設計和設置添加組件的界面向導等,最后就生成了用戶自定義的組件
LCD_INTERFACE。它以IP核的形式存放在SoPCBuilder的組件庫中供設計使用,把液晶顯示控制器設計成Avalon總線的slave設備。由于該控制器是參數化的,可以很容易地修改TFT_LCD液晶的時序參數,具有很強的通用性。通過Terasic公司的TRDB_LTM彩色液晶顯示開發板進行設計驗證。TRDB_LTM采用Toppoly公司的TFT_LCD模塊TD043MTEAl,4.3英寸屏。時序參數中,橫向時序參數為:時鐘頻率(NCLK)33.2 MHz;橫向有效數據為800點;H_LINE=1 056;Hsync_Blank=216;Hsync_Front_Porch=40。縱向時序參數為:縱向有效數據為480點;V_LINE=525;Vsync_Blank=35;Vsync_Front_Porch=10。
按上面的時序參數在SoPC系統中配置TFT_LCD液晶IP核后,設置屏幕背景為白屏,并在上面用黑線畫一個矩形,顯示結果如圖5所示。如果將時序參數中的數據做如下調整,將橫向有效顯示數據設置為480點,縱向有效顯示數據設置為360點,做同上的驗證,顯示結果如圖6所示。由這兩個圖可見,該控制器具有很好的通用性。
4 結語
介紹一種通用TFT-LCD控制器的設計,用HDL語言對各模塊進行描述,包括內部控制器、Avalon總線主從接口、液晶時序數據輸出接口等的邏輯描述。最后在SoPC Builder工具里以自定義組件的形式添加到SoPC系統中,以IP核的形式存放在SoPC的組件庫中,供以后的系統開發使用。由于采用了參數化的組件設計思想,使得該IP核具有很強的通用性,大大簡化了底層編程的復雜度。經實驗證明,該設計方法具有較強的實用性和通用性。同時,該設計也為開發其他基于SoPC的Controller IP Core提供了一個范例。