|
1 緒論
隨著電子技術和集成工藝水平的不斷提高,微處理器的運算與控制能力也有了顯著的提升,由于越來越多的電子產品對功耗有著苛刻的要求,導致目前微處理器的帶負載能力比較弱,通常輸出電壓為mV級,這也制約了它們在顯示應用領域的發展。目前,在數據采集和顯示控制領域,FPGA正好彌補了微處理器帶負載能力弱的缺點,且它在VGA(Video Graphics Array)信號處理中也有著大量的應用。
VGA(VideoGraphics Array)是IBM在1987年隨PS/2機一起推出的一種視頻傳輸標準,具有分辨率高、顯示速率快、顏色豐富等優點,在彩色顯示器領域得到了廣泛的應用。不支持熱插拔,不支持音頻傳輸。
Quartus II 是Altera公司的綜合性PLD/FPGA開發軟件,支持原理圖、VHDL、Verilog HDL以及AHDL(Altera Hardware Description Language)等多種設計輸入形式,內嵌自有的綜合器以及仿真器,可以完成從設計輸入到硬件配置的完整PLD設計流程。
CycloneIII 系列FPGA是Altera的低成本系列FPGA。Cyclone III FPGA具有一下特性:新的可編程構架通過設計實現低成本,嵌入式存儲資源支持各種存儲器應用和數字信號處理(DSP)實施,支持串行、總線和網絡接口及各種通信協議,使用PLL管理片內和片外系統時序,支持單端I/O標準和差分I/O技術,支持LVDS信號等等。
本次課程設計是基于FPGA的VGA圖像顯示控制器設計,采用QuartusII 9.0 軟件工具,并以Altera 公司的CycloneIII 系列FPGA的器EP3C10E144C8為主實現硬件平臺的設計。該控制器采用Verilog HDL 實現相關的控制功能,這大大提升了系統的實時性和可靠性,在大規模嵌入式系統設計中具有較高的工程價值和很好的應用前景。
2系統方案設計與工作原理
2.1方案設計及框圖
本次課程設計采用模塊化設計方法,我們對VGA圖像顯示控制器按功能進行層次劃分。本次課程設計主要由以下模塊組成:圖像數據存儲ROM模塊、鎖相環PLL輸出25MHz時鐘模塊、分頻模塊、選擇模塊、VGA圖像顯示模塊。2.1設計框圖
2.2工作原理
根據VGA的顯示協議,可以選擇不同的顯示分辨率。本設計選擇的是640 X 480 X 60Hz 的分辨率,相對應時鐘頻率為25.175MHz。常見的彩色顯示器一般有CRT(陰極射線管)構成,彩色是由R、G、B(紅:Red,綠:Green,藍:Blue)三基色組成,用逐行掃描的方式解決圖像顯示。掃描是從屏幕的左上方開始的,從左到右,從上到下,進行掃描。每掃完一行,電子束回到屏幕的左邊下一行的起始位置,在這期間,CRT對電子束進行行消隱,每行結束時,用行同步信號進行行同步;掃描完所有行,用場同步信號進行場同步,并使掃描回到屏幕的左上方,同時進行場消隱,預備下一場的掃描。
對于普通的VGA顯示器,其引出線共含五個信號:R、G、B是三基色信號;HS是行同步信號;VS是場同步信號。
根據相應協議,在VGA時序控制模塊對行掃描信號HS和場掃描信號VS進行相應的時序控制。然后利用四選一模塊從ROM內存地址里面取出對應圖片的像素點的三基色數據,傳輸的VGA顯示屏。利用分頻模塊和四選一模塊使得圖片進行動態顯示。
附錄1:程序
modulevgaV (clk, hs, vs, r, g, b, rgbin, DOUT);
input clk;
output hs,vs;
output r,g,b;
input[2:0]rgbin;
output[11:0]DOUT;
reg[9:0]hcnt,vcnt; reg r,g,b; reghs,vs;
assign DOUT={vcnt[5:0], hcnt[5:0]};
always @ (posedge clk)
begin
if (hcnt<800) hcnt<=hcnt+1;
else hcnt<={10{1'b0}};
end
always @ (posedge clk)
begin
if (hcnt==640+ 8)
begin
if(vcnt<525) vcnt<=vcnt+1;
else vcnt<={10{1'b0}};
end
end
always @ (posedge clk)
begin
if ((hcnt>=640+ 8+ 8) &(hcnt<640+ 8+ 8+ 96)) hs<=1'b0;
else hs<=1'b1;
end
always @ (vcnt)
begin
if ((vcnt>=480+ 8+ 2) &(vcnt<480+8 + 2+ 2)) vs<=1'b0;
else vs<=1'b1;
end
always @ (posedge clk)
begin
if (hcnt<640 & vcnt<480)
begin
r<=rgbin[2];
g<=rgbin[1];
b<=rgbin[0];
end
else begin
r<=1'b0;
g<=1'b0;
b<=1'b0;
end
endendmodule
modulediv(clkin,clkout);
input clkin;
output clkout;
reg[23:0] count;
reg clkout;
parameter N=2000000;
always @(posedge clkin)
if(count<N-1)
count<=count+1;
else
begin
count<=0;
clkout<=~clkout;
end
endmodule
moduleMUX41a(clk,a,b,c,d,y);
input clk;
input [2:0]a;
input [2:0]b;
input [2:0]c;
input [2:0]d;
output [2:0]y;
reg[2:0]Q;
reg[2:0]y;
always@(posedge clk)
begin Q<=Q+1;
end
always@(a or b or c or d or y)
begin
if(Q==3'b000) y<=a;
else if(Q==3'b001) y<=a;
else if(Q==3'b010) y<=b;
else if(Q==3'b011) y<=b;
else if(Q==3'b100) y<=c;
else if(Q==3'b101) y<=c;
else if(Q==3'b110) y<=d;
else if(Q==3'b111) y<=d;
else y<=a;
end
endmodule
|
-
-
VGA動態顯示圖片課程設計.doc
2020-1-1 13:31 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
8.99 MB, 下載次數: 26, 下載積分: 黑幣 -5
|