Xilinx 7系列SelectIO结构之SelectIO逻辑资源
引言:本文我们介绍SelectIO重要的IDELAY及IDELAYCTRL资源,它们主要用于调整I/O时序延迟,比如调整ADC采集时钟和ADC采集数据I/O之间的时序关系等等。具体内容包括:
- IDELAY资源概述、端口及使用
- IDELAYCTRL资源概述、端口及使用
1.输入延迟资源(IDELAY)
每个I/O模块都包含了一个可编程的延迟原句,称作IDELAYE2。IDELAY可以连接到ILOGICE2/ISERDESE2或者ILOGICE3/ISERDESE2模块。IDELAY2是一个可编程的31阶延迟原句,延迟参数可以参考7系列FPGA对应器件家族的器件手册。它既可以应用于组合逻辑也可以应用于时序逻辑或者同时用于两者。另外,它也可以直接被FPGA逻辑访问。IDELAY允许即将输入的信号在各自的输入管脚上做延迟处理,该延迟由IDELAYCTRL原句控制,延迟参考时钟频率在7系列器件手册有明确定义。
1.1 IDELAYE2原句
IDELAYE2原句如图1所示。
图1、IDELAYE2原句
IDELAYE2端口列表如图表1所示。
表1、IDELAYE2端口列表
1.2 IDELAY端口
1.IDATAIN:来自IOB的数据输入
IDATAIN端口由IOB块进行驱动。IDELAY可以将数据输出至ILOGICE2/ISERDESE2或者ILOGICE3/ISERDESE2块,或者直接送入FPGA逻辑或者使用IDELAY_VALUE属性设置一定延迟后通过DATAOUT端口输出。
2.DATAIN:来自FPGA逻辑的数据
DATAIN输入直接来自FPGA逻辑,提供一个逻辑可访问的延迟线。该输入使用IDELAY_VALUE属性延迟一定时间后,通过DATAOUT端口返回至FPGA逻辑,DATAIN可以在本地翻转。该端口数据不能来自IOB。
3.DATAOUT:数据输出
从上述两个端口介绍,显而易见延迟输出数据DATAOUT来自两个数据输入端口:IDATAIN或者DATAIN。该端口可以输出至ILOGICE2/ISERDESE2或者ILOGICE3/ISERDESE2块,或者直接送入FPGA逻辑或者使用IDELAY_VALUE属性设置一定延迟后通过DATAOUT端口输出。
4.C:时钟输入
所有输入到IDELAYE2原句的控制信号都同步于时钟输入C。当IDELAY配置为VARIABLE、VAR_LOAD或者VAR_LOAD_PIPE模式时,该端口必须连接时钟。该时钟可以在本地翻转,但必须由全局时钟或者区域时钟buffer缓冲器驱动。如果ODELAYE2原句和IDELAYE2原句在同一个Bank内使用,C端口时钟必须使用相同的时钟网络。
5.LD:加载
当使用VARIABLE模式时,IDELAY加载端口LD加载IDELAY_VALUE属性设置值。默认来自IDELAY_VALUE的值为0。LD信号高有效,且同步于时钟输入端口C。
当使用VAR_LOAD模式时,LD端口加载CNTVALUEIN设置值,CNTVALUEIN为新的延迟值。当使用VAR_LOAD_PIPE模式时,LD端口加载当前流水线寄存器里的延迟值作为新的时间延迟。
6.CINVCTRL:C端口极性翻转控制
CINVCTRL可以动态控制时钟端口C的极性。
7.CNIVLUEN:计数值输入
该端口用于动态的切换加载延迟值。
8.CNTVALUEOUT:计数值输出
该端口用于监控加载延迟值。
9.LDPIPEEN:流水寄存器使能控制
高电平使能流水线寄存器,加载流水线寄存器内的值到CNTVALUEIN端口。
10.REGRST:流水线寄存器复位
高电平时,复位流水线寄存器内的值为0。
11.CE、INC:增减信号
延迟的增大或者减少由CE使能管脚CE控制。该接口只在IDELAY为VARIABLE、VAR_LOAD或者VAR_LOAD_PIPE模式下才可用。
当CE为高电平时,使能延迟控制,当INC为高电平(1)时,增加延迟;当INC为低电平(0)时,减少延迟。如果CE为低电平,则忽略INC值。
流水线寄存器模式VAR_LOAD_PIPE在总线架构设计中非常有用。可以使用LDPIPIEEN单独设置延迟,所有的延迟使用LD管脚同时更新到新的延迟值。
1.3 IDELAY属性
IDELAY的可配置属性和端口如图2所示。
图2、IDELAY原句例化
1.4 IDELAY模式
IDELAY主要有四种操作模式,下面我们分别来介绍。
1.固定延迟模式(IDELAY_TPYE=FIXED)
在该模式下数据延迟由属性IDELAY_VALUE设置,且延迟固定,不可更改。在该模式下,IDELAYCTRL原句必须例化。
2.可变延迟模式(IDELAY_TPYE=VARIABLE)
在该模式下,延迟值可以在配置后通过CE和INC端口进行动态配置。同样,在该模式下,IDELAYCTRL原句也必须例化。该模式下的逻辑控制对应关系如表2所示。
表2、可变模式下逻辑控制关系
3.可加载可变延迟模式(IDELAY_TYPE=VAR_LOAD)
该模式下功能与VARIABLE模式下类似,只不过可以通过CNTVALUEIN加载延迟节拍数。多了一种延迟加载方法。当LD端口有效时可以加载新的延迟CNTVALUE值到控制模块。该模式下逻辑功能关系如表3所示。
表3、可加载可变延迟模式逻辑控制关系
1.5 IDELAY时序
图3给出了可变模式下的延迟时序图,可参考表2了解控制关系。
图3、可变模式下的延迟时序图
在图3所示位置①处,当LD脉冲有效时,自动加载IDELAY_VALUE属性值;在②位置处当CE和INC有效时,延迟自动增1Tap。
图4给出了在VAR_LOAD模式下延迟时序图。
图4、VAR_LOAD模式下延迟时序图
在该模式下,参照表2功能,在①位置当LD脉冲有效时,加载CNTVALUE值;在②处,当INC和CE有效时,在原CNTVALUE值基础上自动加1个Tap延迟;在③位置时,当LD再次有效时,自动加载CNTVALUE的值。
从图3和图4的时序图中我们可以清晰的了解到可变延迟模式和可加载可变延迟模式的区别:LD脉冲有效时,加载的延迟值来源是不同的,这一点在FPGA软件设计时要注意。
2.输入延迟控制(IDELAYCTRL)
2.1 IDELAYCTRL概述
如果IDELAYE2或者ODELAYE2原句例化时,IDELAYCTRL原句也必须例化。该模块的用途是对IDELAYE2或者ODELAYE2进行校准,减少处理、电压和温度的影响。该模块使用REFCLK时钟精细校准。
2.2 IDELAYCTRL原句及端口
图5、IDELAYCTRL图
1.RST:复位信号
RST端口高电平复位,异步复位。为了确保恰当的IDELAY和ODELAY操作,在REFCLK时钟稳定后,必须对IDELAYCTRL进行复位。
2.REFCLK:参考时钟
REFCLK时钟为IDELAYCTRL提供校准时钟。该时钟必须由BUFG或者BUFH时钟缓冲器驱动。REFCLK可以直接来自用户提供的时钟源或者MMCM,但都必须布线到全局时钟buffer。
3.RDY:Ready信号
RDY信号指示IDELAY和ODELAY模块已经完成校准。如果RDY信号变为低电平,IDELAYCTRL模块必须进行复位处理。
2.3 IDELAYCTRL时序
IDELAYCTRL控制时序图如图6所示。
图6、IDELAYCTRL时序图
2.4 IDELAYCTRL位置
IDELAYCTRL位于I/O行的的每个时钟域。一个IDELAYCTRL完成它所在时钟域的所有IDELAYE2和ODELAYE2块的校准。图7显示了IDELAYCTRL位置相关位置示意图。
图7、IDELAYCTRL位置
更多其他技术文章可以关注我的公众号“FPGA技术实战”,欢迎交流 !