十四、基于FPGA的SDI协议介绍(二)

上一文主要介绍了SDI中的PAL格式,本文主要基于XilinxFPGA的sdi IP使用展开介绍

1,SDI IP 支持协议

    SD-SDI :   PAL    NTSC
    HD-SDI :   SMPTE_274   SMPTE_296  SMPTE_260  SMPTE_2048
    3G-SDI :   SMPTE_274   SMPTE_296  SMPTE_428  SMPTE_2048

2,HD-SDI   smpte 274介绍
    分辨率 :  1920*1080 
    频率:1080p@30HZ,或者1080i@60HZ    74.25Mhz
    频率:1080p@60HZ    148.5Mhz
    行:280+1920
    列:(根据扫描方式不同,有效数据的位置不同):隔行(20+540+23+540+3)  顺序(41+1080+4)

3 ,SDI接收通道

  3.1  SDI 接收架构

 3.2 信号说明

    rx_usrclk         :(in) 接收通道的时钟输入;  3G: 148.5MHz   HD: 74.25MHz   SD: 使用内部收发器时为148.5MHz,外部收发器时为27Mhz;
    rx_rst            :(in) rx_usrclk的同步复位;
    rx_data_in(20bit) :(in) HD和3G的数据输入;  
    rx_sd_data_in     :(in) SD数据输入;
    rx_sd_data_strobe :(in) SD模式下的数据输入有效;
    rx_frame_en       :(in) 生成帧使能;
    rx_mode_en(3bit)  :(in) 模式使能;     [0]--HD [1]--SD [2]--3G 
    rx_mode   (2bit)  :(out)模式锁定输出; 00-HD   01-SD   10 --3G
    rx_mode_HD/SD/3G  :(out)模式类型状态输出;
    rx_mode_locked    :(out)模式锁定;
    rx_mode_detect_en :(in) SDI模式检测使能,检测传入的数据流,判断是SD,HD,3G;
    rx_forced_mode(2bit):(in)固定模式类型配置; 00-HD   01-SD   10 --3G
    rx_bit_rate       :(in) 配置接收速率; HD: 0-1.485Gb/s 1-1.485/1.001Gb/s  3G: 0-2.97Gb/s 1-2.97/1.001Gb/s
    rx_t_locked       :(out)数据格式相关锁定
    rx_t_family(4bit) :(out)数据格式; 0000(1920*1080)--SMPTE ST 274  0001(1280*720)--SMPTE ST 296  0010(2048*1080)--SMPTE 2048-2  0011(1920*1080)--SMPTE 295 1000(720*486)--NTSC  1001(720*576)--PAL
    rx_t_rate(4bit)   :(out)帧频; 0001--23.98  0011--24  0100--47.95  0101--25  0110--29.97  0111--30  1000--48  1001--50  1010--59.94  1011--60
    rx_t_scan         :(out)隔行扫描传输还是依次传输标识; 0-隔行  1-依次
    rx_level_b_3G     :(out)表明3G传输为B级,只在rx_mode_3G有效的情况下有效;
    rx_ce_sd          :(out)SD模式下的时钟使能;
    rx_nsp            :(out) 
    rx_line_a(11bit)  :(out)HD或3G模式下的行号;
    rx_a_vpid(32bit)  :(out)数据流1中的ST 352数据包;
    rx_a_vpid_valid   :(out)数据包有效
    rx_b_vpid(32bit)  :(out)数据流2中的ST 352数据包,仅3G模式下有效;
    rx_b_vpid_valid   :(out)数据包有效
    rx_crc_err_a      :(out)数据流中的CRC检测错误标识,对于3G-B模式下仅对数据流1有效;
    rx_ds1a(10bit)    :(out) SD:Y/C数据流  HD:Y 数据流   3G-A: 数据流1   3G-B_DL:数据流1-linkA  3G-B_DS:HD信号1 Y数据流
    rx_ds2a(10bit)    :(out) SD:不使用     HD:C 数据流   3G-A: 数据流2   3G-B_DL:数据流2-linkA  3G-B_DS:HD信号1 C数据流
    rx_eav            :(out)EAV输出标识
    rx_sav            :(out)SAV输出标识
    rx_trs            :(out)从3FF到EAV/SAV输出4拍高;
    rx_line_b(11bit)  :(out)3G-B模式下,linkB或HD信号2的Y数据流行号; 
    rx_dout_rdy_3G    :(out)在3G-B模式下,输出74.25M,可作时钟使用;其余模式均输出高;
    rx_ds1b(10bit)    :(out) 3G-B_DL:数据流1-linkB  3G-B_DS:HD信号2 Y数据流;
    rx_ds2b(10bit)    :(out) 3G-B_DL:数据流2-linkB  3G-B_DS:HD信号2 C数据流;
    rx_crc_err_b      :(out)3G-B模式下有效,linkB或HD信号2数据流CRC校验错误;

