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