廖永清 ,丁旭昌 ,付建國(guó),陳舜兒 ,劉偉平
(1.暨南大學(xué) 電子工程系,廣東 廣州 510632;2.光電信息與傳感技術(shù)廣東普通高校重點(diǎn)實(shí)驗(yàn)室(暨南大學(xué)),廣東 廣州 510632)
隨著電子技術(shù)和集成工藝水平的不斷提高,微處理器的運(yùn)算與控制能力也有了顯著的提升,由于越來(lái)越多的電子產(chǎn)品對(duì)功耗有著苛刻的要求,導(dǎo)致目前微處理器的帶負(fù)載能力比較弱,通常輸出電壓為mV級(jí),這也制約了它們?cè)陲@示應(yīng)用領(lǐng)域的發(fā)展。目前,在數(shù)據(jù)采集和顯示控制領(lǐng)域,F(xiàn)PGA正好彌補(bǔ)了微處理器帶負(fù)載能力弱的缺點(diǎn),且它在VGA(Video Graphics Array)信號(hào)處理中也有著大量的應(yīng)用[1]。
VGA是由IBM公司制訂的一套視頻傳輸標(biāo)準(zhǔn),它在顯示領(lǐng)域中得到了廣泛的應(yīng)用[2-3]。目前國(guó)內(nèi)外一般采用VGA顯示卡來(lái)實(shí)現(xiàn)VGA圖像的動(dòng)態(tài)顯示和控制,但顯示卡價(jià)格一般比較高,且增加了系統(tǒng)的體積與復(fù)雜度,給系統(tǒng)今后的維護(hù)和升級(jí)帶來(lái)諸多不便。針對(duì)這種情況,筆者研究并設(shè)計(jì)了一種基于FPGA的VGA圖像動(dòng)態(tài)顯示控制器,該控制器采用Verilog HDL實(shí)現(xiàn)相關(guān)的控制功能,這大大提升了系統(tǒng)的實(shí)時(shí)性和可靠性,在大規(guī)模嵌入式系統(tǒng)設(shè)計(jì)中具有較高的工程價(jià)值和很好的應(yīng)用前景。
VGA圖像動(dòng)態(tài)顯示控制器主要由基于Spartan-3系列XC3S200-4PQ208的FPGA、時(shí)鐘電路、系統(tǒng)電源、接口電路、6×1矩陣式鍵盤和VGA接口的顯示器,其系統(tǒng)電路框圖如圖1所示。其中FPGA是整個(gè)系統(tǒng)的核心部分,通過(guò)對(duì)其編程可輸出紅、綠、藍(lán)三基色信號(hào)和HS(Horizon Synchronizing)、VS(Vertical Synchronizing)行場(chǎng)掃描同步信號(hào)。當(dāng)FPGA接收時(shí)序信號(hào)后,內(nèi)部的顯示控制模塊根據(jù)控制信號(hào)選擇相應(yīng)的圖像信息模塊并輸出圖像信號(hào),與行場(chǎng)掃描時(shí)序信號(hào)一起通過(guò)VGA接口電路送入顯示器,在VGA顯示器上便可看到相應(yīng)的動(dòng)態(tài)圖像。
VGA圖像動(dòng)態(tài)顯示控制器的軟件實(shí)現(xiàn)采取的是自頂向下的方式,由系統(tǒng)整體設(shè)計(jì)方案規(guī)劃相應(yīng)的軟件框圖,將其劃分為分頻模塊、時(shí)序信號(hào)產(chǎn)生模塊、圖像信息模塊和顯示控制模塊。再運(yùn)用Verilog HDL設(shè)計(jì)各個(gè)子模塊,同時(shí)對(duì)各個(gè)子模塊分別進(jìn)行仿真與調(diào)試,最后將所有調(diào)試成功的子模塊集成為一個(gè)整體的系統(tǒng),程序設(shè)計(jì)模塊框圖如圖2所示。要實(shí)現(xiàn)VGA圖像動(dòng)態(tài)顯示在軟件實(shí)現(xiàn)上有兩個(gè)關(guān)鍵點(diǎn):第一是要實(shí)現(xiàn)VGA的時(shí)序,使得VGA信號(hào)嚴(yán)格遵守協(xié)議要求的行、場(chǎng)同步時(shí)序;第二是實(shí)現(xiàn)圖像控制[4],本設(shè)計(jì)的難點(diǎn)是實(shí)現(xiàn)圖像信號(hào)的動(dòng)態(tài)顯示控制。以下介紹程序各個(gè)子模塊的設(shè)計(jì)與實(shí)現(xiàn)。
系統(tǒng)為FPGA提供的主振頻率是50 MHz,本設(shè)計(jì)要實(shí)現(xiàn)VGA顯示模式是640×480@60 Hz,按照VGA協(xié)議傳輸標(biāo)準(zhǔn)這種顯示模式的時(shí)鐘頻率要求為25.175 MHz,所以在分頻模塊中首先要對(duì)時(shí)鐘信號(hào)進(jìn)行2分頻,在誤差尤許的范圍內(nèi)分頻后的時(shí)鐘頻率可滿足該顯示模式下的時(shí)序要求。
要實(shí)現(xiàn)VGA的顯示與控制關(guān)鍵是要實(shí)現(xiàn)它的時(shí)序關(guān)系,即產(chǎn)生的行同步信號(hào)和場(chǎng)同步信號(hào)符合VGA傳輸標(biāo)準(zhǔn)協(xié)議的要求,該模塊的作用就是把系統(tǒng)時(shí)鐘分配到各個(gè)模塊并產(chǎn)生相應(yīng)的同步信號(hào)。要形成一幅完整流暢的圖像,首先要確保行、場(chǎng)同步,因?yàn)槎叩耐骄痛_定了一行和一幀圖像的開始和結(jié)束時(shí)間[5]。VGA的協(xié)議傳輸標(biāo)準(zhǔn)給出的參考顯示時(shí)序如圖3所示,由圖可知,雖然行頻和場(chǎng)頻在數(shù)值上相差比較大,但二者在時(shí)序上是一樣的。
圖像信息模塊包括傳輸圖像數(shù)據(jù)和圖片在顯示屏幕上的定位兩個(gè)部分,利用行場(chǎng)同步信號(hào)的計(jì)數(shù)器可以對(duì)圖片進(jìn)行定位,在圖像顯示的有效區(qū)域內(nèi)按照顯示模式和圖片的大小確定行和列的起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo)。對(duì)于圖片數(shù)據(jù)的傳輸,這通常取決于字庫(kù)提取軟件的相關(guān)設(shè)置以及圖片的大小與形狀,本文采用的是PC?toLCD2002字模軟件,取模方式選擇列行式,取模走向選擇逆向,字模軟件的相應(yīng)配置就決定了圖片的一個(gè)像素點(diǎn)就對(duì)應(yīng)著字節(jié)的數(shù)據(jù)。這里特別注意的是在行同步信號(hào)到達(dá)圖片定位的位置時(shí),必須將相應(yīng)的數(shù)據(jù)信息全部送出,否則將會(huì)出現(xiàn)畫面不流暢或失真等。
VGA圖像動(dòng)態(tài)顯示是基于動(dòng)畫幀的思想,當(dāng)場(chǎng)計(jì)數(shù)器每計(jì)到524時(shí),屏計(jì)數(shù)器k加1,用屏計(jì)數(shù)器控制畫面顯示的先后順序,在快速掃描時(shí),要實(shí)現(xiàn)流暢的動(dòng)畫顯示,每秒至少應(yīng)該顯示24幅圖片。在實(shí)際應(yīng)用過(guò)程中,k的值不能是無(wú)限大的,應(yīng)該根據(jù)設(shè)計(jì)中定義的寄存器的大小來(lái)鎖定某一個(gè)值,否則之前出現(xiàn)過(guò)的圖片又會(huì)重現(xiàn)。本設(shè)計(jì)實(shí)現(xiàn)屏計(jì)數(shù)器的代碼為:
動(dòng)態(tài)顯示的過(guò)程當(dāng)中,顯示流暢的圖像的同時(shí)也應(yīng)該避免不同圖像的重疊現(xiàn)象,因此要能看到不同圖像錯(cuò)落有致地顯示,對(duì)要顯示的每一幅圖像都應(yīng)該定義其動(dòng)作,這也是設(shè)計(jì)的一個(gè)難點(diǎn),以下是本設(shè)計(jì)實(shí)現(xiàn)其中一幅圖像動(dòng)作的部分代碼。當(dāng)屏計(jì)數(shù)器k<100時(shí),圖像的位置不變;當(dāng)k>100時(shí),圖像的位置隨著k的增加開始發(fā)生變化,在屏幕上圖像表現(xiàn)為一個(gè)下落的過(guò)程。具體代碼為:
時(shí)序信號(hào)產(chǎn)生模塊是本設(shè)計(jì)的關(guān)鍵,本文對(duì)其進(jìn)行了嚴(yán)格的仿真和驗(yàn)證。本設(shè)計(jì)利用Xilinx ISE 7.1i ISE仿真工具Simulator,通過(guò)Verilog HDL語(yǔ)言編寫Test?bench,最后的仿真結(jié)果如圖4和圖5所示。
利用Simulator ISE仿真工具可以實(shí)時(shí)監(jiān)測(cè)到行時(shí)序和幀時(shí)序的實(shí)時(shí)波形,從仿真圖可以看到,顯示模式為640×480@60 Hz時(shí),每一幀的時(shí)間是16.6 ms,每一行的時(shí)間是31.66 μs,仿真結(jié)果完全符合該顯示模式下VGA接口的協(xié)議。
在Xinlinx ISE 7.1i中建立項(xiàng)目后,輸入各模塊的Verilog HDL程序代碼,并進(jìn)行邏輯綜合、布局布線、時(shí)序分析后生成編程文件,再將編程文件下載到FPGA中并通過(guò)VGA接口與顯示器相連。通過(guò)聯(lián)調(diào)可以看到,顯示器上能錯(cuò)落有致地動(dòng)態(tài)顯示圖片,并在OSD選單中選擇模式,此時(shí)顯示器上顯示了640×480@60 Hz的顯示模式,顯示器上顯示的部分畫面如圖6和圖7所示,達(dá)到了設(shè)計(jì)的預(yù)期目標(biāo),驗(yàn)證了設(shè)計(jì)的準(zhǔn)確性。
本文設(shè)計(jì)的VGA圖像動(dòng)態(tài)顯示控制器是基于FPGA上實(shí)現(xiàn)的,采用Verilog HDL語(yǔ)言在Xilinx ISE 7.1i軟件環(huán)境下完成軟件設(shè)計(jì),并對(duì)整個(gè)系統(tǒng)都進(jìn)行了調(diào)試,最終在硬件平臺(tái)上實(shí)現(xiàn)了動(dòng)態(tài)顯示圖像。與傳統(tǒng)實(shí)現(xiàn)方案相比,本系統(tǒng)具有以下優(yōu)點(diǎn):1)系統(tǒng)采用了Verilog HDL語(yǔ)言編寫,這樣可以使軟件程序簡(jiǎn)潔且執(zhí)行效率高,減少了開發(fā)工作量、降低了設(shè)計(jì)難度;2)系統(tǒng)是基于FPGA上實(shí)現(xiàn)的,增加了系統(tǒng)驅(qū)動(dòng)能力、可靠性和設(shè)計(jì)靈活性,對(duì)嵌入式系統(tǒng)的實(shí)現(xiàn)具有較高的工程價(jià)值;3)系統(tǒng)采用FPGA芯片作為控制核心,可以在不使用VGA顯示卡和計(jì)算機(jī)的情況下實(shí)現(xiàn)VGA圖像的動(dòng)態(tài)顯示和控制,大大減少了電路板的尺寸,節(jié)約了成本并擴(kuò)展了應(yīng)用范圍。
[1]劉威,石彥杰,高博.基于FPGA的VGA顯示模式識(shí)別[J].計(jì)算機(jī)工程與科學(xué),2008,30(4):152-155.
[2]王恒心,熊慶國(guó).基于FPGA/CPLD的嵌入式VGA顯示系統(tǒng)[J].微計(jì)算機(jī)信息,2008,24(9):146-148.
[3]陳曉輝,劉峰.基于TMS320DM355的VGA信號(hào)實(shí)時(shí)監(jiān)控系統(tǒng)[J].電視技術(shù),2010,34(3):25-27.
[4]謝昭莉,蔣濤,劉亮,等.基于ARM嵌入式系統(tǒng)的VGA接口的研究與設(shè)計(jì)[J].液晶與顯示,2007,22(6):761-764.
[5]段磊.基于FPGA的VGA顯示系統(tǒng)[J].世界電子元器件,2007(9):102-103.