博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于System Generator实现Xilinx FPAG VGA显示
阅读量:6948 次
发布时间:2019-06-27

本文共 1137 字,大约阅读时间需要 3 分钟。

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

         首先应当先了解vga显示的时序问题,只有清楚了解vga显示图像的规则,才能用FPGA显示图像。这个博客上讲的比较清楚,在此不做过多介绍,只是接下来想用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。

转载地址:http://vohnl.baihongyu.com/

你可能感兴趣的文章
Python list 数据类型:列表
查看>>
Android利用Fiddler进行网络数据抓包
查看>>
小程序笔记
查看>>
HDU 6521 Party
查看>>
tkinter内嵌Matplotlib系列(二)之函数曲线绘制
查看>>
using Static library in iOS
查看>>
通过SMTP协议来发送邮件
查看>>
paoding-rose 之 maven配置
查看>>
Prometheus TSDB分析
查看>>
JavaScript系列:函数式编程(开篇)
查看>>
Ural 1018 (树形DP+背包+优化)
查看>>
ZOJ 3626(树形DP+背包+边cost)
查看>>
入驻博客园了
查看>>
Map集合
查看>>
poj 2663 Tri Tiling (状压dp+多米诺骨牌问题+滚动数组反思)
查看>>
Linux 小知识翻译 - 「BitTorrent」
查看>>
spark java api数据分析实战
查看>>
计算机学院大学生程序设计竞赛(2015’12) 1001 The Country List
查看>>
CodeForces 689E Mike and Geometry Problem
查看>>
Netty是什么?
查看>>