鄭爭兵
(陜西理工學(xué)院 物理與電信工程學(xué)院,陜西 漢中723000)
視頻圖形陣列(Video Graphic Array,VGA)是一種視頻顯示標(biāo)準(zhǔn),具有分辨率高,反應(yīng)速度快,顯示彩色顏色等優(yōu)點,被廣泛應(yīng)用于各類顯示終端。為了較好地實現(xiàn)終端的圖形顯示,通常采用專門的顯卡完成視頻信號的采集、緩存和顯示。這種系統(tǒng)的硬件較為復(fù)雜,集成度低,而且成本較高,很難滿足嵌入式、便攜式智能儀表的應(yīng)用要求。隨著高性能的現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)的廣泛應(yīng)用,F(xiàn)PGA 擁有豐富的硬件資源,較強(qiáng)的可重配置能力,可以實現(xiàn)自主知識產(chǎn)權(quán)核,減小系統(tǒng)硬件規(guī)模,已經(jīng)成為嵌入式系統(tǒng)設(shè)計的主流硬件平臺之一[1-3]。因此,提出一種基于FPGA 的VGA 波形顯示系統(tǒng),能夠充分利用FPGA 構(gòu)建的VGA 顯示控制電路,實現(xiàn)標(biāo)準(zhǔn)時序下的液晶顯示控制和驅(qū)動功能,完成信號波形的快速顯示。該系統(tǒng)設(shè)計的VGA 顯 示 控 制 電 路IP 核[4-5],具 有 較 好 的重構(gòu)性,在適當(dāng)修改代碼的情況下,可移植到其他FPGA 嵌入式系統(tǒng)作為顯示控制器模塊調(diào)用,實現(xiàn)高速存儲設(shè)備后續(xù)顯示終端高分辨率顯示。
基于FPGA 的波形顯示系統(tǒng)整體結(jié)構(gòu)框圖如圖1 所示。系統(tǒng)主要由信號采集A/D 芯片TLC5540、FPGA 模塊和VGA 顯示器組成。FPGA 模塊作為系統(tǒng)核心部分,主要完成數(shù)據(jù)讀取、處理及邏輯控制,數(shù)據(jù)傳輸和數(shù)據(jù)的顯示控制功能,該模塊包含PLL 模塊、A/D 控制模塊、雙口RAM 和VGA 顯示控制模塊。A/D 控制模塊為A/D 芯片提供時鐘信號ad_clk、使能信號ad_noe并為A/D 轉(zhuǎn)換后的數(shù)據(jù)ad_da提供緩存。雙口RAM 實現(xiàn)采樣高速數(shù)據(jù)的緩存[6]。VGA 顯示控制模塊負(fù)責(zé)緩存數(shù)據(jù)的讀取,數(shù)據(jù)的轉(zhuǎn)換并產(chǎn)生適合VGA 顏色顯示的紅、綠、藍(lán)三基色信號RGB_da、行同步信號hsync 和場同步信號vsync,使VGA 顯示器在VGA 工業(yè)標(biāo)準(zhǔn)時序驅(qū)動下正確顯示波形。
標(biāo)準(zhǔn)的VGA 接口由R、G、B 三色模擬信號線和行、場同步數(shù)字信號線構(gòu)成15 針D 型接口[6],為了實現(xiàn)FPGA 與VGA 接口的正確連接和256種顏色的顯示,具體的硬件電路如圖2所示。由FPGA 芯片所產(chǎn)生的8位顏色信號由D1至D8端口送入SN74HC573AN 鎖存器后,經(jīng)鎖存后由Q1 至Q8 端輸出。Q1 至Q3 路數(shù)據(jù)經(jīng)512Ω、1kΩ、2kΩ 電阻網(wǎng)絡(luò)合成VGA_RED 信號,Q4至Q6路數(shù)據(jù)經(jīng)512Ω、1kΩ、2kΩ 電阻網(wǎng)絡(luò)合成VGA_GREEN 信號,Q7至Q8路數(shù)據(jù)經(jīng)512Ω、1kΩ 電阻網(wǎng)絡(luò)合成VGA_BLUE 信號。FPGA 芯片所產(chǎn)生的行同步HSYNC、場同步VSYNC時序驅(qū)動信號經(jīng)過限流電阻連接到VGA 接口的行、場同步引腳。

