本帖最后由 雾盈 于 2016-9-12 18:00 编辑
VGA显示8位彩色图片
雾盈 2016-9-12
雾盈FPGA笔记汇总目录
一、写在前面
这次讲VGA显示彩色图片,这篇写完,再写一篇怎么制作彩色图片mif文件的文章。
二、什么是VGA?
VGA(Video Graphics Array)是IBM在1987年随PS/2机一起推出的一种视频传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。不支持热插拔,不支持音频传输。
现在,台式电脑显示器大多用的就是VGA显示,连接线就是VGA线,是下图这种。
三、VGA的扫描方式
显示器扫描方式分为逐行扫描和隔行扫描:
逐行扫描是扫描从屏幕左上角一点开始,从左向右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT 对电子束进行消隐,每行结束时,用行同步信号进行同步;
当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧。
隔行扫描是指电子束扫描时每隔一行扫一线,扫完一屏后再返回来扫描剩下的线。
我们这里采用逐行扫描的方式。
四、时序分析
由于列同步时序和行同步时序是一样的,我就只画了一个列同步时序图,如下图:
我们可以从示意图可以看到,列行时序都需要同步脉冲(a 段),显示后沿(b 段)、显示时序段(c 段)和显示前沿(d 段)四部分。
也可以这样说一个列行扫描周期 e=(a+b+c+d)
注意:同步脉冲(a段)要求是低电平脉冲信号。
a ,b ,c, d, e 代表多长时间呢,我们看一下VGA显示参数标准,如下图:
我们这个设计,采用的是800*600*60 的显示模式。Pll时钟为40mhz
到这里这样我们就很容易的将行列的时序用verilog语言描述出来了。
五、框图
六、代码思路及解释
1)首先,写出行列扫描
列信号没扫描完毕一行时,行信号开始扫描一列,循环往复。
2)输出行列同步信号vga_row,vga_col
3)显示有效区域使能信号
4)输出目的显示区域使能信号送给rgb显示模块
5)rgb显示模块
只是一个地址计数器,和rom数据进入,通过rgb引脚输出显示。
注意的是,{3{a}}等同于{a,a,a}
后面附上源代码:
下一篇写,彩色图片mif制作。
|