崔旭晶,馬平全
(沈陽(yáng)理工大學(xué) 信息科學(xué)與工程學(xué)院,遼寧 沈陽(yáng)110015)
可編程片上系統(tǒng)(SOPC)是一種特殊的嵌入式系統(tǒng),它設(shè)計(jì)方式靈活,具備軟硬件在系統(tǒng)可編程功能。SOPC在設(shè)計(jì)上以集成電路IP核為基礎(chǔ),而自行開(kāi)發(fā)的SOPC IP核,根據(jù)實(shí)際硬件資源和功能任務(wù)需求來(lái)定制顯示控制功能,可以增強(qiáng)系統(tǒng)可靠性和設(shè)計(jì)靈活性,降低了成本。目前針對(duì)LCD顯示屏設(shè)計(jì)的控制器IP核文章較多[1-2],但對(duì)于TFT-LCD觸控屏設(shè)計(jì)的控制器IP核文章較少[3],而且這類(lèi)文章中很少見(jiàn)對(duì)控制器各個(gè)模塊進(jìn)行仿真驗(yàn)證內(nèi)容。
文中提出一種針對(duì)TFT-LCD觸控屏控制器IP核的設(shè)計(jì)方法。該控制器具有Avalon總線接口,與其他標(biāo)準(zhǔn)IP核一起構(gòu)成以NiosⅡ?yàn)楹诵牡钠舷到y(tǒng)。針對(duì)本設(shè)計(jì)中觸控屏幀緩存讀操作的特點(diǎn),選擇以Avalon主端口接口的形式對(duì)模塊進(jìn)行開(kāi)發(fā),大大提高了處理器運(yùn)行效率,同時(shí)實(shí)現(xiàn)了觸控屏控制器IP核的參數(shù)化設(shè)計(jì),提高了控制器對(duì)于不同LCD屏的可復(fù)用性,最后通過(guò)對(duì)輸出緩沖FIFO的使用,解決了數(shù)據(jù)讀出時(shí)鐘與像素時(shí)鐘不同步問(wèn)題。
在SDRAM中開(kāi)辟一段儲(chǔ)存空間,用來(lái)存放屏幕圖像數(shù)據(jù),稱(chēng)之為幀緩存。通過(guò)設(shè)計(jì)適當(dāng)?shù)挠布壿媮?lái)建立幀緩存與屏幕圖像像素之間的一一對(duì)應(yīng)關(guān)系,并配合觸控屏顯示所必需的行、場(chǎng)時(shí)序信號(hào),將幀緩存中的數(shù)據(jù)不斷地輸送給觸控屏,完成最終的顯示刷新,其總體結(jié)構(gòu)如圖1所示。

