赞
踩
上文对OSERDESE进行了详细介绍并且进行了仿真分析,本文开始对ISERDES进行介绍,
不难理解,与OSERDESE相反,ISERDESE2实现串并转换的模块。ISERDESE2框图如下:
DATA_RATE:设置ISERDESE2工作模式,可选择单沿工作模式(SDR)和双沿工作模式(DDR),默认DDR模式。
DATA_WIDTH:设置输出并行数据位宽,取决于DATA_RATE和INTERFACE_TYPE的设置。如下图所示,SDR模式下可以设置为2、3、4、5、6、7、8。DDR模式下单个ISERDESE2块只能设置为4、6、8,两个ISERDESE2块级联可以设置为10、14。
INTERFACE_TYPE:决定ISERDESE2是配置为内存模式还是网络模式。可选的值有MEMORY、MEMORY_DDR3、MEMORY_QDR、OVERSAMPLE、NETWORKING,默认模式是MEMORY,常用NETWORKING模式。
DYN_CLKDIV_INV_EN:动态调整CLKDIV
DYN_CLK_INV_EN:动态调整CLK
INIT_Q1-Q4:设置第n个采样寄存器的初始值
SRVAL_Q1-Q4:设置复位第n个采样寄存器后的值。
IOBDELAY:D和DDLY都是ISERDESE2的专用输入,D直接连接到IOB(直接与管脚相连),DDLY直接连接到IDELAYE2(在ISERDESE2和管脚之间有IDELAYE2加入延迟)。允许用户把延迟或非延迟的外部管脚输入信号作为ISERDESE2输入,通过参数IOBDELAY确定D和DDLY哪个作为ISERDESE2的输入,下图是IOBDELAY参数与输入信号的关系,经常设置位NONE,将外部管脚信号作为ISERDESE2串行数据输入。
NUM_CE:定义使用的时钟使能(CE1和CE2)数量,可设为1和2(默认值为2)。
OFB_USED:使能从OSERDESE2的OFB引脚到ISERDESE2 OFB引脚的路径,禁用外部管脚输入D和IDELAYE2的输入DLY。
SERDES_MODE:SERDES_MODE确定哪个是主ISERDESE2,哪个是从ISERDESE2。
在串并转化的过程当中,这个信号就是进行校准的关键信号,如果没有这个信号,那么ISERDESE2的输出数据其实没有意义,很大可能是错误的,和之前在GT当中所描述的类似,在串并转换的过程中,我们需要知道从串行数据的哪里开始进行串并转换才能够恢复出来正确的并行数据。
通过拉高ISERDESE2模块的Bitslip信号,输入的串行数据流在并行端重新排序,Bitslip与CLKDIV同步。下图说明了SDR和DDR模式下位滑移操作对数据采样的影响,ISERDESE2的数据宽度是八。在SDR模式下,每次Bitslip拉高都会导致输出数据左移一位。在DDR模式下,每次Bitslip拉高都会导致输出数据在右移1位和左移3位之间交替变化。
在我们使用的时候,无需关心到底是怎么移动的,只需要观察串并转换结束后的数据是否为正确数据,不准确则拉高一次BITSLIP即可。只有当ISERDESE2处于网络模式(NETWORKING)下,位滑块(BITSLIP)才可用。Bitslip每次只能拉高一个CLKDIV周期,不能在两个CLKDIV周期内连续拉高Bitslip信号。
在SDR和DDR模式下,从ISERDESE2检测到Bitslip的高电平开始,到ISERDESE2把Bitslip移动后的数据输出到Q1–Q8引脚为止,延迟时间为两个CLKDIV周期。在分析接收到的数据模式并可能发出下一个Bitslip命令之前,用户逻辑应在SDR模式下等待至少两个CLKDIV周期,在DDR模式下等待至少三个CLKDIV周期。综上Bitslip拉高后,需要等待至少三个时钟周期,才能检测并行输出结果是否与预期一致,进而确定是否通过拉高Bitslip信号继续调整输出。与当初介绍64B66B的自定义PHY有点类似。
以下图为例进行说明:
下图是4位并行数据的DDR模式下Bitslip的时序图,数据(D)重复的4位串行数据ABCD。ABCD可能以四种方式出现在ISERDESE2的Q1–Q4并行输出端:ABCD、BCDA、CDAB和DABC,只有ABCD才是正确的输出。拉高Bitslip信号选择所需的对齐方式(ABCD),下图显示了Bitslip的时序以及ISERDESE2并行输出Q1–Q4的校准时序。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。