LVDS系列26:Xilinx 7系 OSERDESE2原语(二)
这一讲讲解OSERDESE2的参数和组件用法;
OSERDESE2参数:
参数DATA_RATE_OQ:
设置数据路径并行数据转串行的速率,可选单倍数据速率(SDR)、双倍数据速率(DDR),默认设置为DDR双倍;
参数DATA_RATE_TQ:
设置三态路径数据转换的速率,可选单倍数据速率(SDR)、双倍数据速率(DDR)、旁路不处理(BUF)。在SDR和DDR模式下,并行数据的输入使用四个T端口输入,可以通过TRISTATE_WIDTH参数控制并行数据有效位宽;在BUF模式下,SDR和DDR模式下的寄存器被绕过,只使用T1端口输入数据,且T1端口的数据可以与其他所有信号都异步,因为此时T1数据只是经过OSERDESE2传递,不会被进行处理;
参数DATA_WIDTH:
定义和并串转换器的并行数据的输入位宽;当DATA_RATE_OQ为SDR模式时,参数值可选2/3/4/5/6/7/8;当DATA_RATE_OQ为DDR模式时,参数值可选4/6/8/10/14,其中10和14需要一对OSERDESE2级联才可实现;
参数INIT_OQ:
OQ端口上电初始化设置值,0或1,默认0即可;
参数INIT_TQ:
TQ端口上电初始化设置值,0或1,默认0即可;
参数SERDES_MODE:
要使用宽度扩展级联OSERDESE2时,主OSERDESE2设置为MASTER,从OSERDESE2设置为SLAVE;
参数SRVAL_OQ:
OQ端口复位值,0或1,默认0即可;
参数SRVAL_TQ:
TQ端口复位值,0或1,默认0即可;
参数TBYTE_CTL:
通过MIG工具使用,三态路径的使能控制,可选FALSE、TRUE,默认设置为FALSE;
参数TBYTE_SRC:
通过MIG工具使用,三态路径源选择,可选FALSE、TRUE,默认设置为FALSE;
参数TRISTATE_WIDTH:
定义三态路径并转串的并行输入数据位宽,需与DATA_RATE_TQ参数配合使用,
当DATA_RATE_TQ设置为SDR或是BUF时,TRISTATE_WIDTH只能设置为1;
当DATA_RATE_TQ设置为DDR时,TRISTATE_WIDTH可以设置为1或4,
TRISTATE_WIDTH不能设置为大于4的值,当DATA_WIDTH大于4时,TRISTATE_WIDTH置1;
OSERDESE2时钟使用:
CLK和CLKDIV需要相位对齐,CLK和CLKDIV的频率关系由并转串的输入并行位宽和速率模式决定;
时钟的驱动:
由BUFIO驱动CLK,由BUFR驱动CLKDIV;
由同一个MMCM或是PLL的输出端口驱动CLK和CLKDIV;
且使用MMCM驱动时,两个时钟的缓冲器类型不能混用,两者须一致;
OSERDESE2宽度扩展:
与ISERDESE2类似,OSERDESE2也可以通过主从级联扩展位宽,将并转串比例提高到10:1和14:1;
连接结构如下图:
主OSERDESE2的SERDES_MODE设置为MASTER,从OSERDESE2的SERDES_MODE设置为SLAVE,主OSERDESE2的SHIFTIN1、SHIFTIN2端口连接到从OSERDESE2的SHIFTOUT1、SHIFTOUT2端口,两个OSERDESE2必须是相邻的主从对;
扩展位宽时:
10bit:bit7-bit0输入到主OSERDESE2的D8-D1,bit9-bit8输入到从OSERDESE2的D4-D3;
14bit:bit7-bit0输入到主OSERDESE2的D8-D1,bit13-bit8输入到从OSERDESE2的D8-D3;
OSERDESE2延迟:
OSERDESE2模块的输入到输出延迟取决于DATA_RATE和DATA_WIDTH属性。
延迟定义为为当CLKDIV的上升沿将输入D1–D8的数据时钟输入到OSERDESE2时到串行流的第一个位出现在OQ时刻之间的间隔时间;
各种延迟值如下表所示:
当CLK和CLKDIV的时钟边沿没有相位对齐时,延迟可能会变化一个周期;
OSERDESE2数据时序:
下图为2:1比例SDR模式下的时序介绍:
可以看到上图,
在clock event 1处,AB输入被CLKDIV驱动到原语输入口D1D2,上升沿后经过一定的传播延时才数据稳定,
在clock event 2处,CLKDIV上升沿时,AB输入被从D1D2线上采样到OSERDESE2中,
在clock event 3处,也就是clock event 2时刻CLKDIV上升沿相邻的CLKDIV下降沿处,A和B依次在CLK上升沿时刻被输出到OQ线上,
下图为8:1比例DDR模式下的时序介绍:
可以看到上图,
在clock event 1处,ABCDEFGH输入被CLKDIV驱动到原语输入口D1-D8,
在clock event 2处,CLKDIV上升沿时,A-H输入被从D1-D8线上采样到OSERDESE2中,
在clock event 3处,也就是clock event 2时刻CLKDIV上升沿靠后相邻的CLKDIV上升沿处,A-H依次在CLK上升沿和下降沿时刻被输出到OQ线上,一个CLKDIV周期里,CLK共8个边沿,将A-H这8个输入数据全部输出;
OSERDESE2三态控制时序:
OSERDESE2带有数据路径和三态控制器这两个数据控制路径,且这个两个OQ和TQ的输入不是独立使用,不是说这次使用OQ数据串行化,下次又单独使用TQ三态串行化,而是如果要单独使用OQ数据串行化功能,那么就可以单独使用OQ即可,就如同上面两个时序特性图,就只有OQ信号,没有TQ,
但是如果想要使用三态功能,那么OQ和TQ就必须协同工作,其中TQ是不能独立使用的,必须依附于OQ,前面讲过TQ是连接到三态控制器的输入控制管脚,OQ和TQ协同工作,一起连接到IOB上,然后如果想要输出驱动有效数据,那么此时TQ输出三态关闭,此时IOB就将会输出OQ管脚送过来的值,如果想要输出高阻态,那么此时TQ输出的值将开启IOB的三态功能,IOB此时忽略OQ值,输出高阻态;
下图为4:1比例DDR模式下的三态控制器串行化时序介绍:
可以看到上图,
在clock event 1处,T1、T2、T4为0,为释放三态的状态,T3为1使能三态,且这一排数据处,T1-T4和D1-D4串行化路径和延时是相同的,所以在OQ、TQ输出时,EFGH这4bit数据和0010这4bit三态控制数据流,两者是位对齐的,
在clock event 2处,在clock event 1处数据被采样后的4bit数据开始从CLK时钟边沿输出到OQ和TQ上,可以看到两个路径数据对齐,且OBUFT.O输出的数据为EFZH,其中缺少的G则是因为该位置时TQ置1,IOB输出高阻态;
本文章由威三学社出品
对课程感兴趣可以私信联系