基于FPGA的VGA彩色图片的显示_第1页
基于FPGA的VGA彩色图片的显示_第2页
基于FPGA的VGA彩色图片的显示_第3页
基于FPGA的VGA彩色图片的显示_第4页
基于FPGA的VGA彩色图片的显示_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于FPGA的VGA彩色图片的显示摘要:本论文依据VGA接口原理采用了Verilog HDL语言对Altera的Cyclone系列的FPGA进行了设计,通过MATLAB二值化得到图片颜色的数据,将得到的数据存储到ROM中,然后读取ROM中的数据直接送到显示器,节省了计算机的处理过程,加快了数据的处理速度,节约了硬件本钱。此方案可以广泛应用于各种仪器,数字视频系统、高分辨率的彩色图片图像处理、视频信号再现等。论文关键词:现场可编程门阵列,VerilogHDL,VGA图像控制器,MATLAB,只读存储VGA接口显示器是计算机系统以及智能仪器中重要的显示终端设备。标准的VGA接口需要提供以下几组根本

2、的信号:行同步信号Hsync场同步信号Vsync以及红黄蓝3路模拟信号。因此要使数字图像信息在VGA接口显示器正确、完整地显示,就涉及到了时序的构建和数字图像信息的模拟化两方面。如果接口前端无可供利用的时序信息,那么就可参照有关标准来构造时序,这可利用可编程器件很方便地实现;另外由于VGA是一个模拟的接口标准,因此数字图像信息模拟化可用视频DA 转换器来实现。VGA标准是当前最常用的视频显示标准,还包括SVGA、XVGA等子标准。本文主要以640 x480,60Hz下VGA显示标准为例,实现一个满足多方面需求的VGA 显示终端接口。设计可应用于图像处理、视频信号再现、数据可视化分析等方面,实现

3、方法和器件的选取以及设计应用列举都具有典型的代表意义。理论分析VGA 显示接口的硬件设计和原理(1) 根本原理说明这次系统设计使用的显示器是满足VGA标准的常用的彩色显示器,由CRT阴极射线管构成,彩色由G、R、B绿:Green,红:Red,蓝:Blue三基色组成。显示那么用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB三基色,合成一个彩色像素。硬件选用了Analog Device公司的ADV7123。ADV7123由三个10位高速DAC组成,最高时钟速率为240MHZ,即可以到达最高240MS/s的数据吞吐率。当f(CLK)=140MHZ,f(OUT)=40MH

4、Z时,DAC的SFDR无杂散动态范围为-53dB;当f(CLK)=40MHZ,f(OUT)=1MHZ时,DAC的SFDR为-70dB。ADV7123的BLANK引脚可以用来输出空白屏幕。ADV7123在100Hz的刷新率下最高分辨率为1600 x1200。显示器的显示原理扫描从屏幕的左上方开始,从左到右,从上到下,进行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这个回扫的时间内,CRT对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,在离开屏幕右下角回到屏幕左上角的时间内进行场消隐,预备下一场的扫描。信号接口对于

5、普通的VGA显示器,其引出线共含5个信号:G、R、B:三基色信号;HS:行同步信号;VS:场同步信号。对于5个信号的时序驱动,对于VGA显示器要严格遵循640 x480 x60Hz模式。其中640是指每一行中显示的像素个数,而480是指屏幕每一列所包含的像素个数。(2) Hs与Vs驱动信号的产生我们常把要显示的数据如图像处理结果存放到存储器里,如果要把显示存储器里的图像在VGA 接口显示器显示,大多情况下,扫描时序是需要我们构造的。以640 x480,59. 94 Hz(60 Hz)为例。VGA工业标准规定具体地,在扫描过程中的时序图如图1所示:图1 VGA行扫描、场扫描时序图,每场信号对应5

6、25个行周期,其中480行为图像显示行,每场有场同步信号,该脉冲宽度为2个行周期的负脉冲;每显示行包括800点时钟,其中640点为有效显示区,每行有一个行同步信号负脉冲,该脉冲宽度为96 个点时钟。这样我们可以知道,行频为525x59. 94 Hz 即31469 Hz ,需要的点时钟频率为:525x800 x59.94 Hz约25 MHz。由上图可知,实际上在真正的实现过程中,每一行扫描所花的时间实际上比显示一行的像素所需的时间多了800-640=160个像素的时间而每一屏的扫描时间那么是显示525行的时间,而不是480行的时间。VGA 显示接口的验证方法在正式调试或使用接口前,对设计进行根本