圖1 觸控屏控制器總體結(jié)構(gòu)圖Fig.1 Whole structure block diagram of the touch panel controller
觸控屏控制器刷新周期開(kāi)始時(shí),主端口模塊根據(jù)幀緩存地址生成邏輯所產(chǎn)生的地址,完成主端口的讀操作,實(shí)現(xiàn)幀緩存中數(shù)據(jù)讀取,并將該數(shù)據(jù)輸送給輸出緩沖模塊。同時(shí),時(shí)序信號(hào)生成模塊依據(jù)觸控屏的時(shí)序規(guī)范生成行、場(chǎng)同步信號(hào),以及與像素同步的相關(guān)顯示點(diǎn)的橫、縱坐標(biāo)。觸控屏控制器數(shù)據(jù)顯示模塊不斷從緩存中讀取屏幕顯示數(shù)據(jù)。
本模塊掛載在Avalon總線上作為從設(shè)備使用,用來(lái)對(duì)所有的用戶(hù)邏輯進(jìn)行配置和控制,核心功能是寄存器操作,包括讀、寫(xiě)以及一些特殊指示與狀態(tài)信號(hào)的產(chǎn)生與轉(zhuǎn)換。通過(guò)從端口得到的數(shù)據(jù)分別賦值給相應(yīng)的寄存器,寄存器分為:FIFO地址寄存器、坐標(biāo)寄存器、一幀數(shù)據(jù)長(zhǎng)度寄存器。本模塊是最后在觸控屏上實(shí)現(xiàn)圖形顯示功能的接口電路。
LCD控制器的本功能是產(chǎn)生LCD時(shí)序信號(hào),將幀緩存中的圖像信息進(jìn)行有序輸出。由于圖形是一幀一幀地輸出到觸控屏上,而且顯示刷新過(guò)程是無(wú)限循環(huán)的,所以必須反復(fù)執(zhí)行幀緩存讀操作,因此本設(shè)計(jì)對(duì)上述讀操作進(jìn)行了硬件加速。可以不斷地從FIFO讀取圖像數(shù)據(jù),并且在行、場(chǎng)和觸控屏顯示有效時(shí)間段讀取圖像數(shù)據(jù),其它時(shí)間不讀圖像數(shù)據(jù),這樣減少了Avalon總線的使用,有利于圖像顯示并減少了總線負(fù)擔(dān)。分析讀幀緩存的操作可以發(fā)現(xiàn),該過(guò)程總是按照一定的順序,將存儲(chǔ)器中的數(shù)據(jù)讀出來(lái)進(jìn)行顯示輸出,規(guī)律性非常強(qiáng)。
本模塊主要完成地址及操作時(shí)序的產(chǎn)生、像素?cái)?shù)據(jù)緩存寫(xiě)操作控制、數(shù)據(jù)寬度的變換等功能。
本文的觸控屏引出信號(hào)線有5根:像素?cái)?shù)據(jù)信號(hào)、觸控屏?xí)r鐘信號(hào)、行同步信號(hào)、場(chǎng)同步信號(hào)、使能信號(hào)。為了實(shí)現(xiàn)觸控屏的正常顯示,必須對(duì)以上信號(hào)按照規(guī)范的時(shí)序進(jìn)行驅(qū)動(dòng),其中,行、場(chǎng)同步信號(hào)分別用來(lái)標(biāo)記屏幕上一行和一幀圖像的顯示時(shí)間,屏幕掃描線從上到下、從左到右依次掃描。在這個(gè)過(guò)程中,只需將幀緩存中的圖像像素?cái)?shù)據(jù)依次輸出,就可以實(shí)現(xiàn)屏幕圖像顯示。
DDR控制器隨著系統(tǒng)時(shí)鐘不斷往FIFO寫(xiě)數(shù)據(jù),當(dāng)一幀數(shù)據(jù)寫(xiě)滿(mǎn)時(shí)就不再進(jìn)行寫(xiě)狀態(tài),而等待LCD控制器進(jìn)行讀狀態(tài),顏色處理器從FIFO中獲取數(shù)據(jù),每次從FIFO中讀取32 bit數(shù)據(jù)并不斷送給LCD。
顏色處理器將每一個(gè)字節(jié)作為一個(gè)像素?cái)?shù)據(jù),并將一個(gè)字節(jié)的像素?cái)?shù)據(jù)轉(zhuǎn)換為3個(gè)字節(jié)的RGB數(shù)據(jù)。顏色處理器從同步FIFO緩沖器中讀取數(shù)據(jù),當(dāng)同步FIFO緩沖器寫(xiě)和讀相互不沖突時(shí),同步FIFO緩沖器產(chǎn)生讀請(qǐng)求,讓Avalon主端口向Avalon總線發(fā)起讀傳輸,從總線上獲取的數(shù)據(jù)將寫(xiě)入同步FIFO緩沖器,顏色處理器從FIFO中讀取像素值,并且傳給LCD顯示模塊。
1)Avalon從端口仿真與測(cè)試
由圖2可知,從端口一位地址對(duì)應(yīng)一位數(shù)據(jù)。當(dāng)寫(xiě)信號(hào)有效時(shí),將數(shù)據(jù)寫(xiě)入相應(yīng)的寄存器;當(dāng)讀信號(hào)有效時(shí),對(duì)應(yīng)寄存器地址將數(shù)據(jù)輸出。通過(guò)從端口數(shù)據(jù)寫(xiě)入來(lái)控制LCD模塊,控制LCD讀取圖像的首地址和讀取數(shù)據(jù)的長(zhǎng)度。

圖2 從端口仿真波形圖Fig.2 Function simulation waves of avalon slave port
2)Avalon主端口仿真與測(cè)試
Avalon模塊的作用是響應(yīng)Avalon主端口的讀請(qǐng)求,并將FIFO中的相應(yīng)數(shù)據(jù)輸出給Avalon主端口。通過(guò)讀信號(hào)和相應(yīng)地址主端口,不斷地從FIFO中讀取圖像數(shù)據(jù),并按照LCD時(shí)序?qū)D像數(shù)據(jù)輸送給LCD。圖3為Avalon主端口從顯存中讀取數(shù)據(jù)時(shí)的仿真波形圖。
3)LCD圖像顯示模塊測(cè)試
LCD顯示模塊是將從FIFO中讀出的圖像數(shù)據(jù)在觸控屏上顯示出來(lái)。從圖4可以看出,當(dāng) DEN有效時(shí),將像素?cái)?shù)據(jù)分為 R、G、B傳送給 LCD,HCount和 VCount為行計(jì)數(shù)器和場(chǎng)計(jì)數(shù)器,隨著LCD時(shí)鐘將各個(gè)像素點(diǎn)傳送給觸控屏。

圖3 主端口仿真波形圖Fig.3 Function simulation waves of avalon master port

