输入/输出延迟单元(IODELAY)简介每个I/O模块包含一个可编程绝对延迟单元,称为IODELAY。IODELAY可以连接到ILOGIC/ISERDES或OLOGIC/OSERDES模块,也可同时连接到这两个模块。IODELAY是具有64个tap的环绕延迟单元,具有标定的tap分辨率(见附图1)。IODELAY可用于组合输入通路、寄存输入通路、组合输出通路或寄存输出通路,还可以在内部资源中直接使用。IODELAY允许各输入信号有独立的延迟。通过在《Virtex-5数据手册》中规定的范围内选择IDELAYCTRL参考时钟,可以改变tap延迟分辨率。IODELAY资源可用作IDELAY、ODELAY或组合延迟。1、当用作IDELAY时,数据从IBUF或内部资源输入,然后输出到ILOGIC/ISERDES。有三种可用操作模式:•零保持时间延迟模式(IDELAY_TYPE=DEFAULT)这种操作模式允许向后兼容,以使用Virtex-II、Virtex-IIPro和Virtex-4器件中的零保持时间延迟功能的设计。当在没有DCM的情况下使用全局时钟采集数据(引脚到引脚参数)时,用这种延迟单元提供“非正保持时间”。在这种模式下使用时,不需要例化IDELAYCTRL基元。有关更多详情,请见“IDELAYCTRL用法及设计指导原则”。•固定延迟模式(IDELAY_TYPE=FIXED)在固定延迟模式下,配置时将延迟值预设置成由属性IDELAY_VALUE确定的tap数。此值配置后不可更改。在这种模式下使用时,必须例化IDELAYCTRL基元。有关更多详情,请见“IDELAYCTRL用法及设计指导原则”。•可变延迟模式(IDELAY_TYPE=VARIABLE)在可变延迟模式下,可以在配置后通过操控控制信号CE和INC来改变延迟值。在这种模式下使用时,必须例化IDELAYCTRL基元。有关更多详情,请见“IDELAYCTRL用法及设计指导原则”。2、当用作ODELAY时,数据从OLOGIC/OSERDES输入,然后输出到OBUF。有一种可用操作模式:•固定延迟输出模式在固定延迟输出模式下,配置时将延迟值预设置成由属性ODELAY_VALUE确定的tap数。此值配置后不可更改。在这种模式下使用时,必须例化IDELAYCTRL基元。有关更多详情,请见“IDELAYCTRL用法及设计指导原则”。3、当用作双向延迟时,将IOB配置成双向模式。IODELAY交替延迟输入通路和输出通路上的数据。有两种可用操作模式:•固定IDELAY(IDELAY_TYPE=FIXED)和固定ODELAY模式在这种模式下,IDELAY和ODELAY的值都是在配置时预设置,分别由IDELAY_VALUE和ODELAY_VALUE属性确定。此值配置后不可更改。在这种模式下使用时,必须例化IDELAYCTRL基元。有关更多详情,请见“IDELAYCTRL用法及设计指导原则”。•可变IDELAY(IDELAY_TYPE=VARIABLE)和固定ODELAY模式在这种模式下,只有IDELAY值可以在配置后通过操控控制信号CE和INC来动态更改。IODELAY基元中T引脚的逻辑级别动态确定模块是IDELAY模式还是ODELAY模式。在这种模式下使用时,必须例化IDELAYCTRL基元。有关更多详情,请见“IDELAYCTRL用法及设计指导原则”。表1-1列出了IODELAY支持的配置。表1-1:IODELAY支持的配置IODELAY基元图1-1所示为IODELAY基元。图1-1:IODELAY基元表1-2列出了IODELAY基元中的可用端口。所有端口均为1位宽。表1-2:IODELAY基元端口IODELAY端口来自IOB的数据输入-IDATAINIDATAIN输入由相应的IOB驱动。在IDELAY模式下,可以将数据驱动到ILOGIC/ISERDES模块或直接驱动到FPGA内部资源中,也可以通过DATAOUT端口按照由IDELAY_VALUE设置的延迟将数据同时驱动到这二者。来自FPGA内部资源的数据输入-ODATAINODATAIN输入由OLOGIC/OSERDES驱动。在ODELAY模式下,ODATAIN按照由ODELAY_VALUE设置的延迟驱动连接到IOB的DATAOUT端口。来自FPGA内部资源的IODELAY的数据输入-DATAINDATAIN输入直接由FPGA内部资源驱动,以提供一条可访问内部资源逻辑的延迟线。数据按照由IDELAY_VALUE设置的延迟通过DATAOUT端口返回到内部资源中。DATAIN可以在芯片内反转。数据不能驱动到IOB。数据输出-DATAOUT来自三个数据输入端口的延迟数据。DATAOUT连接到内部资源(IDELAY模式)或IOB(ODELAY模式),或同时连接到这二者(双向延迟模式)。如果在双向延迟模式下使用,则T端口在IDATAIN和ODATAIN通路之间动态切换,根据来自OLOGIC模块的三态信号T所指示的方向交替提供输入/输入延迟。三态输入-T这是三态输入控制端口。对于双向操作,T引脚信号还控制OBUFT的T引脚。时钟输入-C对IODELAY基元的所有控制输入(RST、CE和INC)均与时钟输入(C)同步。当IODELAY配置成可变模式时,必须将一个时钟连接到此端口。C可以在芯片内反转。模块复位-RSTIODELAY复位信号RST将延迟单元复位到由IDELAY_VALUE或ODELAY_VALUE属性设置的值。如果未指定这些属性,则假定该值为零。RST信号是高有效复位,与输入时钟信号(C)同步。表1-3概述了控制引脚的功能。表1-3:控制引脚描述递增/递减信号–CE、INC递增/递减由使能信号(CE)控制。当IDELAY_TYPE=VARIABLE时,此接口只可用于IDELAY模式。只要CE保持为High,IDELAY就会每时钟(C)周期按IDELAYRESOLUTION递增或递减。INC的状态确定IDELAY是递增还是递减:INC=1为递增,INC=0为递减,与时钟(C)同步。如果CE为Low,则通过IDELAY的延迟不变,与INC的状态无关。当CE转为High时,在下一个时钟上升沿上开始递增/递减操作。当CE转为Low时,在下一个时钟上升沿上停止递增/递减操作。IODELAY是环绕可编程延迟单元。当达到延迟单元的末尾(tap63)时,随后的递增功能就会返回到tap0。同样的规则也适用于递减功能,即低于零的递减会转到tap63。表1-4概述了递增/递减操作。表1-4:递增/递减操作IODELAY属性表1-5列出了IODELAY的属性。表1-5:IODELAY属性概述IDELAY_TYPE属性IDELAY_TYPE属性设置所用延迟的类型。此属性的值是DEFAULT、FIXED和VARIABLE。当设置成DEFAULT时,选择零保持时间延迟单元。当在没有DCM的情况下使用全局时钟采集数据(引脚到引脚参数)时,用这种延迟单元提供非正保持时间。当设置成FIXED时,tap延迟值固定为由IDELAY_VALUE属性设置确定的tap数。此值是预设置的,配置后不可更改。当设置成VARIABLE时,选择可变tap延迟单元。Tap延迟可以通过设置CE=1和INC=1递增,或通过设置CE=1和INC=0递减。递增/递减操作与输入时钟信号C同步。IDELAY_VALUE属性IDELAY_VALUE属性指定初始tap延迟数。可能的值是0到63之间的任意整数。默认值是零。当tap延迟复位时,tap延迟值恢复到IDELAY_VALUE。在可变模式下,此属性确定延迟线的初始设置。ODELAY_VALUE属性ODELAY_VALUE指定tap延迟数。可能的值是0到63之间的任意整数。默认值是零。当tap延迟复位时,tap延迟值恢复到ODELAY_VALUE。HIGH_PERFORMANCE_MODE属性当设置为TRUE时,此属性减少输出抖动。输出抖动减少导致IODELAY单元的功率耗散略有上升。SIGNAL_PATTERN属性SIGNAL_PATTERN属性致使时序分析器计入数据或时钟通路中的相应延迟链抖动量。IODELAY时序表1-6为IODELAY开关特性。表1-6:IODELAY开关特性图1-2所示为IDELAY时序图。假设IDELAY_VALUE=0。图1-2:IDELAY时序图时钟事件1在C的上升沿上检测到复位,致使输出O选择tap0为64tap链的输出(假设IDELAY_VALUE=0)。时钟事件2在C的上升沿上检测到CE和INC的脉冲。这说明是递增操作。输出从tap0到tap1无毛刺变化。请见“递增/递减操作后的稳定性”。时钟事件3至此,输出已经稳定在tap1,因而完成了递增操作。输出无限期地保持在tap1,直到RST、CE或INC引脚上有进一步活动。递增/递减操作后的稳定性图1-2显示了输出从一个tap向另一个变化时的不稳定时段。显然,当tap0处的数据值与tap1处的数据值不同时,输出必须改变状态。然而,如果tap0和tap1处的数据值相同(例如两者都是0或1),则从tap0到tap1的过渡就不会在输出上造成毛刺或混乱。这一概念可以通过设想IODELAY的tap链中的接收器数据信号来理解。如果tap0和tap1都靠近接收器数据眼的中心,则在tap0处采样的数据应与在tap1处采样的数据没有区别。在这种情况下,从tap0到tap1的过渡不会引起输出变化。为了确保这种情况,IODELAY的递增/递减操作设计成了无毛刺操作。在活动用户数据通过IODELAY单元时,用户可以实时动态调整IODELAY的tap设置,不会扰乱活动用户数据。当在时钟信号通路中使用IODELAY单元时,也适用无毛刺行为。调整tap设置不会在输出上引起毛刺或混乱。可以调整时钟通路中IODELAY单元的tap设置,不会扰乱可能正在该时钟上运行的状态机。IDELAYCTRL概述如果用设置为FIXED或VARIABLE的IOBDELAY_TYPE属性例化IODELAY或ISERDES基元,则必须在代码中例化IDELAYCTRL模块。IDELAYCTRL模块在其区域内连续标定各延迟单元(IODELAY)(见图1-5),以减少随工艺、电压和温度变化的影响。IDELAYCTRL模块使用用户提供的REFCLK标定IODELAY。IDELAYCTRL基元图1-3所示为IDELAYCTRL基元。图1-3:IDELYACTRL基元IDELAYCTRL端口RST-复位复位输入引脚(RST)是High有效异步复位。IDELAYCTRL在配置(以及REFCLK信号稳定)之后必须复位,以确保IODELAY操作正常。要求复位脉冲宽度为TIDELAYCTRL_RPW(详见附图1)。IDELAYCTRL在配置后必须复位。REFCLK-参考时钟参考时钟(REFCLK)提供对IDELAYCTRL的时间参考,以标定同区域中的所有IODELAY模块。此时钟必须由全局时钟缓冲器(BUFGCTRL)驱动。REFCLK必须是FIDELAYCTRL_REF±指定的ppm容差(IDELAYCTRL_REF_PRECISION),以保证指定的IODELAY分辨率(TIDELAYRESOLUTION)。REFCLK可以由用户提供的信号源、PLL或DCM直接提供,必须在全局时钟缓冲器上传输。RDY-就绪就绪(RDY)信号指示特定区域内的IODELAY模块标定完毕。如果REFCLK在一个或几个时钟周期内保持为High或Low,则RDY信号置为无效。如果RDY置为Low无效,则IDELAYCTRL模块必须复位。实现工具允许不连接/忽略RDY。图1-4所示为RDY与RST之间的时序关系。IDELAYCTRL时序表1-7所示为IDELAYCTRL开关特性。表1-7:IDELAYCTRL开关特性如下图1-4所示,Virtex-5RST是边沿触发信号。图1-4:RDY与RST之间的时序关系IDELAYCTRL位置每个时钟区域的每个I/O