VGA接口实验1--时序分析

---->>> VGA驱动主要涉及到以下几个技术方面:

             (1)像素映射(像素填充)

             (2)颜色平面

             (3)水平、垂直同步信号

---->>> 以640*480(即VGA显示标准)刷新率60Hz 为例,来讲解时序实现。

--->>>  这个网站中有各种显示模式下的时序参数

             http://www.tinyvga.com/vga-timing 

要得到一个正确的VGA输出,其关键问题就是要有精确的时序与数据定义。

--------------------------------------------------------------------------------------------------->>>>

VGA时序实现 

  首先,根据刷新频率确定主时钟频率,然后由主时钟频率和图像分辨率计算出行总周期数,

再把各时序段的时间按照主计数脉冲源频率折算成时钟周期数。在CPLD/FPGA中利用计数器,

以计算出的各时序段时钟周期数为基准,产生不同宽度和周期的脉冲信号,再利用它们的逻辑

组合构成各时序段以及D/A转换器的空白信号BLANK和同步信号SYNC。


----------------------------------------------------------------------------------------------------->>>

a (行消隐) , b(行消隐后沿),c(行显示),d(行消隐前沿)

--------------------------------------------------------------------------------------------------->>>>>

水平同步信号HSYNC使用一个负同步脉冲表示一行像素的开始时刻,到下一个负脉冲出现为一行像素的结束时刻。

实际的一行有效图像数据是在25.422us的时间窗口内发送的,而水平同步信号之间的间隔是31.77us。

没有图像数据发送的这段时间定义为消隐区,此时的图像为黑色

---------------------------------------------------------------------------------------------------->>>>

a (行消隐) , b(行消隐后沿),c(行显示),d(行消隐前沿)

---------------------------------------------------------------------------------------------------->>>

垂直同步信号VSYNC与水平同步信号相似,只不过其同步负脉冲表示整个一帧图像的开始和结束。

一帧图像的有效图像数据是在15.253227408143ms的时间窗口内发送的,而同步信号之间的间隔是16.683217477650ms。

---------------------------------------------------------------------------------------------------->>>

针对行同步信号

如果有25.422us的时间段来输出一行有效图像数据,做一些计算如下,640*480的VGA显示模式下

亦即待填充的640个像素需要在25.422us内发送给显示器。即每个像素的时间为 25.422us/640 = 39.71875ns。

可以算得最小时间单位是 25.175MHZ如上图参数所示,这个即驱动VGA时FPGA所需要的时钟频率.

注意:25.175MHZ的时钟不好配置,实际上用PLL配置成25M即可..

------------------------------

针对列同步信号

同理,如果有15.253227408143ms的时间段来输出一帧有效图像数据,做计算如下,640*480的VGA显示模式下

15.253227408143ms/480 = 0.031777557100ms。

可以算得完成填充一行640个有效像素数据的时间为0.031777557100ms,即每一行的频率为31.46875Khz,如上图所示。

----------------------------------------------------------------------------------------------------->>>>


--->> 不显示像素数据或电子束退回到行首开始新的水平扫描时,RGB信号需要置为黑色,即全为零。

--->> 一位网友提出的疑问关于VGA的显示问题如下

--->> http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4555878&bbs_page_no=1&bbs_id=1029

--->> 无论是行同步信号还是列同步信号,数据有效区并不是所有 区间而只是中间的一部分区间,所以应该设置

         一个valid信号用来表示计数到多少时,开始进入 显示数据有效区, 而在数据无效区间(消隐区间),VGA三个基色信号必须全部置0.

posted on 2011-05-14 10:11  o my god  阅读(3913)  评论(0编辑  收藏  举报

导航