找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 2538|回復(fù): 0
收起左側(cè)

基于FPGA的VGA圖片動(dòng)態(tài)顯示設(shè)計(jì)

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

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

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表