原创 基于Verilog的VGA驱动设计(一)VGA时序分析

2009-4-13 17:55 9446 6 7 分类: FPGA/CPLD

基于VerilogVGA驱动设计(一)VGA时序分析<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


VGA时序分析


电阻DAC转换网络和640X480VGA时序图:


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


 


点击看大图


                                                                  1


 


扫描频率


显示器采用光栅扫描方式,即轰击荧光屏的电子束在CRT屏幕上从左到右(受水平同步信号HSYNC控制)、从上到下(受垂直同步信号VSYNC控制)做有规律的移动。光栅扫描又分逐行扫描和隔行扫描。电子束采用光栅扫描方式,从屏幕左上角一点开始,向右逐点进行扫描,形成一条水平线;到达最右端后,又回到下一条水平线的左端,重复上面的过程;当电子束完成右下角一点的扫描后,形成一帧。此后,电子束又回到左上方起点,开始下一帧的扫描。这种方法也就是常说的逐行扫描显示。


 


Horizonal Timing


 

230270fd-40f1-4e9c-83a0-bb3fef9d0921.JPG

                      2


 

A (us) Line Period

B (us) Sync pulse lenght 

C (us) Back porch

D (us) Active video time

E (us) Front porch

 

Vertical Timing



edfe26b7-5b3d-406b-baad-2cbf2ef30c85.JPG


3


 

O (ms) Frame Period

P (ms) Sync length

Q (ms) Back porch

R (ms) Active video time

S (ms) Front porch


 


Horizonal timing information  水平扫描时序


 



09e79845-dea9-41a8-bf57-626c6ba3c060.JPG


4


Notes:


·                     Active area is actually an active area added with 6 overscan border pixels (in some other VGA timing tables those border pixels are included in back and front porch)


 


Vertical timing information   垂直扫描时序


 



点击看大图


5


Notes:


·                     Active area is actually an active area added with 4 overscan border lines (in some other VGA timing tables those border lines are included in back and front porch)


·                     Note than when the active part of VGA page is widened, it passes by the rising edge of the vertical sync signal in some modes (marked with *)


 


 


根据上面的水平和垂直扫描时序可以分析显示800x600模式,FPGA系统时钟采用Spartan-3E Starter Kit板上的50MHz的有源晶振。为了显示器显示效果好,采用刷新频率为72Hz


 


以下以系统时钟频率为50MHz,显示器显示800x600模式为例分析水平扫描和垂直扫描时序:系统时钟周期为1/50MHz=20ns


水平扫描Horizonal(Line)


 

 efa58ad4-ffb8-48cd-9f26-1ff9f2d89024.JPG



 


A 水平(行)周期为1040个像素(Pix),时间为1040x20ns=20.8us


B 同步脉冲为120像素(Pix);


C 后沿为61个像素(Pix)


D 有效时间为806个像素(Pix)


E 前沿为53个像素。


 


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


////////// 水平扫描参数的设定


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////parameter LinePeriod =12'd1040;


parameter H_SyncPulse=10'd120;


parameter H_BackPorch=10'd61;


parameter H_ActivePix=10'd806;


 


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


////////// 水平扫描计数


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


always @ (posedge clk or negedge rst_n)


       if(!rst_n) x_cnt <= 1;


       else if(x_cnt == LinePeriod) x_cnt <= 1;


       else x_cnt <= x_cnt+ 1;


 


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


////////// 水平扫描信号hsync产生


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


always @ (posedge clk or negedge rst_n)


       if(!rst_n) hsync_r <= 1'b1;


       else if(x_cnt == 1) hsync_r <= 1'b0;   //产生hsync信号


       else if(x_cnt == H_SyncPulse) hsync_r <= 1'b1;


 


垂直扫描Vertical(Frame)



 


1baf98a6-19d4-4793-8d00-b284e772acfa.JPG


O 垂直扫描周期为666个行扫描,时间为666x1040x20ns=13853us


P 同步脉冲为6个行扫描,时间为6x1040x20ns=125us


Q 后沿为21个行扫描,时间为21x1040x20ns=436us


R 有效时间为604个行扫描,时间为604x1040x20ns=12563us


S 前沿为35个行扫描,时间为35x1040x20ns=728us


 


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


////////// 垂直扫描参数的设定


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


parameter FramePeriod="10"'d666;


parameter V_SyncPulse=10'd6;


parameter V_BackPorch=10'd21;


parameter V_ActivePix=10'd604;


 


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


////////// 垂直扫描计数


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