圖1 系統(tǒng)硬件結(jié)構(gòu)框圖Fig.1 Hardware block diagram of the system

圖2 FPGA 與VGA 接口連接電路Fig.2 Connection circuit between FPGA and VGA interface
VGA 顯示器主要是通過逐行掃描方式實現(xiàn)圖形信號的顯示[7-8]。為了便于實現(xiàn),F(xiàn)PGA 內(nèi)部主時鐘為50 MHz,通過鎖相環(huán)PLL 得到25 MHz VGA 接口時鐘信號。利用行計數(shù)器和場計數(shù)器實現(xiàn)行、場時序驅(qū)動。具體的行掃描信號和場掃描信號的時序關(guān)系如圖3所示。

圖3 行信號與場信號時序關(guān)系圖Fig.3 Sequence diagram of level signal and vertical signal
本設(shè)計中的顯示模式為640×480×60 Hz,每個像素點的輸出頻率為25.175 MHz,行頻率為31 469 Hz,場頻率為59.94 Hz[9-10]。一個周期行掃描信號由96個pix時間同步頭、48個pix行消隱前肩、640 個有效數(shù)據(jù)顯示區(qū)域和16 個pix行消隱后肩組成。場信號計數(shù)器驅(qū)動時鐘是行計數(shù)器的溢出信號,即當(dāng)行計數(shù)器為800 個pix時,場計數(shù)器加1。因此場計數(shù)器一個周期是525行,在行計數(shù)器和場計數(shù)同時計數(shù)到有效顯示區(qū)域時,圖形數(shù)據(jù)才能正確。
VGA 顯示器采取從左到右,從上而下的方式掃描,利用行、場同步計數(shù)器可以確定圖形像素掃描點在顯示區(qū)域中的相對坐標(biāo)位置與在雙口RAM 中的地址數(shù)量關(guān)系,由此完成圖形數(shù)據(jù)在顯示區(qū)域的顯示。
假設(shè)x 表示行計數(shù)器值,y 表示場計數(shù)器值,(x,y)表示為掃描點在顯示區(qū)域的任何一像素點。波形顯示區(qū)域大小為M×N(位于640×480區(qū)域內(nèi)),起始點位置為(x0,y0),則掃描點坐標(biāo)(x,y)在波形顯示區(qū)域滿足如下關(guān)系:

其中:M 表示顯示區(qū)域長度,N 表示顯示區(qū)域?qū)挾取?/p>
確定x1=x-x0作為雙口RAM 存儲器的讀地址,利用x1值作為波形數(shù)據(jù)在雙口RAM 中的地址讀取數(shù)據(jù)da(x1),通過比較da(x1)和y1=y(tǒng)-y0的值確定是否顯示數(shù)據(jù)。比較簡單的顯示方法是:如果da(x1)和y1相等則指定顏色顯示數(shù)據(jù),否則顯示背景色。該方法不能連續(xù)顯示頻率較高的波形,容易丟失波形陡峭位置的信息,視覺效果不好。為此對該方法進(jìn)行改進(jìn),可以實現(xiàn)任意頻率波形的顯示,具體的波形數(shù)據(jù)顯示方法流程如圖4所示。掃描點(x,y)隨著x,y 的改變移動顯示位置,在掃描點到達(dá)波形顯示區(qū)域(x,y)時,利用x1作為波形數(shù)據(jù)在雙口RAM 中的地址讀取。數(shù)據(jù)da(x1-1),da(x1),將y1值與當(dāng)前波形數(shù)據(jù)da(x1)和前一時刻波形數(shù)據(jù)da(x1-1)進(jìn)行比較,如果y1值介于二者之間,則在掃描點(x,y)處按照指定的顏色顯示波形像素點,否則顯示背景色。