圖4 LCD顯示的數(shù)據(jù)Fig.4 LCD_data display
基于SOPC觸控屏系統(tǒng)硬件設(shè)計(jì)如圖5所示,其中,SDRAM控制器實(shí)現(xiàn)處理器和SDRAM之間的數(shù)據(jù)存取,包括SDRAM存儲(chǔ)程序和字符、圖形以及顏色等數(shù)據(jù);JTAG UART實(shí)現(xiàn)PC和開(kāi)發(fā)板通信,主要用于調(diào)試,從鍵盤(pán)輸入相應(yīng)數(shù)據(jù),然后通過(guò)NiosⅡ軟件調(diào)試處理器,將數(shù)據(jù)通過(guò)LCD接口傳輸?shù)接|控屏上顯示出來(lái)[4]。

圖5 系統(tǒng)硬件結(jié)構(gòu)Fig.5 Hardware structure block diagram of the system
開(kāi)發(fā)板采用大連宇華公司的H3C40-V6開(kāi)發(fā)板。板上的FPGA芯片為EP3C40F484C6,觸控屏為4.3英寸彩色數(shù)字TFT-LCD觸控屏,分辨率800×484,可以顯示文字、彩圖等。板上自帶觸控屏顯示驅(qū)動(dòng)器。
根據(jù)所用到的外設(shè)和器件特性,在SOPC Builder中建立系統(tǒng)所要添加的外設(shè)模塊,主要包括:NiosⅡ、SDRAM控制器、JTAG UART、時(shí)鐘橋、三態(tài)橋、鎖相環(huán)和 PIO 等[5-6]。 設(shè)定好各個(gè)參數(shù),再添加LCD控制器,將LCD控制器的Avalon主端口接口連接到SDRAM上。
創(chuàng)建的包含NiosⅡ系統(tǒng)的QuartusⅡ頂層模塊,如圖6所示。
根據(jù)硬件設(shè)計(jì)編寫(xiě)軟件測(cè)試程序,以驗(yàn)證LCD觸控屏顯示。首先往顯存中寫(xiě)入預(yù)定的數(shù)據(jù)來(lái)初始化顯存,然后通過(guò)編程將相應(yīng)的參數(shù)寫(xiě)入LCD的各個(gè)控制寄存器,最后使能LCD控制器,以觀察顯示屏的顯示輸出是否正確。

圖6 頂層系統(tǒng)圖Fig.6 Top-level block diagram of the system
本設(shè)計(jì)采用C語(yǔ)言編程,讓觸控屏顯示彩條。在NiosⅡIDE軟件平臺(tái)上,創(chuàng)建C/C++工程,配置工程的系統(tǒng)屬性,然后編譯及運(yùn)行程序。在編譯成功后,自動(dòng)下載到硬件平臺(tái)上開(kāi)始運(yùn)行程序,這時(shí)在觸控屏上觀察到效果如圖7所示,圖中彩條顏色從上至下分別為紅、淺綠、藍(lán)、綠、粉、紅、紫、白、藍(lán)。

圖7 觸控屏彩色條紋顯示Fig.7 The colourful stripes showed on the touch panel
采用自定義添加觸控屏接口控制模塊來(lái)定制用戶(hù)邏輯外設(shè)。使用硬件描述語(yǔ)言建立控制器模塊并進(jìn)行仿真測(cè)試;采用參數(shù)化組件設(shè)計(jì),使其具有較強(qiáng)的通用性和兼容性。該控制器IP核設(shè)計(jì)有效利用FPGA資源,節(jié)約成本,增強(qiáng)系統(tǒng)可靠性和設(shè)計(jì)靈活性,并且可移植性強(qiáng)。
[1]劉敏,戴曙光,穆平安.采用SOPC IP核技術(shù)實(shí)現(xiàn)液晶屏顯示[J].液晶與顯示,2011,26(5):665-672.
LIU Min,DAI Shu-guang,MU Ping-an.Implementation of LCD display with IP-based SOPC technology[J].Chinese Journal of Liquid Crystals and Displays,2011,26(5):665-672.
[2]王剛,肖鐵軍,時(shí)建雷.基于SOPC的LCD控制器IP核設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(6):1404-1406.
WANG Gang,XIAO Tie-jun,SHIJian-lei.Design and implementation of the IP core used for a LCD controller based on SOPC[J].Computer Engineering and Design,2009,30(6):1404-1406.
[3]黃亮,楊景常.基于SOPC的TFT觸摸屏顯示系統(tǒng)設(shè)計(jì)[J].液晶與顯示,2009,24(5):718-722.
HUANG Liang,YANG Jing-chang.Design and display system for TFT touch-screen based on SOPC[J].Chinese Journal of Liquid Crystals and Displays,2009,24(5):718-722.
[4]王剛.基于FPGA的SOPC嵌入式系統(tǒng)設(shè)計(jì)與典型實(shí)例[M].北京:電子工業(yè)出版社,2009.
[5]AlteraCorporation.SOPCBuilderUserGuideVersion1.0[EB/OL].[2010-12-01].http//:www.altera.com.cn/literature/ug/ug_sopc_builder.pdf.
[6]Altera Corp.NiosⅡ Software Developer,s Handbook[EB/OL].(2007).http//:www.altera.com.cn.