7、测试、论证是有必要的,通常方法是尽可能脱离其它不确定因素,只对关心这局部电路进行测试。如果在FPGA 里构造的数据能够按要求在显示器上显示,那么表示根本可以使用了。例如把计数器输出作为DA的红绿蓝数字信号输入,以H_Cnt作为计数脉冲,并引入上述的时序信号,正常情况下显示器显示结果是水平方向是反复由亮到暗,或是由暗到亮显示。还可以利用FPGA 里的LPM_ROM 预存显示数据输出作为显示数据。仍以H_Cnt作为计数脉冲,计数器作为地址发生器,输出到LPM_ROM ,作为地址。简便起见,我们把128*128的彩色图像的信息保存到ROM中,每个像素点的颜色值保存为一个30位ADV7123由三个10

8、位高速DAC组成的数据,其保存的顺序为先第一行从左到右的128个像素颜色数据,然后保存下一行的数据,其他地址线共有14位。图片RGB颜色的值通过用matlab将图片二值化得到。步骤如下1、从文件读取图像到MATLABRGB=imread(1.bmp)命令窗口会一次显示出图像的R,G,B值2、 imtool(RGB)显示读入的图片3、用红,绿,蓝 三色显示图片 r(:,:,1)=RGB(:,:,1);r(:,:,2)=0;r(:,:,3)=0;g(:,:,2)=RGB(:,:,2);g(:,:,1)=0;g(:,:,3)=0;b(:,:,3)=RGB(:,:,3);b(:,:,1)=0;b(:,

9、:,2)=0;subplot(1,3,1),imshow(r);subplot(1,3,2),imshow(g);subplot(1,3,3),imshow(b);4、获取单色值 for i=1:128for j=1:128R(i,j)=RGB(i,j,1);G(i,j)=RGB(i,j,2);B(i,j)=RGB(i,j,3);endend;5、将R,G,B的值取出存放到R.txt G.txt B.txt 中6、将R,G,B数据按要求存放到mif文件中例如 R=255d G=10d B=1d,存储的数据为 00FF0A01由于要转化的数据量较多,可写段程序来完成。#includevoid m

10、ain()FILE *R,*G,*B,*out;long start=6,t;int r,g,b;char buf【6】;R=fopen(R.txt,r);G=fopen(G.txt,r);B=fopen(B.txt,r);out=fopen(out.txt,w);while(!feof(R) | !feof(G) | !feof(B)fscanf(R,%d,r);fscanf(G,%d,g);fscanf(B,%d,b);t=start+;for(int i=5;i=0;i-)buf=t%16;t=t4;/输出数据地址for(i=0;ifprintf(out,%X,buf);/数据打印局部f

11、printf(out,: 00);fprintf(out,%X,b/16);fprintf(out,%X,b%16);fprintf(out,%X,g/16);fprintf(out,%X,g%16);fprintf(out,%X,r/16);fprintf(out,%X,r%16);fputc( ,out);printf(任务以结束! );时钟信号50MHZ进过FPGA上的锁相环进行分频处理得到25MHZ的时钟信号。parameter Length = 128;/定义图片显示的大小parameter Width = 128;always (posedge VGA_CLK ) /行计数到达计数

12、周期将重置beginif(H_Cnt=H_Tg-1) H_Cnt else H_Cntendalways ( negedge Hs)/场计数到达计数周期将重置beginif(V_Cnt=V_Tg-1) V_Cnt else V_Cnt endalways ( posedge VGA_CLK )/产生行同步信号beginif(H_Cntelse Hsendalways (V_Cnt)/产生场同步信号beginif(V_Cntelse Vsendalways ( posedge VGA_CLK )begin /在显示器上显示范围的控制if(H_Cnt=H_Ta+H_Tb+H_Tc H_Cnt V_

13、Cnt=V_Ta+V_Tb+V_Tc V_Cnt begin / ROM读取控制和数据处理RGBaddressendelsebeginRGBend要把一幅图像的数据写入ROM,首先必须解决的就是写入文件的格式问题。一般的方法是通过编程器把Intel Hex,或者二进制文件.bin逐字节写入ROM。而图像都具有固定的格式,如BMP,JPEG,GIF等,其中的BMP格式图像是一种很常见的图像格式,没有经过压缩处理,且文件结构相对简单,易于处理,在本设计中采用了BMP图像作为研究对象。将BMP文件直接转化为Intel Hex文件比拟困难,因此可先将BMP格式文件转化成mif格式文件,再由Quartus II 9.0直接将mif文件转化为Intel Hex文件,最后再将图像数据烧写入ROM中,本设计中,我们首先通过MATLAB将要显示的图片进行处理得到RGB三个颜色的分量,然后通过编程将各颜色分量生成一个mif文件,用于初始化LPM_ROM,利用Quartus II 9.0自带的MegaWizard Plug-In Manager创立存储RGB值的ROM模块, 同样利用Quartus II 软件生产一个存储器初始化.mif文件,其大小为Word size=32,Number of words =16384,将生产的RGB颜色值导入到mif

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论