基于FPGA的VGA顯示系統的設計與實現
摘要:針對VGA(視頻圖形陣列)接口顯示器的檢測需求,設計了一種基于Altera FPGA的VGA顯示系統。詳細介紹了VGA顯示的原理,采用硬件描述語言Verilog完成了VGA顯示所需的驅動時序和圖像存儲相關模塊的設計,并對整個系統進行了綜合仿真,驗證了設計的正確性。仿真與測試結果表明,該設計可以在簡單的情況下實現圖像或字符顯示,節(jié)約了硬件成本,還可以滿足不同顯示標準的需要。
本文引用地址:http://butianyuan.cn/article/201603/287500.htm引言
VGA (Video Graphics Array)是IBM公司在1987年隨PS/2機一起推出的一種視頻傳輸標準,具有分辨率高、顯示速率快、顏色豐富等優(yōu)點,在顯示器領域得到了廣泛的應用。隨著電子設計自動化(EDA)技術的發(fā)展,近年來FPGA(現場可編程邏輯門陣列)在大規(guī)模嵌入式系統設計中得到了廣泛應用。本文對基于FPGA的VGA顯示系統進行了研究,利用了Altera Cyclone IV系列的FPGA高達上百兆的工作頻率特性為數字圖像處理提供了良好的實時性,其內部集成的數字鎖相環(huán)為系統的工作時鐘提供的良好的穩(wěn)定性,其內部嵌入的存儲器可以存儲一定容量的圖像信息,其豐富的I/O口資源可以擴展外接大容量的顯示接口。此外,FPGA電路的可重構性,為系統功能的優(yōu)化和升級以及功能拓展提供了很大的設計空間。因此,由FPGA完成VGA圖像的顯示和控制,較好的實現了圖像數據處理的實時性和可靠性,具有成本低、結構簡單、應用靈活的優(yōu)點,可以廣泛應用于視頻和計算機的顯示技術領域。
1 VGA顯示原理
計算機顯示器的顯示有許多標準,如VGA、SVGA等。VGA 作為一種標準的顯示接口得到廣泛的應用。常見的彩色顯示器,一般由CRT(陰極射線管)構成,彩色是由R、G、B(紅、綠、藍)三基色組成。顯示器中的陰極射線槍通過發(fā)出電子束打在涂有熒光粉的熒光屏上,產生RGB三基色,合成一個彩色像素。掃描從屏幕的左上方開始,從左到右,從上到下,進行掃描,每掃完一行,電子束回到屏幕的左邊下一行的起始位置,在這期間,CRT對電子束進行消隱,每行結束時,用行同步信號進行行同步;掃描完所有行,用場同步信號進行場同步,并使掃描回到屏幕的左上方,同時進行場消隱,預備下一場的掃描。
VGA接口電路如圖1所示,VGA采用15 pin的接口,用于顯示的接口信號主要有5個:1個行同步信號(HSY);1個場同步信號(VSY)、以及3個顏色信號(VGA_G、VGA_R、VGA_B)。
VGA 的接口時序如圖2所示,場同步信號VSYNC在每幀開始的時候產生一個固定寬度的低脈沖,行同步信號HSYNC在每行開始的時候產生一個固定寬度的低脈沖,數據DATA在某些固定的行和列的交匯處有效。
對于VGA接口信號的時序驅動,要嚴格遵循VGA顯示工業(yè)標準。在不同分辨率下,VGA驅動時序中的行、列同步信號的格式是完全一致的,都由同步段、后廊段、激活段和前廊段組成,只是對應每段的高低電平的保持時間不同。本文采用刷新頻率為60Hz,分辨率為800x600的VGA顯示標準,其驅動時序表如表1所示。按照800x600x60Hz 的顯示標準時序,一個列像素掃描需要25ns,要完成一行的掃描,需要1056個列像素,也就是說需要1056x25ns 的時間。如果要完成所有行的掃描的話,需要628x1056x25ns的時間。但不是所有時間都用來VGA圖像顯示,有一部分的時間用來時序同步操作。
2 FPGA的設計與實現
設計采用Altera公司的Cyclone IV系列FPGA(EP4CE6F17C8)作為主控制器,該芯片具有多達16272個LE、179個用戶I/O口。器件中M9K存儲塊提供240 KB存儲容量,能夠被配置來支持多種操作模式,包括ROM、RAM、FIFO以及單口和雙口模式。器件具有3個可編程鎖相環(huán)(PLL) 和9 個全局時鐘線,能提供時鐘管理和頻率合成,實現最大的系統功能。VGA圖像顯示器是一個較大的數字系統。本設計采用模塊化的設計方法,遵循自頂向下的程序設計思想,進行功能劃分并按層次設計。采用硬件描述語言Verilog設計了各個功能模塊并進行仿真,使頂層VGA顯示模塊實體仿真綜合得以順利通過。VGA圖像顯示器的邏輯結構框圖如圖3所示。根據VGA顯示的原理,VGA圖像顯示器的工作原理是:時鐘分頻模塊負責為系統提供驅動的基準時鐘,VGA時序發(fā)生模塊負責產生時序驅動信號、行列地址信號和有效區(qū)域信號,同時在正確的時序控制下,由圖像顯示控制模塊讀取圖像信息存儲模塊中的像素數據并產生R、G、B三基色信號至顯示器的VGA接口,進行圖像顯示。
2.1 時鐘分頻模塊設計
設計驅動VGA采用800x600x60Hz顯示標準,該顯示標準需要的最小單位也就是列像素所占用的時間周期為25ns。也就是說,至少需要頻率為 40MHz 的時鐘為VGA驅動提供基準時鐘,利用FPGA器件的嵌人式鎖相環(huán)(PLL)對FPGA源時鐘(頻率為50MHz)進行倍頻(四倍頻后五分頻得到 40MHz)。PLL是FPGA的重要硬件資源,其主要的功能是對源時鐘編程、倍頻、分頻等。
2.2 VGA時序發(fā)生模塊設計
VGA時序發(fā)生模塊接口信號包括:行同步信號HSYNC Signal、場同步信號VSYNC Signal、有效區(qū)域信號Ready_Sig、行地址信號Column_Addr_Sig、列地址信號Row_Addr_Sig。行同步信號是根據行像素計數寄存器Count_H的計數值來產生,場同步信號產生是根據列像素計數寄存器Count_V的計數值來產生,而有效區(qū)域信號Ready_Sig用來確定串行輸出的顯示器的紅、綠、藍信號線上電平的高低。
經過PLL分頻后的時鐘每過25ns,Count_H就會累加計數,當其計到1056個列像素時,Count_V加1,Count_V最大計到628。VSYNC Signal 在同步段保持低電平,之后就會拉高輸出,同步段保持低電平的時間是掃描4個列像素的時間。而HSYNC Signal在同步段即剛開始的128個行像素保持低電平,之后輸出高電平。有效區(qū)域信號Ready_Sig發(fā)生在HSYNC Signal和VSYNC Signal的激活段交集處,輸出為高電平有效。為了精確地控制圖像顯示在屏幕的位置,VGA時序發(fā)生模塊有義務輸出當前的行地址信號(Column_Addr_Sig)和列地址信號(Row_Addr_Sig)。行地址的計數是發(fā)生在128個Count_H之后,而列地址計數是27個Count_V之后開始計數。
VGA時序發(fā)生模塊sync_module.v的部分代碼如下:
module sync_module
(
input CLK, RSTn;
output VSYNC_Sig, HSYNC_Sig, Ready_Sig;
output [10:0] Column_Addr_Sig, Row_Addr_Sig;
);
………………………
…………
assign VSYNC_Sig = ( Count_V <= 11'd4 ) ? 1'b0 : 1'b1;
assign HSYNC_Sig = ( Count_H <= 11'd128 ) ? 1'b0 : 1'b1;
assign Ready_Sig = isReady;
assign Column_Addr_Sig = isReady ? Count_H - 11'd216 : 11'd0;
assign Row_Addr_Sig = isReady ? Count_V - 11'd27 : 11'd0;
endmodule
本文來源于中國科技期刊《電子產品世界》2016年第2期第48頁,歡迎您寫論文時引用,并注明出處。
評論