原创 关于VGA的学习

2016-3-3 22:51 742 3 3 分类: FPGA/CPLD

     由于想要做图像采集,通过VGA来在电脑屏幕上显示。所以今天写了关于VGA的代码。

     1、关于VGA的硬件很简单,主要是5个信号端口:行同步信号、场同步信号、三色信号(R、G、B)。通过电阻匹配网络实现三色的数字信号到模拟信号的转换。

   2、VGA的扫描方式:从左上角的第一行开始扫描,用行同步控制信号(HSYNC)控制每列的点。每当一行扫描结束后,从下一行从左开始重新扫描,同时用行同步控制信号(HSYNC)进行控制。当所有的行扫描结束后,形成一帧,用场同步信号(VSYNC)进行同步控制。之后再进行下一帧的扫描。完成一行扫描的时间称为水平扫描时间,其倒数称为行频率;完成一帧(整屏)描的时 间称为垂直描时间,其倒数称为场频率,即刷新一屏的频率,常见的有 60Hz,75Hz 等等。 标准的 VGA 显示的场频 60Hz。

3、时钟频率:以1024*768@60Hz为例,每场对应806行周期,每行对应1344个列时钟点,因此需要点时钟频率为806*1344*60,最后为65MHz。

4、关于VGA的时序图

 

图1.jpg
图二.jpg
5、关于在写VGA的时序所遇到的问题:
    (1)行同步控制信号是以每行中的列点为基础,实现一行的行同步控制。同时还要注意虽然注明的是1024*768的分辨率,其实整个行同步信号分为四段:同步脉冲(Sync a)、显示后沿(Back porch b)、显示时序段(Display interval c)和显示前沿(Front porch d),其中1024只是显示时序段而已。
(2)同样,场同步信号是以行为基础,实现对一帧的场同步控制。也是分为四段,768只是有效的行而已。
(3)输出的三色信号需要使用条件算数符来实现输出,因为要在行列的有效区域内对三色信号的输出才是有效的,因此写成:
兔三.jpg
(4)在端口的输出是不能多值的驱动的,但在模块内部的信号,是可以多值驱动的。
(5)前面已经将VGA的工作频率说明,因此在模块中使用时钟的例话,将板子上的时钟倍频成65MHz。
   由于只是对VGA的书序有所了解,在屏幕显示的只是单色的白、红、绿、蓝的变化,代码已经上传。
 

 

   

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /3 下一条