找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2127|回复: 0
收起左侧

基于FPGA的VGA图片动态显示设计

[复制链接]
ID:311912 发表于 2020-1-1 13:36 | 显示全部楼层 |阅读模式
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

8.99 MB, 下载次数: 26, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表