ISERDESE2 #(
.DATA_RATE("DDR"), // DDR, SDR
.DATA_WIDTH(4), // Parallel data width (2-8,10,14)
.DYN_CLKDIV_INV_EN("FALSE"), // Enable DYNCLKDIVINVSEL inversion (FALSE, TRUE)
//时钟翻转
.DYN_CLK_INV_EN("FALSE"), // Enable DYNCLKINVSEL inversion (FALSE, TRUE)
//时钟翻转
// INIT_Q1 - INIT_Q4: Initial value on the Q outputs (0/1)
.INIT_Q1(1'b0),
.INIT_Q2(1'b0),
.INIT_Q3(1'b0),
.INIT_Q4(1'b0),
.INTERFACE_TYPE("NETWORKING"), // MEMORY, MEMORY_DDR3, MEMORY_QDR, NETWORKING, OVERSAMPLE
// 一般用 NETWORKING ;cameralink 就是 NETWORKING ;
.IOBDELAY("NONE"), // NONE, BOTH, IBUF, IFD
// 没有使用 IOdelay 的情况下,线速率小于 500M 时:
// 可以用 IBUF 、NONE;都可以;
.NUM_CE(2), // Number of clock enables (1,2)
// 一般给 1 ;且 port 也是给 1 ;
.OFB_USED("FALSE"), // Select OFB path (FALSE, TRUE)
.SERDES_MODE("MASTER"), // MASTER, SLAVE
// 级联 :master加slave;级联的时候要互连master和slave的 shift_in/out 信号;
//不级联:可以不用管,此时默认是 master;
// SRVAL_Q1 - SRVAL_Q4: Q output values when SR is used (0/1)
.SRVAL_Q1(1'b0),
.SRVAL_Q2(1'b0),
.SRVAL_Q3(1'b0),
.SRVAL_Q4(1'b0)
)
ISERDESE2_inst (
.O(O), // 1-bit output: Combinatorial output
//NC 不用接;
// Q1 - Q8: 1-bit (each) output: Registered data outputs
.Q1(Q1),
.Q2(Q2),
.Q3(Q3),
.Q4(Q4),
.Q5(Q5),
.Q6(Q6),
.Q7(Q7),
.Q8(Q8),
// SHIFTOUT1, SHIFTOUT2: 1-bit (each) output: Data width expansion output ports
.SHIFTOUT1(SHIFTOUT1),
.SHIFTOUT2(SHIFTOUT2),
// 不级联:输出信号,NC即可,
//级联:master 的 SHIFTOUT1 接到 salve 的 SHIFTIN1 ;
// slave 的 SHIFTOUT1 NC即可
.BITSLIP(BITSLIP), // 1-bit input: The BITSLIP pin performs a Bitslip operation synchronous to
// CLKDIV when asserted (active High). Subsequently, the data seen on the Q1
// to Q8 output ports will shift, as in a barrel-shifter operation, one
// position every time Bitslip is invoked (DDR operation is different from
// SDR).
// 时钟域:CLKDIV ;拉高 1 个 CLKDIV ,Q 跳变一次;
// CE1, CE2: 1-bit (each) input: Data register clock enable inputs
.CE1(CE1),
.CE2(CE2),
// 这两个都给 1'B1 ;
.CLKDIVP(CLKDIVP), // 1-bit input: TBD
// 1'B0
// Clocks: 1-bit (each) input: ISERDESE2 clock input ports
.CLK(CLK), // 1-bit input: High-speed clock
// DDR : 线速率/2;
// SDR : 线速率;
.CLKB(CLKB), // 1-bit input: High-speed secondary clock
// CLKB = ~CLK ;
.CLKDIV(CLKDIV), // 1-bit input: Divided clock
// CLKDIV = 线速率/DATA_WIDTH ;
.OCLK(OCLK), // 1-bit input: High speed output clock used when INTERFACE_TYPE="MEMORY"
// INTERFACE_TYPE 为 "NETWORKING" 时: 1'B0
// Dynamic Clock Inversions: 1-bit (each) input: Dynamic clock inversion pins to switch clock polarity
.DYNCLKDIVSEL(DYNCLKDIVSEL), // 1-bit input: Dynamic CLKDIV inversion
// 1'B0
.DYNCLKSEL(DYNCLKSEL), // 1-bit input: Dynamic CLK/CLKB inversion
// 1'B0
// Input Data: 1-bit (each) input: ISERDESE2 data input ports
.D(D), // 1-bit input: Data input
// 来自 IBUFDS 的数据;
.DDLY(DDLY), // 1-bit input: Serial data from IDELAYE2
// 使用 IDELAY 的时候的数据输入,
// 没使用 LDELAY 的话,NC即可;
.OFB(OFB), // 1-bit input: Data feedback from OSERDESE2
// 1'B0
.OCLKB(OCLKB), // 1-bit input: High speed negative edge output clock
// 1'B0
.RST(RST), // 1-bit input: Active high asynchronous reset
// SHIFTIN1, SHIFTIN2: 1-bit (each) input: Data width expansion input ports
.SHIFTIN1(SHIFTIN1),
.SHIFTIN2(SHIFTIN2)
// 不级联:输入信号,给 1'b0 ,
// 级联:salve 的 SHIFTIN1 接到 master 的 SHIFTOUT1 ;
// master 的 SHIFTIN1 给 1'b0 即可;
);