圖4 波形數(shù)據(jù)顯示流程圖Fig.4 Flow chart of waves data display
FPGA 芯片主要完成外部波形數(shù)據(jù)的采集和控制圖形數(shù)據(jù)的VGA 顯示。由于采集圖形數(shù)據(jù)量較大,利用FPGA 自帶的可配置的雙口RAM 模塊作為緩沖區(qū)。根據(jù)顯示波形區(qū)域大小和640×480×60 Hz顯示模式,RAM 存儲的數(shù)據(jù)大小為512,數(shù)據(jù)地址位寬9 位。FPGA 只需要通過顯示控制模塊對RAM 進(jìn)行讀取操作,然后按照波形顯示方法完成波形像素位置與顏色顯示的轉(zhuǎn)化,最后產(chǎn)生標(biāo)準(zhǔn)的VGA 接口時序?qū)崿F(xiàn)像素點的顯示。因此,顯示控制模塊的設(shè)計是實現(xiàn)VGA 顯示的關(guān)鍵。該模塊中產(chǎn)生標(biāo)準(zhǔn)的VGA 接口行、場信號時序即可驅(qū)動顯示器,利用雙口RAM 的“滿”標(biāo)志信號讀取數(shù)據(jù),對讀取的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理,完成數(shù)據(jù)的顯示。其關(guān)鍵Verilog HDL代碼如下:


本文采用的FPGA 芯片選擇Altera公司的Cyclone系列EP3C55F484C8器件,使用Verilog HDL 硬件描述語言,在Quartus II 9.0環(huán)境下完成了顯示控制模塊的設(shè)計并進(jìn)行了相應(yīng)的時序仿真,VGA 接口時序仿真如圖5、圖6、圖7所示。

圖5 VGA 接口時序仿真圖(a)Fig.5 Timing simulation charts of VGA interface(a)

圖6 VGA 接口時序仿真圖(b)Fig.6 Timing simulation charts of VGA interface(b)

圖7 VGA 接口時序仿真圖(c)Fig.7 Timing simulation charts of VGA interface(c)