4 ,SDI发送通道

  4.1 SDI 发送架构

4.2 发送端口
    tx_usrclk         :(in) 发送通道的时钟输入;  3G: 148.5MHz   HD: 74.25MHz   SD: 使用内部收发器时为148.5MHz,外部收发器时为27Mhz;
    tx_ce (3bit)      :(in) 在HD和3G模式下始终为高电平;
    tx_din_rdy        :(in) 对SD HD 3G-A模式下一直为高,3G-B模式下间隔一个周期断言一次;
    tx_rst            :(in) tx_usrclk的同步复位;
    tx_mode(2bit)     :(in)  00-HD   01-SD   10 --3G
    tx_level_b_3G     :(in) 3G模式下,配置A或B; 低-A, 高-B;
    tx_insert_crc     :(in) 输入为高时,在HD和3G模式下发送器增加CRC值;
    tx_insert_ln      :(in) 输入为高时,在每个EAV后插入行号,行号在tx_line_a和tx_line_b端口上提供,HD和3G模式有效,SD忽略;
    tx_insert_edh     :(in) 输入为高时,插入EDH数据包,SD模式有效,HD和3G无效;
    tx_insert_vpid    :(in) 输入为高时,插入ST 352数据包,SD和HD可选,3G和双路HD必须有;
    tx_overwrite_vpid :(in) 输入为高时,ST 352数据包被覆盖,否则不变;
    tx_video_a_y_in(10bit)  :(in) SD:Y/C数据流  HD:Y 数据流   3G-A: 数据流1   3G-B_DL:数据流1-linkA  3G-B_DS:HD信号1 Y数据流 
    tx_video_a_c_in(10bit)  :(in) SD:不使用     HD:C 数据流   3G-A: 数据流2   3G-B_DL:数据流2-linkA  3G-B_DS:HD信号1 C数据流 
    tx_video_b_y_in(10bit)  :(in) 3G-B_DL:数据流1-linkB  3G-B_DS:HD信号2 Y数据流;
    tx_video_b_c_in(10bit)  :(in) 3G-B_DL:数据流2-linkB  3G-B_DS:HD信号2 C数据流;
    tx_line_a(11bit)  :(in)HD或3G模式下的行号;
    tx_line_b(11bit)  :(in)3G-B模式下,linkB或HD信号2的Y数据流行号; 
    tx_vpid_byte1(8bit) :(in) ST 352 包第一个数据
    tx_vpid_byte2(8bit) :(in) ST 352 包第二个数据
    tx_vpid_byte3(8bit) :(in) ST 352 包第三个数据
    tx_vpid_byte4a(8bit):(in) ST 352 包第四个数据, 对于3G-B和双链路HD模式的A
    tx_vpid_byte4b(8bit):(in) ST 352 包第四个数据, 对于3G-B和双链路HD模式的B
    tx_vpid_line_f1(11bit) :(in) ST 352包插入行号的HANC空间
    tx_vpid_line_f2(11bit) :(in) ST 352包插入行号的HANC空间
    tx_vpid_line_f2_en     :(in) 控制ST 352是否插入f2行;
    tx_ds1a_out(10bit)    :(out) SD:Y/C数据流  HD:Y 数据流   3G-A: 数据流1   3G-B_DL:数据流1-linkA  3G-B_DS:HD信号1 Y数据流
    tx_ds2a_out(10bit)    :(out) SD:不使用     HD:C 数据流   3G-A: 数据流2   3G-B_DL:数据流2-linkA  3G-B_DS:HD信号1 C数据流
    tx_ds1b_out(10bit)    :(out) 3G-B_DL:数据流1-linkB  3G-B_DS:HD信号2 Y数据流;
    tx_ds2b_out(10bit)    :(out) 3G-B_DL:数据流2-linkB  3G-B_DS:HD信号2 C数据流;
    tx_use_dsin           :(in)  控制使用ds1a/da2a ds1b/da2b端口数据; 
    tx_ds1a_in(10bit)     :(in) SD:Y/C数据流  HD:Y 数据流   3G-A: 数据流1   3G-B_DL:数据流1-linkA  3G-B_DS:HD信号1 Y数据流
    tx_ds2a_in(10bit)     :(in) SD:不使用     HD:C 数据流   3G-A: 数据流2   3G-B_DL:数据流2-linkA  3G-B_DS:HD信号1 C数据流
    tx_ds1b_in(10bit)     :(in) 3G-B_DL:数据流1-linkB  3G-B_DS:HD信号2 Y数据流;
    tx_ds2b_in(10bit)     :(in) 3G-B_DL:数据流2-linkB  3G-B_DS:HD信号2 C数据流;
    tx_sd_bitrep_bypass   :(in) 使用内部收发器时,为低;
    tx_txdata             :(out) 发送器数据输出端口, SD模式时使用高10bit;
    tx_ce_align_err       :(out) SD模式下切tx_sd_bitrep_bypass为低有效

