找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2547|回復: 0
收起左側

基于FPGA的VGA圖片動態(tài)顯示設計

[復制鏈接]
ID:311912 發(fā)表于 2020-1-1 13:36 | 顯示全部樓層 |閱讀模式
1 緒論
隨著電子技術和集成工藝水平的不斷提高,微處理器的運算與控制能力也有了顯著的提升,由于越來越多的電子產(chǎn)品對功耗有著苛刻的要求,導致目前微處理器的帶負載能力比較弱,通常輸出電壓為mV級,這也制約了它們在顯示應用領域的發(fā)展。目前,在數(shù)據(jù)采集和顯示控制領域,F(xiàn)PGA正好彌補了微處理器帶負載能力弱的缺點,且它在VGA(Video Graphics Array)信號處理中也有著大量的應用。
VGA(VideoGraphics Array)是IBM在1987年隨PS/2機一起推出的一種視頻傳輸標準,具有分辨率高、顯示速率快、顏色豐富等優(yōu)點,在彩色顯示器領域得到了廣泛的應用。不支持熱插拔,不支持音頻傳輸。
Quartus II 是Altera公司的綜合性PLD/FPGA開發(fā)軟件,支持原理圖、VHDL、Verilog HDL以及AHDL(Altera Hardware Description Language)等多種設計輸入形式,內嵌自有的綜合器以及仿真器,可以完成從設計輸入到硬件配置的完整PLD設計流程。
CycloneIII 系列FPGA是Altera的低成本系列FPGA。Cyclone III FPGA具有一下特性:新的可編程構架通過設計實現(xiàn)低成本,嵌入式存儲資源支持各種存儲器應用和數(shù)字信號處理(DSP)實施,支持串行、總線和網(wǎng)絡接口及各種通信協(xié)議,使用PLL管理片內和片外系統(tǒng)時序,支持單端I/O標準和差分I/O技術,支持LVDS信號等等。
本次課程設計是基于FPGA的VGA圖像顯示控制器設計,采用QuartusII 9.0 軟件工具,并以Altera 公司的CycloneIII 系列FPGA的器EP3C10E144C8為主實現(xiàn)硬件平臺的設計。該控制器采用Verilog HDL 實現(xiàn)相關的控制功能,這大大提升了系統(tǒng)的實時性和可靠性,在大規(guī)模嵌入式系統(tǒng)設計中具有較高的工程價值和很好的應用前景。
2系統(tǒng)方案設計與工作原理
2.1方案設計及框圖
本次課程設計采用模塊化設計方法,我們對VGA圖像顯示控制器按功能進行層次劃分。本次課程設計主要由以下模塊組成:圖像數(shù)據(jù)存儲ROM模塊、鎖相環(huán)PLL輸出25MHz時鐘模塊、分頻模塊、選擇模塊、VGA圖像顯示模塊。2.1設計框圖
2.2工作原理
根據(jù)VGA的顯示協(xié)議,可以選擇不同的顯示分辨率。本設計選擇的是640 X 480 X 60Hz 的分辨率,相對應時鐘頻率為25.175MHz。常見的彩色顯示器一般有CRT(陰極射線管)構成,彩色是由R、G、B(紅:Red,綠:Green,藍:Blue)三基色組成,用逐行掃描的方式解決圖像顯示。掃描是從屏幕的左上方開始的,從左到右,從上到下,進行掃描。每掃完一行,電子束回到屏幕的左邊下一行的起始位置,在這期間,CRT對電子束進行行消隱,每行結束時,用行同步信號進行行同步;掃描完所有行,用場同步信號進行場同步,并使掃描回到屏幕的左上方,同時進行場消隱,預備下一場的掃描。
對于普通的VGA顯示器,其引出線共含五個信號:R、G、B是三基色信號;HS是行同步信號;VS是場同步信號。
根據(jù)相應協(xié)議,在VGA時序控制模塊對行掃描信號HS和場掃描信號VS進行相應的時序控制。然后利用四選一模塊從ROM內存地址里面取出對應圖片的像素點的三基色數(shù)據(jù),傳輸?shù)腣GA顯示屏。利用分頻模塊和四選一模塊使得圖片進行動態(tài)顯示。


附錄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動態(tài)顯示圖片課程設計.doc

8.99 MB, 下載次數(shù): 26, 下載積分: 黑幣 -5

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表