RGB数字信号VESA标准时序verilog设计

RGB数字信号VESA标准时序verilog设计

RGB数字信号输出时序有严格标准,产生正确的时序信号可以为输出接口DVI VGA cameralink等视频图像接口芯片链接,实现图像视频源及播放等功能。

这部分设计重点在于理解RGB时序标准,了解图像传输和显示原理,熟悉分辨率,刷新频率,像素时钟,行、场同步信号,数据传输使能,RGB数据位。

详细的时序介绍如VESA时序规范标准,如图一所示,图中从左到右时序依次是同步时间,后消隐区,头边界,有效地址区(RGB数据位传输有效区),尾边界,前消隐这些是一次同步传输需要顺序,同步信号分行同步(horizontal水平),场同步(vertical垂直),如800×600@60hz,每传输800个有效像素数据产生(含消隐边界时间)产生一个行同步信号,等传输600个行同步信号后产生一个场同步信号,一场说明一幅图像已经传完,1S内传输60个这样的图像数据即60hz.

 

图一:VESA 时序图

 

 

具体实现过程是对像素时钟计数判断来实现时序控制,核心部分程序如下:

 

//

module To_Tp510(

 input [23:0]data_RGB,

 input clk,

 input en_work,

 output [23:0]data_all,

 output on_hsout_tp510,

 output on_vsout_tp510,

 output pixel_clk,

 output dout

 

 

   );

 

 

assign pixel_clk = clk;

 

///1920*1080 30hz  74.25MHZ  //800x600 60hz

reg [11:0] HTotal=2200; //1056;

reg [11:0] VTotal=1125; //628;

 

reg [9:0]  hsync=44; //128; //Sync   

reg [9:0]  hbporch=148; //88;//back porch + left border

reg [9:0]  hfporch=88; //40;//front porch + right border

 

reg [9:0]  vsync=5;  //4;   //Sync

reg [9:0]  vbporch=36;//23;//back porch + top border

reg [9:0]  vfporch=4;//1;//front porch + bottom border

 

 

reg [11:0]pixel_count=0;

reg [11:0]hsout_count=0;

reg hsout_tp510=0;

reg vsout_tp510=0;

 

assign on_hsout_tp510=hsout_tp510;

assign on_vsout_tp510=vsout_tp510;

 

//产生行信号

always@(posedge clk)

 if(en_work)

  begin

        if(pixel_count<HTotal)

          pixel_count=pixel_count+1;

        else

          pixel_count=0;

               

        if(pixel_count==HTotal)

          if(hsout_count<VTotal)

           hsout_count=hsout_count+1;

                else

                 hsout_count=0;

                 

   if (pixel_count<hsync)

                          hsout_tp510=0;      

                                                                                         

   else if( pixel_count>=hsync && pixel_count<HTotal )

                                            hsout_tp510=1;

  end

 

  

//产生场信号

 always @(posedge clk)

 begin

  begin

   if (hsout_count< vsync)

                          vsout_tp510<=0;    

                                                                                         

   else if( hsout_count>=vsync&& hsout_count<VTotal)

                          vsout_tp510<=1;

  end

 end

 

 

 reg dout2=0,dout3=0;

 assign dout=dout2&dout3;

 assign data_all= dout?data_RGB:1'bz;

 

 //下面两段程序共同决定什么可以发送数据

 always @(posedge clk)

 begin

 if(en_work)

  begin                                                      

   if( pixel_count>=(hsync+hbporch) &&pixel_count<(HTotal-hfporch) )

                                             dout2<=1;//行使能信号

        else

                                             dout2<=0;

  end

 end

 

 

always @(posedge clk)

 begin

 if(en_work)

   begin

    if( hsout_count>=(vsync+vbporch) &&hsout_count<(VTotal-vfporch) )

                                             dout3<=1;//场使能信号

          else

                                             dout3<=0;

   end

 end

 

 

endmodule

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值