主要参考:
https://blog.csdn.net/weixin_50810761/article/details/137383681
xilinx原语详解及仿真——ISERDESE2
作者:电路_fpga
https://blog.csdn.net/weixin_45372778/article/details/122036112
Xilinx ISERDESE2应用笔记及仿真实操
作者:郭郭的柳柳在学FPGA
原理
- 校准模式
输入端循环输入8’h5c和8’h82交替的校准序列,接收端比较接收到的并行数据,如果与发送端不一致,则产生1个CLKDIV的BITSLIP信号,使并行数据的顺序滑动一次,等待3个CLKDIV后,比较滑动后的结果是否一致,如果一致则不再产生BITSLIP信号,直到检测到8个连续一致信号,认为字节边界已经对齐,随后进入工作模式。 - 工作模式
可以传输字节边界对齐的数据,也可以产生伪随机字节序列检测整个发送和接收通路的正确性。
重要参数
重要参数有两个:DDR、NETWORKING
ISERDESE2 #(.DATA_RATE("DDR"),//位时钟的上升沿和下降沿都有效.DATA_WIDTH(DESER_FACTOR),.INTERFACE_TYPE("NETWORKING"),//可以使用BITSLIP.DYN_CLKDIV_INV_EN("FALSE"),.DYN_CLK_INV_EN("FALSE"),.NUM_CE(2),.OFB_USED("FALSE"),.IOBDELAY("NONE"),.SERDES_MODE("MASTER"))
重要端口
时钟方案
bit顺序
发送方:
.D1 ( din[0] ),
.D2 ( din[1] ),
.D3 ( din[2] ),
.D4 ( din[3] ),
.D5 ( din[4] ),
.D6 ( din[5] ),
.D7 ( din[6] ),
.D8 ( din[7] ),
接收方(高低位颠倒):
.Q1 ( q[7] ),
.Q2 ( q[6] ),
.Q3 ( q[5] ),
.Q4 ( q[4] ),
.Q5 ( q[3] ),
.Q6 ( q[2] ),
.Q7 ( q[1] ),
.Q8 ( q[0] ),
滑动
SDR模式下:每次的BITSLIP操作,会使输出左移1位;当8次操作后,恢复到最初状态;
DDR模式下:每次的BITSLIP操作,会使输出交替进行右移1位和左移3位操作,当8次操作后,恢复到最初状态;
移位延时
BitSlip与CLKDIV同步,移位脉冲BITSLIP在CLKDIV上升沿有效后,3个CLKDIV完成移位。
BITSLIP的作用
修改串转并的起始位置
BITSLIP前:
BITSLIP后:
丢弃1bit
串并转换延时
2个CLKDIV