圖8 顯示器波形顯示結(jié)果Fig.8 Waveform display results of the monitor
vga_clk是25MHz行計數(shù)器時鐘信號;data_in是讀取雙口RAM 的波形數(shù)據(jù);disp_data 是VGA 顯示顏色數(shù)據(jù);vsync是場同步信號,hsync為場計數(shù)器。由圖可知:行計數(shù)器hcount_r計數(shù)到799,行計數(shù)器清零,開始重新計數(shù),此時行同步信號hsync由高電平變?yōu)榈碗娖剑M(jìn)入下一行的行消隱期,場計數(shù)器vcount_r加1,當(dāng)行計數(shù)器hcount_r計數(shù)到143,場計數(shù)器vcount_r計數(shù)到34,且行同步信號hsync為高電平,場同步信號vsync 為高電平,此時VGA 接口數(shù)據(jù)信號disp_data輸出顏色數(shù)據(jù)FF,VGA 接口信號嚴(yán)格滿足接口時序要求。
為驗證系統(tǒng)在640×480×60 Hz顯示模式下的顯示效果,系統(tǒng)上電后通過VGA 接口在顯示器上顯示采集的波形信號圖,顯示區(qū)域大小為512×128位于顯示屏中央,其實物效果圖如圖8所示。顯示效果良好,顯示位置可以任意調(diào)整。
以640×480×60Hz 顯示模式為例,結(jié)合FPGA 芯片控制,闡述了一種基于FPGA 的VGA 波形顯示方法,并在Altera公司的Cyclone系列EP3C55F484C8器件進(jìn)行了驗證,波形數(shù)據(jù)能夠連續(xù)穩(wěn)定地顯示。該顯示設(shè)計方法能夠應(yīng)用于其他分辨率(1 024×768,1 280×720,1 920×1 080等)的VGA 顯示,且FPGA 具有可重配置性和豐富的片內(nèi)資源,編程大大簡化,且基于FPGA 開發(fā)的VGA 顯示控制模塊,具有自主知識產(chǎn)權(quán)IP核,方便移植,為基于FPGA 的嵌入式終端顯示提供了一個較好的解決方案。
[1] 鄭爭兵.一種基于FPGA 的UART 電路設(shè)計[J].國外電子測量技術(shù),2010,29(7):85-87.Zheng Z B.Design of UART circuit based on FPGA [J].Foreign Electronic Measurement Technology,2010,29(7):85-87.(in Chinese)
[2] 鄭爭兵.基于FPGA 的FSK 調(diào)制解調(diào)系統(tǒng)設(shè)計[J].陜西理工學(xué)院學(xué)報:自然科學(xué)版,2012,28(5):20-21.Zheng Z B.Design of FSK modulation and demodulation system based on FPGA [J].Journal of Shaanxi University of Technology:Natural Science Edition,2012,28(5):20-21.(in Chinese)
[3] 鄭爭兵.基于DSP Builder的FIR 數(shù)字濾波器設(shè)計與驗證[J].陜西理工學(xué)院學(xué)報:自然科學(xué)版,2013,29(2):34-38.Zheng Z B.Design and simulation of FIR digital filter based on DSP builder[J].Journal of Shaanxi University of Technology:Natural Science Edition,2013,29(2):34-38.(in Chinese)
[4] 劉敏,戴曙光,穆平安.采用SOPC IP核技術(shù)實現(xiàn)液晶屏顯示[J].液晶與顯示,2011,26(5):665-667.Liu M,Dai S G,Mu P A.Controller for TFT LCD driver based on SOPC[J].Chinese Journal of Liquid Crystals and Displays,2011,26(5):665-667.(in Chinese)
[5] 鄭爭兵.基于FPGA 的圖形點陣液晶顯示系統(tǒng)設(shè)計與實現(xiàn)[J].液晶與顯示,2013,28(3):403-407.Zheng Z B.Design and implementation of graphics dot matrix LCD based on FPGA[J].Chinese Journal of Liquid Crystals and Displays,2013,28(3):403-407.(in Chinese)
[6] 鄭爭兵.基于FPGA 的高速采樣緩存系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機(jī)應(yīng)用,2012,32(11):3259-3261.Zheng Z B.Design and implementation of a high-speed sampling buffer system based on FPGA [J].Journal of Computer Applications,2012,32(11):3259-3261.(in Chinese)
[7] 熊文彬,蔣泉,曲建軍,等.基于FPGA 實現(xiàn)的視頻顯示系統(tǒng)[J].液晶與顯示,2011,26(1):92-93.Xiong W B,Jiang Q,Qu J J,et al.Video display system based on FGPA[J].Chinese Journal of Liquid Crystals and Displays,2011,26(1):92-93.(in Chinese)
[8] 袁堂青,張玉璘.基于FPGA 的VGA 漢字顯示系統(tǒng)設(shè)計與實現(xiàn)[J].濟(jì)南大學(xué)學(xué)報:自然科學(xué)版,2011,25(1):37-38.Yuan S T,Zhang Y L.Design and implementation of VGA chinese character display based on FPGA[J].Journal of University of Jinan:Science and Technology,2011,25(1):37-38.(in Chinese)
[9] 陳彬,伍乾永,劉永春.基于FPGA 的VGA 控制模塊設(shè)計[J].微電子學(xué),2008,38(2):306-307.Chen B,Wu Q Y,Liu Y Q.Design of VGA control module based on FPGA[J].Microelectronics,2011,26(1):92-93.(in Chinese)
[10] 王鳴浩,吳小霞.基于FPGA 的通用液晶顯示控制器的設(shè)計和實現(xiàn)[J].液晶與顯示,2012,27(1):87-88.Wang M H,Wu X X.Design and realization of general LCD controller based on FGPA[J].Chinese Journal of Liquid Crystals and Displays,2012,27(1):87-88.(in Chinese)