[原创] 【七】【FPGA助学系列二】VGA(1)上帝说,要有光

kdy   2013-6-30 20:15 楼主
游客,如果您要查看本帖隐藏内容请回复
【FPGA助学系列二】
VGA(1)上帝说,要有光
1、名字的由来
Espier开发板推出已经有一段时间了,对于早前的LED和数码管的例子想必已经有些HOLD不住了。上帝创造世界时第一句话就说过:要有光。因此下一个折腾的接口就非VGA莫属了。
相较LED和数码管,VGA接口逻辑较为复杂和系统,因此我们分期分批推出教程,内容涵盖了:VGA接口说明、VGA显示驱动详解、九宫格色块、渐变色、BMP图像显示等,想较软件实现图像处理的能力而言,FPGA处理图形仅次于GPU,在灵活性方面甚至还有胜出;作为简易的图像接口设计应该是绰绰有余了。
2、准备工作
是不是感觉前期准备的2根电缆有一根20芯的没有用上啊?别急,今天它隆重登场了。
按下图进行有关图形显示的准备工作:请原谅低端摄像头夜拍的效果以及FPGA芯片周围的油脂状物体,那是还没清洗的助焊膏。
Ø  开发板的线缆连接状态,如下图:
1.JPG
                        图1
Ø  引脚对应关系,如下表(基本可视而不见):
2.JPG
图2
Ø  板上供给时钟频率为48Mhz,图像数据16位宽,其中用于红色显示5位,绿色显示6位,蓝色5位;RGB数据权位及排列方式如下:
3.JPG
图3
3、VGA的传说
如同江湖中久远的传说一样,自PC诞生起就有了VGA       VGA全称Video Graphic Array,也叫显示绘图阵列,是逐行扫描的显示制式,其支持的分辨率为640X480,对更高分辨率800X600,称为SVGA Super VGA)模式;1024X768称为XGA (Extended Graphics Array扩展图形阵列)
Ø  VGA时序分行时序和帧(场)时序,两者都包含同步脉冲(Sync a)、显示后沿(Back porch b)、显示时序段(Display interval c)和显示前沿(Front porch d)四个部分,图样如下:
4.JPG
图4
Ø  各种分辨率的行场同步时序如表xxxx所示,
5.JPG
图5
还是老样子,更多的知识诸君请百度之。
4、实战VGA之一九宫格色彩
4.1例程烧录
以九宫格形式显示7种色块,开始我们的第一个图形显示测试,本次采用倒叙的手法,先烧录例程中的二进制文件,再解析代码。
该实验通常用来测试图像显示功能是否能实现;该步骤的关键是看是否能产生规定的行场同步时序,即上表所作要求;
Ø  打开例程目录,开启例子工程;将其编译后下载到目标板,操作如下;
6.JPG
图6
Ø  或将编译后生成的.sof文件转换为.jic文件,下载到fpga外挂的flash中;使之可以在再次开电时,自加载代码而不需要电缆下载代码运行;转换方法如下:
7.JPG
图7
Ø  烧录.jic文件方法如下(烧录后,重新开电,fpga即自动加载flash中代码):
8.JPG
图8
Ø  显示效果如图,箭头有点复杂啊,请老手跳过,新手留步;
4.2代码解析
敲字艰难啊,例程就直接图片了啊,下面分段解析vga.v文件代码含义;
²  定义输入输出端口
9.JPG
图9
²  定义几个固定参数
10.JPG
图10
²  调用宏模块(下面会对具体生成作说明)
11.JPG
图11
²  同步信号产生
12.JPG
图12
²  确定哪个区域显示何种数据
13.JPG
图13
Ø  时钟宏模块的生成
         800*600@60hz画面生成所需的点频为40MHz,而输入却是48MHZ,这须要借助fpga内部锁相环,由宏模块管理器完成,具体如下:
²  进入MegaWizard Plug-In Manager宏模块生成窗,如下:
14.JPG
图14
²  选择宏模块类别,并定义模块名称,
15.JPG
图15
²  下一步,进入界面后设置输入时钟
16.JPG
图16
²  下一步,进入界面后清除如图的设置
17.JPG
图17
²  下一步,
18.JPG
图18
²  下一步,
19.JPG
图19
²  下一步,
20.JPG
图20
²  下一步,进入界面后设置输出时钟40mhz
21.JPG
图21
²  连续下一步,跳过c1~c4的时钟输出设置,如下
22.JPG
图22
²  下一步,进入界面
23.JPG
图23
²  是不是下一步烦了,点击finish吧,完成宏模块创建;
24.JPG
图24
Ø  图像显示效果如下图, 宽屏显示器就这效果,谁让咱习惯按4:3做呢,下面的实验中会有改变分辨率的实验,请期待。
25.JPG
图25
5、实战VGA之二渐变色
说实话,有了前面这么详细的讲解,我想,VGA对各位已经不成问题了吧,下面做一个显示器测试常用的实验,对RGB进行颜色渐变测试(分单色渐变和混色渐变),在这里该实验的目的,是验证由电阻阵列实现视频Da变换的有效性;而通常这个实验室用了测试显示器的灰度指标。
         打开相应例程,下载到目标板上,看到显示器产生效果如下; 代码自己理解,不难的。
26.JPG
图26
Net:Wxeda.taobao.com QQ:1035868547 Blog:https://home.eeworld.com.cn/space-uid-390804.html

回复评论 (18)

2推荐 shuishuo615 

资料上说九宫格和渐变色的请自行看代码,但是代码在哪啊?例程只有一个VGA的程序,是显示8个颜色的竖条的
点赞  2014-5-18 19:27
再一次吐槽论坛图片功能!贴到手发软,点到鼠标滚轮坏啊!!
另外有一个悲催的发现,板子上的行场同步信号的电容值焊错了!!!
C22和C23,请在板子背面近VGA插座处寻找,本意是行场同步滤波的,电容值太大了,直接去掉即可。
否则不亮。

[ 本帖最后由 kdy 于 2013-6-30 20:23 编辑 ]
Net:Wxeda.taobao.com QQ:1035868547 Blog:https://home.eeworld.com.cn/space-uid-390804.html
点赞  2013-6-30 20:18

回复 沙发kdy 的帖子

这个V1.20不用改对吧?
点赞  2013-8-9 16:53

6楼 kdy 

V120当然要改

只改管脚
Net:Wxeda.taobao.com QQ:1035868547 Blog:https://home.eeworld.com.cn/space-uid-390804.html
点赞  2013-8-9 18:47
hao   bu cuo                                       
点赞  2014-3-30 18:27

点赞  2014-5-17 14:38
强烈支持楼主ing
点赞  2014-5-18 19:54
mark!
点赞  2014-6-21 15:59
版主,您的淘宝店里的FPGA开发板能接OV7670这种摄像头吗?http://item.taobao.com/item.htm? ... Y69U&id=35595282676 本帖最后由 superdianzifans 于 2014-6-24 18:37 编辑
点赞  2014-6-24 18:36
版主,淘宝店的那款FPGA开发板能接OV7670吗?http://item.taobao.com/item.htm? ... Y69U&id=35595282676
点赞  2014-6-24 21:57
好好学习,,,,
点赞  2014-7-16 18:43
我也想要
点赞  2014-7-23 14:58
谢谢。这是我需要的。
点赞  2014-7-28 22:24
楼主,有九宫格的代码吗,光有图片实在是不行呀。
点赞  2014-8-8 22:23
好东西支持了
点赞  2014-8-19 13:47
看看,希望有用
点赞  2015-1-7 18:32
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复