基于System Generator实现Xilinx FPAG VGA显示

    最近想做关于图像处理方面的东西。所以就首先想到用 Nexys™3 Spartan-6 FPGA Board 实验板做一个VGA显示的例子。

         首先应当先了解vga显示的时序问题,只有清楚了解vga显示图像的规则,才能用FPGA显示图像。http://blog.csdn.net/engelbert/article/details/6393715这个博客上讲的比较清楚,在此不做过多介绍,只是接下来想用System Generator练练手实现它罢了。做这个小例子其实也是参考了小豪同学的verilog代码,在此感谢!

前调函数如上图所示,用来配置vga显示图像的格式,方便模块变量的初始化。

 

     上图就是产生vga信号: HSYNC Signal, VSYNC Signal, RGB Signa的框图,通过WaveScope观察波形无误后,就可以生产正确的hdl代码了。关键操作就是不断根据时序要求进行分频计数而已。

Rst_P是系统复位信号,是要对整个系统中有锁存功能的模块就行复位的输入信号(一般带有 Z-1的延迟模块,ram和rom模块都具有锁存功能)。双击Counter_H打开就可以看到内部设置,勾选synchronous(同步复位)后,就会有rst这个输入信号了。引用某本书的话来讲:毛刺是数字电路的天敌,只要用逻辑电路,就会有毛刺发生,采用同步电路,可以有效避免毛刺的影响。

     根据行扫描地址和列扫描地位,配置输出vga信号R3_G3_B2。MCode如下:

 

Red信号3位,Green信号3位,Blue信号2位的格式,这是根据开发板vga硬件接口rgb数据格式定义的

板子最高电压3.3V。以RED信号为例,U7,V7,N7全部输出1的时候,用万用表量是3.3V,而普通显示器R的最大电压感觉应该是5V以上(具体多少不知道,只是量到4.89V),这么说用Nexys™3 Spartan-6 FPGA Board的VGA输出的图像,注定颜色共256种(2的八次方),颜色也稍显暗淡。高三位[7:5]红色,中间三位[4:2]绿色,低两位[1:0]蓝色。

当仿真观察波形无误后,就可以用System Generator生产HDL代码了,具体操作如流水灯实例操作一样,在此不再讲了。

       代码生成后,就可以关掉matlab,打开ise建立工程,加上一个49M输出的时钟配给生成模块的clk信号,分配下响应的引脚,整个工程就可以了。

UCF文件如上。

          最终显示在电脑屏幕上的效果如上图所示。(照相机闪光忘记关掉了,中间有个光圈。)

 

 

         其实最终想显示一张800*600的图像,但是片内的BlcokRam实在放不下那么多数据,换成Virtex5的板子也不够用,坑爹啊。只好以后考虑片外存储器存储图像了。片外存储器我不会操作啊,求高手指导啊。

         方便大家下载,已把这个工程所有文件上传至PUDN。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值