视频行场信号转 bt1120方案.

原创 2015年11月20日 11:03:42

        我们先看下下面的架构图,HDMI 4k@30hz,想进3536没有找到相应的芯片转为 bt1120.FPGA就充当了转化作用。 Xilinx最近出了一个Hdmi_ipcore.就想把他用起来。所以就有下面的架构图。我要做的工作其中之一就是要把 标准的视频VESA信号转为 BT1120出去.




现在我要做的就是把TTL(YCbCr 4:2:2)转为 BT1120给海思3531。我把思路说一下:

如上图所示,当收到第一个nvsync下降沿,然后 de 上升沿的时候,开始计数。这样就可以在相应的位置上填上相应的标志位和有效像素。当然需要用到状态机。


最后我附上,之前写的testbench关于1920 x 1080 @ 60hz.VESA标准。

`timescale  1 ps/1ps  
module tb;  



parameter H_D0 = 88;
parameter H_D1 = 44;
parameter H_D2 = 148;
parameter H_D = 1920;

parameter V_D0= 4;
parameter V_D1 = 5;
parameter V_D2 = 36;
parameter V_D = 1080;




reg                   clock_source;
reg                   clk_rd;
reg                   reset_n;
reg                   de_rd;
reg                   nhsync_rd;
reg                   nvsync_rd;
reg   [11:0]          hcounter_rd;
reg   [11:0]          vcounter_rd;
reg   [15:0]          data_input_a;
wire                de_rd_dly;
wire                nhsync_rd_dly;
wire                nvsync_rd_dly;
wire   [15:0]       data_input_a_dly;
wire   [15: 0]      bt_data_o;


always #3367  clk_rd = ~clk_rd;

initial 
  begin
    clk_rd = 0;
  	 clock_source =  0;
    reset_n = 0;
    #200000;
    reset_n = 1;
  end
 
//GSR GSR_INST (.GSR(1'b1));  
//PUR PUR_INST (.PUR(1'b1)); 


always @(posedge clk_rd or negedge reset_n)
begin
  if (~reset_n)
    hcounter_rd <= 12'b0;
  else if (hcounter_rd == (H_D + H_D0 + H_D1 + H_D2 - 1)) 
    hcounter_rd <= 12'b0;
  else
    hcounter_rd <= hcounter_rd + 12'h1;
end

always @(posedge clk_rd or negedge reset_n)
begin
  if (~reset_n)
    vcounter_rd <= 12'h0;
  else if ((vcounter_rd == (V_D + V_D0 + V_D1 + V_D2 - 1))  && (hcounter_rd == (H_D + H_D0 + H_D1 + H_D2 - 1)))
    vcounter_rd <= 12'h0;
  else if (hcounter_rd == (H_D + H_D0 + H_D1 + H_D2 - 1))  ////
    vcounter_rd <= vcounter_rd + 12'h1;
end

always @(posedge clk_rd)
begin
 if (((vcounter_rd >= V_D1 + V_D2 + V_D0) && (vcounter_rd < (V_D + V_D1 + V_D2 + V_D0))) && (hcounter_rd >= H_D0 + H_D1 + H_D2 -1) && (hcounter_rd < H_D0 + H_D1 + H_D2 + H_D - 1)) // 280 
    de_rd <= 1'b1;
  else
    de_rd <= 1'b0;
end



always @(posedge clk_rd or negedge reset_n)
begin
  if (~reset_n)
    data_input_a <= 16'h0;   // 1121    41
  else if (((vcounter_rd >= V_D1 + V_D2 + V_D0) && (vcounter_rd < (V_D + V_D1 + V_D2 + V_D0))) && (hcounter_rd >= H_D0 + H_D1 + H_D2 -1) && (hcounter_rd < H_D0 + H_D1 + H_D2 + H_D - 1)) // 280 
    data_input_a <=  data_input_a + 16'h2;    
end





always @(posedge clk_rd)
begin
 if ((hcounter_rd >= H_D0 -1) && (hcounter_rd < H_D0 + H_D1 - 1))
    nhsync_rd <= 1'b1;
  else
    nhsync_rd <= 1'b0;
end

always @(posedge clk_rd)
begin
if (((vcounter_rd < V_D0 + V_D1) && (vcounter_rd > V_D0)) || ((vcounter_rd == V_D0) && (hcounter_rd >= H_D0 -1)) || ((vcounter_rd == V_D0 + V_D1) && (hcounter_rd < H_D0 -1)))
    nvsync_rd <= 1'b1;
  else
    nvsync_rd <= 1'b0;
end

/*
bt_rx U_BT(
	      .reset_n(reset_n),
		  .clk(clk_rd),
	      .de_i(de_rd),
          .nhsync_i(nhsync_rd),
          .nvsync_i(nvsync_rd),
          .ycbcr_i(data_input_a),
		  .bt_data_o(bt_data_o)
				);
*/
endmodule






版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

BT1120接口及协议

因为项目上用到的是 海思3536的bt1120接口对接 FPGA。项目上用到的是 1920 x 1080,60Hz.逐隔.                ...

BT656/BT601/BT1120协议以及DM365/DM355/DM6467上使用的YUV颜色空间说明

ITU-R BT.601和ITU-RBT.656国际电信联盟(International Telecommunication Union)无线通信部门(ITU-R)制定的标准。严格来说,ITU-R...
  • maopig
  • maopig
  • 2012-01-03 18:28
  • 16949

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

yuv 4:2:2 编码为 bt1120

最近 做个项目,要把 1080p的yuv 4:2:2 转为 bt1120,搞了好长时间终于搞定了。图像正常显示了              基本思路写一下: /******************...

OnOk,OnCeal ,onClose Ondestry

第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDestroy()是CWnd基类的成员函数,即WM消息响应函数。从应用程序结构的角度,拿对话框来说,红...

入门视频采集与处理(显示YUV数据)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ticktick.blog.51cto.com/823160/568928 ...

Bt656的数据格式

标准BT.656并行数据结构 BT.656并行接口除了传输4:2:2的YCbCr视频数据流外,还有行、列同步所用的控制信号。,一帧图像数据由一个625行、每行1 728字节的数据块组成。其中,23~3...

Video4Linux2第一部分 API: 简介

原文地址:http://lwn.net/Articles/203924/The Video4Linux2 API: an introduction [Posted October 11, 2006 ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)