姜世杰, 余紅英, 洪永學(xué), 林麗蓉
(中北大學(xué)信息與通信工程學(xué)院, 山西太原 030051)
隨著電子產(chǎn)業(yè)及視頻圖像處理技術(shù)的發(fā)展,VGA(視頻圖形陣列)作為一種標(biāo)準(zhǔn)的顯示接口在視頻和計(jì)算機(jī)領(lǐng)域得到了廣泛的應(yīng)用[1],在圖像處理中若是采用傳統(tǒng)的數(shù)據(jù)傳輸方式來(lái)使高分辨率圖像實(shí)時(shí)顯示在顯示器上,一般要求晶振頻率達(dá)到40 MHz以上,傳統(tǒng)的電子電路難以達(dá)到這個(gè)速度,若采用專門的圖像處理芯片,其設(shè)計(jì)難度大、開(kāi)發(fā)成本高成為一個(gè)瓶頸選擇。因此本文基于FPGA的靈活可編程性,利用其高達(dá)上百兆的工作頻率來(lái)完成像素級(jí)的圖像處理,豐富的I/O資源可以外接大容量存儲(chǔ)器等優(yōu)點(diǎn),設(shè)計(jì)了一種驅(qū)動(dòng)VGA的電路[2]。
標(biāo)準(zhǔn)的VGA接口一個(gè)有15個(gè)接口(見(jiàn)圖1),但其中真正用到的就5個(gè)腳,HSYNC是行同步信號(hào),VSYNC是場(chǎng)同步信號(hào),同步信號(hào)就是為了讓VGA顯示器掃描像素點(diǎn)數(shù)據(jù),vga_r、vga_g、vga_b為三原色信號(hào),我們可以直接用I/O口去連接5個(gè)信號(hào)接口,并且三色信號(hào)接口輸入只可能是數(shù)字信號(hào)(0或者1),因此液晶屏上顯示的顏色最多有8種,一般來(lái)說(shuō)可以在FPGA與VGA接口之間加一個(gè)D/A芯片,這樣就可能實(shí)現(xiàn)65536種或者更多色彩的顯示。
VGA的接口時(shí)序如圖2所示,場(chǎng)同步信號(hào)VSYNC在每幀數(shù)據(jù)開(kāi)始的時(shí)候產(chǎn)生一個(gè)固定寬度的低脈沖,行同步信號(hào)HSYNC在每行開(kāi)始的時(shí)候產(chǎn)生一個(gè)固定寬度的低脈沖,數(shù)據(jù)在某些固定的行和列交匯處有效。
圖1 VGA接口
圖2 VGA控制時(shí)序
對(duì)于一個(gè)刷新頻率為60 Hz,分辨率為800×600的顯示器,我們用50 MHz晶振的FPGA芯片驅(qū)動(dòng)設(shè)計(jì),表1為它的脈沖技術(shù)表。
表1 VGA時(shí)序表
首先行同步信號(hào)在某個(gè)系統(tǒng)時(shí)鐘上升沿到來(lái)時(shí)被拉低120個(gè)脈沖寬度后被拉高,經(jīng)過(guò)67個(gè)脈沖,DATA數(shù)據(jù)有效,即顯示器開(kāi)始掃描800個(gè)列像素點(diǎn),掃描完成到下一次行同步信號(hào)再次被拉低,中間經(jīng)過(guò)52個(gè)時(shí)鐘脈沖。掃描一行需要的數(shù)據(jù)幀長(zhǎng)為1039。
而場(chǎng)同步信號(hào)的掃描方式類似于上面的步驟,在某個(gè)時(shí)鐘到來(lái)時(shí)被拉低6個(gè)脈沖寬度繼而被拉高,拉高后延遲25個(gè)脈沖周期行同步信號(hào)被拉低,這樣開(kāi)始掃面每行的像素。完成本次掃描后場(chǎng)同步信號(hào)再次被拉低重復(fù)上述過(guò)程。因?yàn)樗⑿骂l率為60 Hz,所以每秒場(chǎng)同步信號(hào)會(huì)被拉低60次。這樣完成對(duì)800×600分辨率顯示器的每個(gè)像素點(diǎn)的掃描如圖3所示。
圖3 掃描過(guò)程
針對(duì)上面提到的VGA工作原理,利用Quartus II軟件編寫Verilog[5]硬件代碼來(lái)驅(qū)動(dòng)常見(jiàn)的17寸電腦顯示器,選用ALTERA公司的EP2C8Q208C8芯片作為主控芯片,根據(jù)時(shí)序來(lái)完成對(duì)硬件電路的描述與搭建。首先是對(duì)管腳的定義如表2所示。
表2 管腳定義
其次利用系統(tǒng)時(shí)鐘產(chǎn)生行、場(chǎng)同步信號(hào),完成對(duì)整個(gè)顯示器的顯示掃描,代碼如下:
圖4 驅(qū)動(dòng)顯示器
此處只是展示了部分代碼,Verilog硬件描述語(yǔ)言完全不同于以往我們接觸的編程類語(yǔ)言,它可以很直白的完成對(duì)芯片或者器件的時(shí)序圖的描述來(lái)完成硬件電路的搭建[6-7]。
本設(shè)計(jì)有兩個(gè)模塊,一個(gè)是vga_dis模塊,它的作用是對(duì)所有像素點(diǎn)的掃描并產(chǎn)生行、場(chǎng)同步信號(hào),另一個(gè)vga_play模塊。編譯生成的RTL視圖如圖5所示。
圖5 RTL視圖
其中clk為系統(tǒng)的時(shí)鐘信號(hào),設(shè)計(jì)中所有的分頻、計(jì)數(shù)器等都是對(duì)該系統(tǒng)時(shí)鐘進(jìn)行操作完成,rts_n為復(fù)位信號(hào),從vga_dis中產(chǎn)生hsync和vsync以供給VGA進(jìn)行正常的掃描工作,同時(shí)產(chǎn)生坐標(biāo)信號(hào)作為輸入信號(hào)輸入到vga_play模塊中用于產(chǎn)生圖像信息。
時(shí)序仿真軟件我們選用同為ALTERA公司下的一個(gè)仿真平臺(tái)ModelSim[8],我們?cè)赒uartus中編寫好程序代碼和仿真腳本,可以很好的無(wú)縫鏈接到ModelSim直接進(jìn)行時(shí)序仿真如圖6所示,本例輸入/輸出接口簡(jiǎn)單,編寫的激勵(lì)腳本也相對(duì)容易。
圖6 時(shí)序仿真波形
利用可編程邏輯器件(FPGA/CPLD)可以很方便地實(shí)現(xiàn)數(shù)字系統(tǒng)設(shè)計(jì),而在ALTERA的Quartus II軟件平臺(tái)和ModelSim仿真平臺(tái)下,F(xiàn)PGA設(shè)計(jì)的各個(gè)階段都得到了很好的支持,兩者的有效結(jié)合使得數(shù)字系統(tǒng)的設(shè)計(jì)更加方便快捷?;贔PGA器件的VGA顯示控制模塊可以實(shí)現(xiàn)VGA顯示的各項(xiàng)功能。其性能取決于Verilog代碼的編寫和Quartus II軟件工具的綜合優(yōu)化的結(jié)果。
[1]謝磊.基于FPGA的VGA圖像控制器的設(shè)計(jì)與實(shí)現(xiàn)[J].新鄉(xiāng)學(xué)院學(xué)報(bào):自然科學(xué)版,2009,26(6):51-53.
[2]張亞平,賀占莊.基于FPGA的VGA顯示模塊設(shè)計(jì)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2007,17(6):242-245.
[3]楊金.基于FPGA的VGA游戲設(shè)計(jì)[J].數(shù)字技術(shù)與應(yīng)用,2012(4):171-172.
[4]段磊.基于FPGA的VGA顯示系統(tǒng)[J].世界電子元器件,2007(9):102-105.
[5]夏宇聞,胡燕祥,刁嵐松.Verilog HDL數(shù)字設(shè)計(jì)與綜合[M].2版.北京:電子工業(yè)出版社,2011.
[6]秦慶磊,張昌州.基于FPGA控制VGA顯示的雙通道數(shù)字示波器[J].科技信息,2011(30):120.
[7]求是科技.FPGA數(shù)字電子系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2005.
[8]時(shí)為.異步串行數(shù)字收發(fā)通信端口(UART)的ModelSim仿真[J].揚(yáng)州教育學(xué)院學(xué)報(bào),2006,24(3):52-54.