博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SDI core端口说明

Posted on 2017-05-09 14:06  沉默改良者  阅读(1099)  评论(0编辑  收藏  举报

SDI core端口说明

本文基于赛灵思的官方文档以及自己的理解:

 

1.生成SDI core

 

2.得到SDI core的顶层文件,并对每个端口做出解释

smpte_sdi smpte_sdi (
  .rx_rst(rx_rst),                            // input wire rx_rst 此端口是用来复位SDI核的RX端口的,但是不能复位GTX的RX端口(不需要配置)
  .rx_usrclk(rx_usrclk),                      // input wire rx_usrclk  所有以rx_开头的信号都是与这个时钟同步
  .rx_data_in(rx_data_in),                    // input wire [19 : 0] rx_data_in 数据是从这个端口进入SDI核,只是HD-SDI,3G-SDI模式
  .rx_sd_data_in(rx_sd_data_in),              // input wire [9 : 0] rx_sd_data_in SD-SDI模式的数据从这个端口进入核,进入此端口的数据在发送器中就经过了DRU
  .rx_sd_data_strobe(rx_sd_data_strobe),      // input wire rx_sd_data_strobe 高电平时,表明rx_sd_data_in端口数据有效
  .rx_frame_en(rx_frame_en),                  // input wire rx_frame_en 通常情况置高电平,应该与SDI数据流的格式有关系
  .rx_mode_en(rx_mode_en),                    // input wire [2 : 0] rx_mode_en 接收模式使能,SD or HD or 3G
  .rx_mode(rx_mode),                          // output wire [1 : 0] rx_mode  输出接收数据的SDI是那种模式
  .rx_mode_hd(rx_mode_hd),                    // output wire rx_mode_hd     输出接收数据的模式
  .rx_mode_sd(rx_mode_sd),                    // output wire rx_mode_sd     输出接收数据的模式
  .rx_mode_3g(rx_mode_3g),                    // output wire rx_mode_3g     输出接收数据的模式
  .rx_mode_detect_en(rx_mode_detect_en),      // input wire rx_mode_detect_en  接收数据模式监测使能
  .rx_mode_locked(rx_mode_locked),            // output wire rx_mode_locked  这是一个接收数据模式锁定信号,先搜索,然后确定,确定模式后,最终会稳定在高电平
  .rx_forced_mode(rx_forced_mode),            // input wire [1 : 0] rx_forced_mode 可以自己设定SDI的模式,不过得先关闭SDI模式自动监测功能
  .rx_bit_rate(rx_bit_rate),                  // input wire rx_bit_rate  配置接收数据的比特率
  .rx_t_locked(rx_t_locked),                  // output wire rx_t_locked 当高电平时,表明已经监测到了收到的SDI信号的格式,与frame有关系
  .rx_t_family(rx_t_family),                  // output wire [3 : 0] rx_t_family 此信号显示的接收到的SDI信号是哪一类
  .rx_t_rate(rx_t_rate),                      // output wire [3 : 0] rx_t_rate 此信号显示的SDI信号有关速率的信息
  .rx_t_scan(rx_t_scan),                      // output wire rx_t_scan
  .rx_level_b_3g(rx_level_b_3g),              // output wire rx_level_b_3g   此信号用来判断3g-SDI信号的level
  .rx_ce_sd(rx_ce_sd),                        // output wire rx_ce_sd   时钟信号使能for SD-SDI模式,当SDI是其他模式时候,总是保持高电平
  .rx_nsp(rx_nsp),                            // output wire rx_nsp  与SDI信号的格式有关系,frame
  .rx_line_a(rx_line_a),                      // output wire [10 : 0] rx_line_a  line number
  .rx_a_vpid(rx_a_vpid),                      // output wire [31 : 0] rx_a_vpid  与SDI信号有关系
  .rx_a_vpid_valid(rx_a_vpid_valid),          // output wire rx_a_vpid_valid     与rx_a_vpid信号相结合
  .rx_b_vpid(rx_b_vpid),                      // output wire [31 : 0] rx_b_vpid  同上
  .rx_b_vpid_valid(rx_b_vpid_valid),          // output wire rx_b_vpid_valid     同上
  .rx_crc_err_a(rx_crc_err_a),                // output wire rx_crc_err_a        错误监测显示信号
  .rx_ds1a(rx_ds1a),                          // output wire [9 : 0] rx_ds1a     接收到的数据,在此端口会显示出来
  .rx_ds2a(rx_ds2a),                          // output wire [9 : 0] rx_ds2a     接收到的数据,在此端口会显示出来
  .rx_eav(rx_eav),                            // output wire rx_eav              与SDI数据的格式有关系
  .rx_sav(rx_sav),                            // output wire rx_sav              与SDI数据的格式有关系
  .rx_trs(rx_trs),                            // output wire rx_trs              与SDI数据的格式有关系
  .rx_line_b(rx_line_b),                      // output wire [10 : 0] rx_line_b  line number
  .rx_dout_rdy_3g(rx_dout_rdy_3g),            // output wire rx_dout_rdy_3g      
  .rx_crc_err_b(rx_crc_err_b),                // output wire rx_crc_err_b        错误监测显示信号
  .rx_ds1b(rx_ds1b),                          // output wire [9 : 0] rx_ds1b     与SDI数据的格式有关系
  .rx_ds2b(rx_ds2b),                          // output wire [9 : 0] rx_ds2b     与SDI数据的格式有关系
  .rx_edh_errcnt_en(rx_edh_errcnt_en),        // input wire [15 : 0] rx_edh_errcnt_en   设置错误的种类
  .rx_edh_clr_errcnt(rx_edh_clr_errcnt),      // input wire rx_edh_clr_errcnt           清除错误计数器
  .rx_edh_ap(rx_edh_ap),                      // output wire rx_edh_ap                  以下rx_信号均与SDI数据的格式有关系
  .rx_edh_ff(rx_edh_ff),                      // output wire rx_edh_ff
  .rx_edh_anc(rx_edh_anc),                    // output wire rx_edh_anc
  .rx_edh_ap_flags(rx_edh_ap_flags),          // output wire [4 : 0] rx_edh_ap_flags
  .rx_edh_ff_flags(rx_edh_ff_flags),          // output wire [4 : 0] rx_edh_ff_flags
  .rx_edh_anc_flags(rx_edh_anc_flags),        // output wire [4 : 0] rx_edh_anc_flags
  .rx_edh_packet_flags(rx_edh_packet_flags),  // output wire [3 : 0] rx_edh_packet_flags
  .rx_edh_errcnt(rx_edh_errcnt),              // output wire [15 : 0] rx_edh_errcnt
  .tx_rst(tx_rst),                            // input wire tx_rst      发送端口复位
  .tx_usrclk(tx_usrclk),                      // input wire tx_usrclk   发送数据所的时钟
  .tx_ce(tx_ce),                              // input wire [2 : 0] tx_ce   时钟信号使能
  .tx_din_rdy(tx_din_rdy),                    // input wire tx_din_rdy       根据不同的SDI模式来设定
  .tx_mode(tx_mode),                          // input wire [1 : 0] tx_mode   设定发送SDI的模式
  .tx_level_b_3g(tx_level_b_3g),              // input wire tx_level_b_3g      和3g-SDI模式有关系
  .tx_insert_crc(tx_insert_crc),              // input wire tx_insert_crc      CRC值的一个控制开关
  .tx_insert_ln(tx_insert_ln),                // input wire tx_insert_ln       与发送出去的SDI数据有关系
  .tx_insert_edh(tx_insert_edh),              // input wire tx_insert_edh      同上,对发送出去的SDI数据做某种插值
  .tx_insert_vpid(tx_insert_vpid),            // input wire tx_insert_vpid     同上,对发送出去的SDI数据做某种插值
  .tx_overwrite_vpid(tx_overwrite_vpid),      // input wire tx_overwrite_vpid   也是对发送出去的SDI数据做某种处理
  .tx_video_a_y_in(tx_video_a_y_in),          // input wire [9 : 0] tx_video_a_y_in   SDI数据输入端口
  .tx_video_a_c_in(tx_video_a_c_in),          // input wire [9 : 0] tx_video_a_c_in   同上,SDI数据输入端口,只是模式不同罢了
  .tx_video_b_y_in(tx_video_b_y_in),          // input wire [9 : 0] tx_video_b_y_in   同上,SDI数据输入端口,只是模式不同罢了
  .tx_video_b_c_in(tx_video_b_c_in),          // input wire [9 : 0] tx_video_b_c_in   同上,SDI数据输入端口,只是模式不同罢了
  .tx_line_a(tx_line_a),                      // input wire [10 : 0] tx_line_a         line number data
  .tx_line_b(tx_line_b),                      // input wire [10 : 0] tx_line_b         line number data
  .tx_vpid_byte1(tx_vpid_byte1),              // input wire [7 : 0] tx_vpid_byte1       对于输入的SDI数据做处理,相当于做某种补偿
  .tx_vpid_byte2(tx_vpid_byte2),              // input wire [7 : 0] tx_vpid_byte2       对于输入的SDI数据做处理,相当于做某种补偿
  .tx_vpid_byte3(tx_vpid_byte3),              // input wire [7 : 0] tx_vpid_byte3       对于输入的SDI数据做处理,相当于做某种补偿
  .tx_vpid_byte4a(tx_vpid_byte4a),            // input wire [7 : 0] tx_vpid_byte4a      对于输入的SDI数据做处理,相当于做某种补偿
  .tx_vpid_byte4b(tx_vpid_byte4b),            // input wire [7 : 0] tx_vpid_byte4b      对于输入的SDI数据做处理,相当于做某种补偿
  .tx_vpid_line_f1(tx_vpid_line_f1),          // input wire [10 : 0] tx_vpid_line_f1    也是对输入的SDI数据做某种处理
  .tx_vpid_line_f2(tx_vpid_line_f2),          // input wire [10 : 0] tx_vpid_line_f2    也是对输入的SDI数据做某种处理
  .tx_vpid_line_f2_en(tx_vpid_line_f2_en),    // input wire tx_vpid_line_f2_en          对f2处理的控制信号
  .tx_ds1a_out(tx_ds1a_out),                  // output wire [9 : 0] tx_ds1a_out        要发送的数据从这个端口输出来
  .tx_ds2a_out(tx_ds2a_out),                  // output wire [9 : 0] tx_ds2a_out        要发送的数据从这个端口输出来
  .tx_ds1b_out(tx_ds1b_out),                  // output wire [9 : 0] tx_ds1b_out        要发送的数据从这个端口输出来
  .tx_ds2b_out(tx_ds2b_out),                  // output wire [9 : 0] tx_ds2b_out        要发送的数据从这个端口输出来
  .tx_use_dsin(tx_use_dsin),                  // input wire tx_use_dsin                 控制信号,设定发送数据的源
  .tx_ds1a_in(tx_ds1a_in),                    // input wire [9 : 0] tx_ds1a_in          SDI数据流的输入端口
  .tx_ds2a_in(tx_ds2a_in),                    // input wire [9 : 0] tx_ds2a_in          SDI数据流的输入端口
  .tx_ds1b_in(tx_ds1b_in),                    // input wire [9 : 0] tx_ds1b_in          SDI数据流的输入端口
  .tx_ds2b_in(tx_ds2b_in),                    // input wire [9 : 0] tx_ds2b_in          SDI数据流的输入端口
  .tx_sd_bitrep_bypass(tx_sd_bitrep_bypass),  // input wire tx_sd_bitrep_bypass         调整某种模式
  .tx_txdata(tx_txdata),                      // output wire [19 : 0] tx_txdata         SDI数据的输出端口,此端口直接与GTX相连
  .tx_ce_align_err(tx_ce_align_err)          // output wire tx_ce_align_err             一个错误的指示信息
);

对其中的个别信号解释以及解码:

rx_t_family: 

 

rx_t_rate:

 

 

rx_edh_errcnt_en:

 

 

3.SDI接收操作

 

4.SDI接收信号的框图

5.SDI发送信号过程较接收过程复杂,这里不做学习。