5 SDI IP 例化参考

  smpte_sdi_ip smpte_sdi_ip_inst (
        .rx_rst             (rx_rst         ),
        .rx_usrclk          (rx_clk         ),         //rx
        .rx_data_in         (rx_data        ),
        .rx_sd_data_in      (10'd0          ),
        .rx_sd_data_strobe  (1'b0           ),
        .rx_frame_en        (1'b1           ),
        .rx_mode_en         (3'b010         ),
        .rx_mode            (rx_mode        ),
        .rx_mode_hd         (               ),
        .rx_mode_sd         (               ),
        .rx_mode_3g         (               ),
        .rx_mode_detect_en  (1'b0           ),
        .rx_mode_locked     (               ),
        .rx_forced_mode     (2'b00          ),
        .rx_bit_rate        (1'b0           ),
        .rx_t_locked        (rx_t_locked    ),
        .rx_t_family        (rx_t_family    ),
        .rx_t_rate          (rx_t_rate      ),
        .rx_t_scan          (rx_t_scan      ),
        .rx_level_b_3g      (               ),
        .rx_ce_sd           (               ),
        .rx_nsp             (               ),
        .rx_line_a          (rx_line_a      ),
        .rx_a_vpid          (               ),
        .rx_a_vpid_valid    (               ),
        .rx_b_vpid          (               ),
        .rx_b_vpid_valid    (               ),
        .rx_crc_err_a       (               ),
        .rx_ds1a            (rx_ds1a        ),
        .rx_ds2a            (rx_ds2a        ),
        .rx_eav             (rx_eav         ),
        .rx_sav             (rx_sav         ),
        .rx_trs             (rx_trs         ),
        .rx_line_b          (               ),
        .rx_dout_rdy_3g     (               ),
        .rx_crc_err_b       (               ),
        .rx_ds1b            (               ),
        .rx_ds2b            (               ),
        .rx_edh_errcnt_en   (0              ),
        .rx_edh_clr_errcnt  (0              ),
        .rx_edh_ap          (               ),
        .rx_edh_ff          (               ),
        .rx_edh_anc         (               ),
        .rx_edh_ap_flags    (               ),
        .rx_edh_ff_flags    (               ),
        .rx_edh_anc_flags   (               ),
        .rx_edh_packet_flags(               ),
        .rx_edh_errcnt      (               ),
        .tx_rst             (tx_rst         ),
        .tx_usrclk          (tx_clk         ),
        .tx_ce              (3'b111         ),
        .tx_din_rdy         (1'b1           ),
        .tx_mode            (2'b00          ),
        .tx_level_b_3g      (1'b0           ),
        .tx_insert_crc      (1'b1           ),
        .tx_insert_ln       (1'b1           ),
        .tx_insert_edh      (1'b0           ),
        .tx_insert_vpid     (1'b0           ),
        .tx_overwrite_vpid  (1'b0           ),
        .tx_video_a_y_in    (tx_video_a_y_in),
        .tx_video_a_c_in    (tx_video_a_c_in),
        .tx_video_b_y_in    (10'd0          ),
        .tx_video_b_c_in    (10'd0          ),
        .tx_line_a          (tx_line_a      ),
        .tx_line_b          (11'd0          ),
        .tx_vpid_byte1      (8'd0           ),
        .tx_vpid_byte2      (8'd0           ),
        .tx_vpid_byte3      (8'd0           ),
        .tx_vpid_byte4a     (8'd0           ),
        .tx_vpid_byte4b     (8'd0           ),
        .tx_vpid_line_f1    (11'd0          ),
        .tx_vpid_line_f2    (11'd0          ),
        .tx_vpid_line_f2_en (1'b0           ),
        .tx_ds1a_out        (               ),
        .tx_ds2a_out        (               ),
        .tx_ds1b_out        (               ),
        .tx_ds2b_out        (               ),
        .tx_use_dsin        (1'b0           ),
        .tx_ds1a_in         (10'd0          ),
        .tx_ds2a_in         (10'd0          ),
        .tx_ds1b_in         (10'd0          ),
        .tx_ds2b_in         (10'd0          ),
        .tx_sd_bitrep_bypass(1'b0           ),
        .tx_txdata          (tx_data        ),
        .tx_ce_align_err    (               )
    );
  • 11
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值