always @ (posedge clk or negedge rst_n)


       if(!rst_n) y_cnt <= 1;


       else if(y_cnt == FramePeriod) y_cnt <= 1;


       else if(x_cnt == LinePeriod) y_cnt <= y_cnt+1;


 


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


////////// 垂直扫描信号hsync产生


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


always @ (posedge clk or negedge rst_n)


       if(!rst_n) vsync_r <= 1'b1;


       else if(y_cnt == 1) vsync_r <= 1'b0;    //产生vsync信号


       else if(y_cnt == V_SyncPulse) vsync_r <= 1'b1;


 


 


并不是每个像素都能显示的,只有在有效区域像素区域内才能显示RGB


 


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


////////// 垂直扫描信号hsync产生


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


wire valid;                 //有效显示区标志


assign valid =


(x_cnt >= (H_SyncPulse+H_BackPorch)) &&


(x_cnt < (H_SyncPulse+H_BackPorch+H_ActivePix)) &&


(y_cnt >= (V_SyncPulse+V_BackPorch)) &&


(y_cnt < (V_SyncPulse+V_BackPorch+V_ActivePix));


 


 


    下面是测量逐行扫描60HZ的电视盒的VGA时序波形:


 


38e6aa39-ed9e-4e01-8272-0ee0df489d75.jpg


6水平垂直同步信号


 



1090e488-023f-4796-9d39-143e22ca5b36.jpg


7水平垂直同步信号


 


              606e6c8e-2b70-4ead-a66a-b6be93e08af5.jpg



8 RED-BLUE颜色信号


 



9ee699d3-cbf8-41fc-86e4-8b89deeef22d.jpg


9水平同步-R颜色


 



5c7c83fb-29ac-4a14-9648-25c20b810c46.jpg


10颜色R-垂直同步


 


点击看大图



11


初步整理的时序
行周期32us(频率31.3Hz
行同步脉冲时间7us
场频率60Hz


 


参考资料


1VGA Signal Generation with the XS Board


2CPLD驱动VGA显示器


http://blog.21ic.com/user1/636/archives/2007/43935.html


(图1


3VGA timing information


http://www.epanorama.net/documents/pc/vga_timing.html


(图2、图3、图4、图5


4)瑞芯科技设计示例RHic013 使用FPGA控制VGA显示


5VGA Controller,Altium


6) VGA接口时序波形


http://www.dzsc.com/dzbbs/20070204/200765205519734395.html


(6、图7、图8、图9、图10、图11)

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2014-8-9 21:45

请问你的那个水平同步信号是不是错了呢,不是负电平吗

相关推荐阅读
藤井树 2015-10-12 14:43
印制电路板的抗干扰设计 zz
印制电路板的抗干扰设计     作者:中船重工集团第707所 肖麟芬   摘   要:本文以印制电路板的电磁兼容性为核心,分析了电磁干扰的产生机理...
藤井树 2013-10-22 15:32
2010.5.30 黄草梁上包饺子一日登山活动——摘韭菜篇
        上次桃花节的时候也有野韭菜,那时候的我连草和韭菜叶分不清,才回去的韭菜也不敢吃,哈哈,这次可算真正见识了韭菜,黄草梁也叫韭菜梁,因为满山遍野都是野韭菜而闻名,比较圆比较粗的就是野韭...
藤井树 2013-10-22 15:28
2010.5.30 黄草梁上包饺子一日登山活动——包饺子篇
摘韭菜回来,大家已经忙开了 我也装模作样地“工作着” 哈哈,还不让我包,包饺子是技术活,一定要皮薄馅厚才有资格包,像我这样的只能旁观了 摘的韭菜应该足够了,旁边那个袋子是我摘来带回学校的 ...
藤井树 2013-08-09 15:19
datasheet下载网站整理(查IC芯片手册)【原创】
*************************************************************************         作为电子工程师,芯片的dat...
藤井树 2010-06-04 00:21
陈伟宁王辉一家捐助渠道(北京菲亚特—英菲尼迪)
       王辉的最新消息请关注 http://chenweining.org/       目前事故责任认定已经出来了——陈家全责。        发信人: program (程序), 信区: D...
藤井树 2010-06-01 13:43
2010.5.30 黄草梁上包饺子一日登山活动——美景篇
这天不得不说的是天空,蓝蓝的天空,白白的云    绿油油的山脊  我、洪涛哥哥、huangna妹妹还有她同事小艾走在黄草梁上    在蓝天白云下合影       阳光照过来,景色真美 象鼻山,走不...
EE直播间
更多
我要评论
1
6
关闭 站长推荐上一条 /3 下一条