vivado中oserdes的原语及IP的使用
应用场景
在高速应用中,我们经常性的听说serdes的应用,确实serdes是一项重要的应用。serdes又可以分为iserdes与oserdes两个操作分别是串行转并行以及并行转串行,因为FPGA内部跑的频率较低,不能处理那么高的串行频率需要转成并行处理。举两个serdes的例子以供大家明白它的作用:
1、HDMI中的发射端用到了Oserdes接收端用到了Iserdes,因为HDMI是数字串行通信
2、在GTP的应用中,如PCIE、SFP都用到了serdes操作
我们下篇文章会讲解HDMI应用。知道了serdes的作用,那么学习起来这个操作才有意义。
serdes原语的应用
首先从vivado中调出oserdes原语如下
接下来对其接口信号进行描述:
OSERDESE2 #(
.DATA_RATE_OQ ("DDR" ), // DDR, SDR
.DATA_RATE_TQ ("DDR" ), // DDR, BUF, SDR
.DATA_WIDTH (4 ), // Parallel data width (2-8,10,14)
.INIT_OQ (1'b0 ), // Initial value of OQ output (1'b0,1'b1)
.INIT_TQ (1'b0 ), // Initial value of TQ output (1'b0,1'b1)
.SERDES_MODE ("MASTER" ), // MASTER, SLAVE
.SRVAL_OQ (1'b0 ), // OQ output value when SR is used (1'b0,1'b1)
.SRVAL_TQ (1'b0 ), // TQ output value when SR is used (1'b0,1'b1)
.TBYTE_CTL ("FALSE" ), // Enable tristate byte operation (FALSE, TRUE)
.TBYTE_SRC ("FALSE" ), // Tristate byte source (FALSE, TRUE)
.TRISTATE_WIDTH (4 ) // 3-state converter width (1,4)
)
OSERDESE2_inst (
.OFB (OFB ), // 1-bit output: Feedback path for data
.OQ (OQ ), // 1-bit output: Data path output
// SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each)
.SHIFTOUT1 (SHIFTOUT1 ),
.SHIFTOUT2 (SHIFTOUT2 ),
.TBYTEOUT (TBYTEOUT ), // 1-bit output: Byte group tristate
.TFB (TFB ), // 1-bit output: 3-state control
.TQ (TQ ), // 1-bit output: 3-state control
.CLK (CLK ), // 1-bit input: High speed clock
.CLKDIV (CLKDIV ), // 1-bit input: Divided clock
// D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each)
.D1 (D1 ),
.D2 (D2 ),
.D3 (D3 ),
.D4 (D4 ),
.D5 (D5 ),
.D6 (D6 ),
.D7 (D7 ),
.D8 (D8 ),
.OCE (OCE ), // 1-bit input: Output data clock enable
.RST (RST ), // 1-bit input: Reset
// SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each)
.SHIFTIN1 (SHIFTIN1 ),
.SHIFTIN2 (SHIFTIN2 ),
// T1 - T4: 1-bit (each) input: Parallel 3-state inputs
.T1 (T1 ),
.T2 (T2 ),
.T3 (T3 ),
.T4 (T4 ),
.TBYTEIN (TBYTEIN ), // 1-bit input: Byte group tristate
.TCE