赞
踩
本文主要参考UG471《7 Series FPGAs SelectIO Resources》
7系列FPGA包含了来自前一代Xilinx FPGA的基本I/O逻辑资源。这些资源包括以下内容:
图2-1显示了1.8V HP存储器块的I/O块。图2-2显示了3.3V HR存储器块的I/O块。SelectIO™输入、输出和3态驱动器位于输入/输出缓冲(IOB)中。HP存储器块具有单独的IDELAY和ODELAY块。HR存储器块与HP存储器块具有相同的逻辑元件,除了ODELAY块。
IDELAY2,ODELAY2,ILOGIC*,OLOGIC*都在IOB周围,但不在IOB内部。
ILOGIC 块位于 I/O 块(IOB)旁边。ILOGIC 块包含用于捕获数据的同步元件,这些数据通过 IOB 进入 FPGA。在 7 系列器件中,可以配置的 ILOGIC 是 ILOGICE2(HP I/O 存储器块)和 ILOGICE3(HR I/O 存储器块)。尽管在本指南中始终被称为 ILOGIC,除非明确指定,否则 ILOGICE2 和 ILOGICE3 在功能上是相同的,它们的端口也是相同的。ILOGICE2 和 ILOGICE3 之间唯一的区别是:
ZHOLD作用?
这些差异显示在图2-3和图2-4中。输入/输出互连(IOI)存储元件的 D 输入处的 ZHOLD 延迟消除了任何板间保持时间要求。ZHOLD 延迟会自动匹配内部时钟分配延迟,并在使用时确保板间保持时间为零。ILOGIC 块支持在输入上的可选静态非补偿零保持(ZHOLD)延迟线,以补偿时钟插入延迟。ZHOLD 功能经过优化,用于补偿时钟插入延迟,当时钟路径直接来自于同一存储器块或相邻存储器块中的 BUFG/BUFGCE 时。除非时钟源是 MMCM 或 PLL,或者在 Xilinx 设计约束(XDC)中设置了 IOBDELAY 属性,否则默认启用 ZHOLD。
重要提示:ZHOLD 可能不适用于所有应用程序,请查看时序报告以验证对特定时钟方案的影响。
ILOGICE2 和 ILOGICE3 不是原语,不能像实例化原语那样实例化。它们包含用户实例化的元素,例如放置和布线后的输入触发器(IFD)或输入 DDR 元素(IDDR)。
ILOGIC 可以支持以下操作:
ILOGIC 块寄存器具有一个默认情况下为高电平有效的公共时钟使能信号(CE1)。如果未连接,任何存储元素的时钟使能引脚都会默认为活动状态。 ILOGIC 块寄存器具有公共的同步或异步设置和复位(SR 信号)。设置/复位输入引脚 SR 强制存储元素进入由 SRVAL 属性指定的状态。复位条件优先于设置条件。 SRVAL 属性可以单独设置每个 ILOGIC 块中的每个存储元素,但不能单独设置每个 ILOGIC 块中的存储元素的同步或异步设置/复位(SRTYPE)。
以下各节讨论了 ILOGIC 块内部的各种资源。
组合逻辑输入路径用于在输入驱动器和 FPGA 逻辑之间创建直接连接。当以下情况自动使用此路径时:
7 系列器件在 ILOGIC 块中具有专用寄存器,用于实现输入双数据速率(DDR)寄存器。通过实例化 IDDR 原语来使用此功能。
输入到 I/O 块的所有时钟都是完全多路复用的,即 ILOGIC 和 OLOGIC 块之间没有时钟共享。IDDR 原语支持以下操作模式:
SAME_EDGE 和 SAME_EDGE_PIPELINED 模式与 Virtex-6 架构相同。这些模式允许设计者将下降沿数据传输到 ILOGIC 块内的上升沿域,从而节省 CLB 和时钟资源,提高性能。这些模式使用 DDR_CLK_EDGE 属性实现。以下各节详细描述了每种模式。
在 SAME_EDGE 模式下,数据在相同的时钟边沿被呈现到 FPGA 逻辑中。这种结构类似于 Virtex-6 FPGA 的实现。
图2-6显示了使用 SAME_EDGE 模式的输入 DDR 的时序图。在时序图中,输出对 Q1 和 Q2 不再是 (0) 和 (1)。相反,首先呈现的是 Q1 对 (0) 和 Q2 对(不关心),接着是下一个时钟周期上的对 (1) 和 (2)。
同一时钟上下沿的数据不对齐。
在SAME_EDGE_PIPELINED模式下,数据在同一时钟沿上被提供给FPGA逻辑。
与SAME_EDGE模式不同,数据对并没有在一个时钟周期内分离。但是,需要额外的时钟延迟来消除SAME_EDGE模式的分离效应。图2-7显示了使用SAME_EDGE_PIPELINED模式的输入DDR的时序图。输出对Q1和Q2在同一时刻提供给FPGA逻辑。
图2-8显示了IDDR原语的块图。不能同时支持设置和复位。
注意:
IDDR原语包含设置和复位引脚。但是每个IDDR只能使用一个引脚,因此描述中使用了S/R代替单独的设置和复位引脚。
库指南中包括了在VHDL和Verilog中实例化IDDR原语的模板。
本节描述了ILOGIC块内各种资源相关的时序。
ILOGIC 时序特性
图2-9说明了ILOGIC寄存器时序。当使用IDELAY时,TIDOCK会被TIDOCKD替代。
时钟事件1
时钟事件4
ILOGIC 时序特性,DDR
图2-10说明了IDDR模式下的ILOGIC时序特性。当使用IDELAY时,TIDOCK会被TIDOCKD替代。所示的示例使用了OPPOSITE_EDGE模式的IDDR。对于其他模式,请根据图2-7中所示的适当延迟添加。
时钟事件1
时钟事件4
时钟事件9
每个I/O块都包含一个可编程延迟原语,称为IDELAYE2。IDELAY可以连接到ILOGICE2/ISERDESE2或ILOGICE3/ISERDESE2块。
IDELAYE2是一个31级、环绕式的延迟原语,具有校准的级分辨率。请参考7系列FPGA数据手册获取延迟值。它可以应用于组合逻辑输入路径、寄存器输入路径或两者。它还可以直接从FPGA逻辑中访问。IDELAY允许根据每个输入引脚独立延迟传入信号。级延迟分辨率通过7系列FPGA数据手册中指定的范围内的IDELAYCTRL参考时钟进行连续校准。
图2-11显示了IDELAYE2原语。
IDELAY_TYPE 属性
IDELAY_TYPE属性设置所使用的延迟类型。
当IDELAY_TYPE属性设置为FIXED时,级延迟值在由IDELAY_VALUE属性设置确定的级数上固定。此值预设且不能在配置后更改。
当IDELAY_TYPE属性设置为VARIABLE时,将选择可变级延迟。可以通过设置CE = 1和INC = 1来增加级延迟,或通过CE = 1和INC = 0来减小级延迟。增量/减量操作与C同步进行。
当IDELAY_TYPE属性设置为VAR_LOAD或VAR_LOAD_PIPE时,可更改并动态加载可变级延迟。可以通过设置CE = 1和INC = 1来增加级延迟,或通过CE = 1和INC = 0来减小级延迟。增量/减量操作与C同步进行。在此模式下,LD引脚加载在VAR_LOAD模式中CNTVALUEIN中呈现的值,或在VAR_LOAD_PIPE模式中先前写入到流水线寄存器中的值。这允许动态设置级延迟的值。
IDELAY_VALUE 属性
IDELAY_VALUE属性指定初始级延迟的级数。可能的值是从0到31的任何整数。默认值为零。在级延迟被复位(通过断言LD引脚)时,级延迟的值将恢复为IDELAY_VALUE。在VARIABLE模式下,此属性确定延迟线的初始设置。在VAR_LOAD或VAR_LOAD_PIPE模式下,不使用此属性,因此延迟线的初始值始终为零。
HIGH_PERFORMANCE_MODE 属性
当为TRUE时,此属性减少了输出抖动。抖动的减小导致IDELAYE2原语的功耗略微增加。
SIGNAL_PATTERN 属性
时钟和数据信号具有不同的电气特性,因此在IDELAY链中累积不同数量的抖动。通过设置SIGNAL_PATTERN属性,用户可以在计算时序时适当地考虑抖动。时钟信号是周期性的,不具有连续的1或0的长序列,而数据是随机的,可以具有长序列和短序列的1和0。
IDELAY 模式
在作为IDELAY时,数据输入来自IBUF或FPGA逻辑,输出到ILOGICE2/ISERDESE2或ILOGICE3/ISERDESE2。有四种可用的操作模式:
IDELAY时序
表2-8显示了IDELAY的切换特性。
图2-12显示了一个IDELAY(IDELAY_TYPE = VARIABLE,IDELAY_VALUE = 0,DELAY_SRC = IDATAIN)的定时图。
时钟事件1
在C的上升沿上,检测到复位(LD为高电平),导致输出DATAOUT选择来自31级链的级0作为输出。
时钟事件2
在C的上升沿上捕获到CE和INC的脉冲。这表示一个递增操作。输出从级0无故障地变为级1。参见递增/递减操作后的稳定性。
时钟事件3
CE和INC不再被激活,从而完成递增操作。输出将永远停留在级1,除非LD、CE或INC引脚有进一步的活动。 图2-13显示了VAR_LOAD模式下IDELAY的定时图。
时钟事件0
在脉冲LD之前,级设置和因此CNTVALUEOUT的值是未知的。
时钟事件1
在C的上升沿上,检测到LD为高电平,导致输出DATAOUT具有由CNTINVALUE定义的延迟,并将级设置更改为级2。CNTVALUEOUT被更新以表示新的级值。
时钟事件2
在C的上升沿上捕获到CE和INC的脉冲。这表示一个递增操作。输出从级2无故障地变为级3。CNTVALUEOUT被更新以表示新的级值。
时钟事件3
在C的上升沿上,检测到LD为高电平,导致输出DATAOUT被CNTINVALUE延迟。CNTVALUEOUT显示级设置的值。输出将停留在级10,除非LD、CE或INC引脚有进一步的活动。
递增/递减操作后的稳定性
图2-12显示了延迟线在响应INC和CE命令时从级0变为级1。显然,当级0处的数据值与级1处的数据值不同时,输出必须改变状态。然而,当级0和级1处的数据值相同时(例如,都为0或都为1),则从级0到级1的过渡不会对输出造成任何毛刺或干扰。可以通过想象接收器数据信号通过IDELAY级链来更好地理解这个概念。如果级0和级1都接近接收器数据眼的中心,那么在级0处采样的数据与在级1处采样的数据没有区别。在这种情况下,从级0到级1的过渡不会对输出产生任何变化。为了确保这一点,IDELAY的递增/递减操作被设计为无毛刺。相同的解释也适用于图2-13中显示的VAR_LOAD行为。然而,VAR_LOAD可以改变延迟超过一个级,这可能会导致样本点远离当前眼中心点。
因此,用户可以在实时传递通过IDELAYE2原语的实时用户数据时动态调整IDELAY级设置。只要当前的延迟线值接近接收数据眼的中央,这些调整不会干扰实时用户数据。
在时钟信号路径中使用IDELAYE2原语时,无毛刺行为也适用。调整级设置不会导致输出上的毛刺或干扰,只要延迟线值不接近接收到的时钟信号中看到的边缘。在这种情况下,可以调整时钟路径中IDELAYE2原语的级设置,而不会干扰可能在该时钟上运行的任何时钟管理元素或状态机。
IDELAY VHDL和Verilog 所有原语和子模块的VHDL和Verilog实例化模板都可以在Libraries Guide中找到。
IDELAYCTRL概述
如果实例化了IDELAYE2或ODELAYE2原语,则还必须实例化IDELAYCTRL模块。IDELAYCTRL模块不断校准其区域内各个延迟级(IDELAY/ODELAY),以减小工艺、电压和温度变化的影响。IDELAYCTRL模块使用用户提供的REFCLK校准IDELAY和ODELAY。
IDELAYCTRL原语
图2-14显示了IDELAYCTRL原语。
IDELAYCTRL端口
RST - 复位
复位输入引脚(RST)是一个主动高电平的异步复位。为确保正确的IDELAY和ODELAY操作,必须在配置后重置IDELAYCTRL,并且REFCLK信号稳定。需要复位脉冲宽度TIDELAYCTRL_RPW。
复位需要时钟稳定,宽度有要求。
REFCLK - 参考时钟
参考时钟(REFCLK)为IDELAYCTRL提供时间参考,以校准同一区域内(如何理解)的所有IDELAY和ODELAY模块。此时钟必须由全局或水平时钟缓冲器(BUFG或BUFH)驱动。REFCLK必须是FIDELAYCTRL_REF ± 指定的ppm公差(IDELAYCTRL_REF_PRECISION)以保证指定的IDELAY和ODELAY分辨率(TIDELAYRESOLUTION)。REFCLK可以直接来自用户提供的源或MMCM,并且必须路由到全局时钟缓冲器。
RDY - 就绪
就绪(RDY)信号指示特定区域内的IDELAY和ODELAY模块何时完成校准。如果REFCLK保持高电平或低电平超过一个时钟周期,RDY信号将被去激活。如果RDY被去激活为低电平,则必须重置IDELAYCTRL模块。实现工具允许RDY未连接/忽略。图2-15说明了RDY与RST之间的时序关系。
IDELAYCTRL时序
表2-9显示了IDELAYCTRL的切换特性。
如图2-15所示,7系列FPGA的IDELAYCTRL RST是边沿触发信号。
IDELAYCTRL位置
IDELAYCTRL模块存在于每个时钟区域中的每个I/O列中。一个IDELAYCTRL模块会校准其时钟区域内的所有IDELAYE2和ODELAYE2模块。有关时钟区域的定义,请参阅7系列FPGA时钟用户指南。
图2-16说明了IDELAYCTRL模块的相对位置。
IDELAYCTRL的使用和设计指南
有关放置和锁定IDELAYCTRL的更多信息,请参阅约束指南。
OLOGIC块位于I/O块(IOB)旁边。OLOGIC是一个专用的同步块,通过IOB将数据发送出FPGA。OLOGIC资源的类型有OLOGICE2(HR I/O bank)和OLOGICE3(HP I/O bank)。尽管在本指南中称为OLOGIC,但除非明确界定,
OLOGICE2和OLOGICE3在功能上是相同的,它们的端口也是相同的。 OLOGICE2和OLOGICE3不是原语,不能被实例化。它们包含用户实例化的元素,如放置和路由后的输出触发器(OFD)或输出DDR元件(ODDR)。
OLOGIC由两个主要块组成,一个用于配置输出数据路径,另一个用于配置三态控制路径。这两个块具有公共时钟(CLK),但具有不同的使能信号OCE和TCE。两者都具有独立的SRVAL属性控制的异步和同步设置和复位(S/R信号)。
输出和三态路径可以独立配置为以下模式之一。
图2-17说明了OLOGIC块中的各种逻辑资源。
本文档的这一部分讨论了使用OLOGIC资源可以使用的各种功能。
组合式输出数据和三态控制路径
组合输出路径从FPGA逻辑到输出驱动器或输出驱动器控制创建了直接连接。当满足以下条件时,软件将自动使用这些路径:
输出DDR概述(ODDR)
7系列器件在OLOGIC中具有专用寄存器,用于实现输出DDR寄存器。在实例化ODDR原语时可以访问此功能。当使用OLOGIC时,DDR多路复用是自动的,无需手动控制多路复用选择。此控制信号由时钟生成。
ODDR原语只有一个时钟输入。下降沿数据由输入时钟的局部反相版本锁存。进入I/O块的所有时钟都是完全多路复用的,即ILOGIC或OLOGIC块之间没有时钟共享。ODDR原语支持以下操作模式:
同一边缘模式与Virtex-6架构相同。这种模式允许设计者在ODDR时钟的上升沿上同时提供ODDR原语的两个数据输入,从而节省CLB和时钟资源,提高性能。这种模式使用DDR_CLK_EDGE属性实现。它也支持三态控制。接下来的几节将详细描述每种模式。
OPPOSITE_EDGE模式
在OPPOSITE_EDGE模式下,时钟(CLK)的两个边沿都用于以两倍的吞吐量捕获来自FPGA逻辑的数据。这个结构类似于Virtex-6 FPGA的实现。两个输出都呈现给IOB的数据输入或三态控制输入。使用OPPOSITE_EDGE模式的输出DDR的时序图如图2-18所示。
SAME_EDGE模式
在SAME_EDGE模式下,数据可以在相同的时钟边沿呈现给IOB。在相同的时钟边沿将数据呈现给IOB可以避免设置时间违规,并允许用户在最小的寄存器到寄存器延迟的情况下执行更高的DDR频率,而不是使用CLB寄存器。图2-19显示了使用SAME_EDGE模式的输出DDR的时序图。
时钟转发
输出DDR可以将时钟的复制转发到输出。这对于传播具有相同延迟的时钟和DDR数据以及多时钟生成非常有用,其中每个时钟负载都有一个唯一的时钟驱动器。通过将ODDR原语的D1输入连接到高电平,将D2输入连接到低电平来实现这一点。Xilinx建议使用此方案将时钟从FPGA逻辑转发到输出引脚。
Output DDR原语(ODDR)
图2-20显示了ODDR原语的框图。不支持同时设置和复位。
ODDR VHDL和Verilog模板
“库指南”中包含了在VHDL和Verilog中实例化ODDR模块的模板。
OLOGIC Timing Models
本节讨论与OLOGIC块相关的所有时序模型。表2-12描述了7系列FPGA数据手册中的OLOGIC开关特性的功能和控制信号。
Timing Characteristics
图2-21说明了OLOGIC输出寄存器的时序。
时钟事件1
时钟事件4
在时钟事件4之前的TOSRCK时间点,S/R信号(在此情况下配置为同步复位)变为有效高电平,将输出寄存器复位,并在时钟事件4之后的TRQ时间点上反映在OQ输出上。
图2-22说明了OLOGIC ODDR寄存器的时序。
时钟事件1
时钟事件2
时钟事件9
在时钟事件9之前的TOSRCK时间点(CLK的上升沿),S/R信号(在此情况下配置为同步复位)变为有效高电平,将ODDR寄存器复位,反映在时钟事件9之后的OQ输出上(在这种情况下,OQ输出没有变化),并将ODDR寄存器复位,反映在时钟事件10之后的OQ输出上(在这种情况下,OQ输出没有变化)。
图2-23说明了OLOGIC 3态寄存器的时序。
时钟事件1
时钟事件2
图2-24说明了IOB DDR 3态寄存器的时序。本示例使用了DDR在相对边沿模式下。对于其他模式,请根据图2-7中显示的适当延迟添加。
时钟事件1
时钟事件2
时钟事件9
每个HP(高性能)I/O块都包含一个可编程的绝对延迟原语,称为ODELAYE2。 ODELAY可以连接到OLOGICE2/OSERDESE2块。 ODELAY是一个31分tap、wraparound、带有校准tap分辨率的延迟原语。请参考7系列FPGA数据手册以获取延迟值。它可以应用于组合输出路径或已注册的输出路径。也可以直接从FPGA逻辑中访问。ODELAY允许个别延迟出去的信号延迟。通过选择7系列FPGA数据手册中指定的范围内的IDELAYCTRL参考时钟,可以改变tap延迟分辨率。
ODELAYE2原语
图2-25显示了ODELAYE2原语。
ODELAY端口
来自FPGA OLOGICE2/OSERDESE2的数据输入 - ODATAIN
ODATAIN输入由OLOGICE2/OSERDESE2驱动。ODATAIN驱动DATAOUT端口,该端口由ODELAY_VALUE设置的延迟连接到IOB。
来自时钟缓冲区的时钟输入 - CLKIN
CLKIN输入来自时钟缓冲区(BUFIO、BUFG或BUFR)。然后,此时钟通过设置为ODELAY_VALUE的值延迟,并通过DATAOUT和输出缓冲器(OBUFT或OBUFTDS)输出。当使用IOBUF时,延迟的时钟可以路由回FPGA逻辑。
注意!在使用IOBUF将时钟路由回FPGA时,要注意使用了FPGA的一个封装引脚。
数据输出 - DATAOUT
从两个数据输入端口中的一个延迟的数据。DATAOUT连接到IOB。
时钟输入 - C
ODELAYE2原语的所有控制输入(LD、CE和INC)都与时钟输入(C)同步。在VARIABLE、VAR_LOAD或VAR_LOAD_PIPE模式下配置ODELAY时,必须连接时钟到此端口。C可以本地反转,必须由全局或区域时钟缓冲器提供。此时钟必须连接到SelectIO逻辑资源中使用的相同时钟。例如,当使用OSERDESE2时,C连接到CLKDIV相同的时钟。如果在与ODELAYE2原语相同的I/O bank中使用IDELAYE2原语,则C必须为两个原语使用相同的时钟网络。
模块加载 - LD
在VARIABLE模式下,ODELAY加载端口LD将延迟原语加载到由ODELAY_VALUE属性设置的值。如果未指定这些属性,则假定值为零。LD信号是一个主动高电平的信号,与输入时钟信号(C)同步。
在VAR_LOAD模式下,ODELAY加载端口LD将延迟原语加载到由CNTVALUEIN设置的值。CNTVALUEIN[4:0]处的值将是新的tap值。由于此功能,将忽略ODELAY_VALUE属性。 在VAR_LOAD_PIPE模式下,IDELAY加载端口LD将当前在Pipeline 寄存器中的值加载。Pipeline 寄存器中存在的值将是新的tap值。
Pipeline寄存器加载 - LDPIPEEN
当高电平时,此输入将Pipeline 寄存器加载到CNTVALUEIN引脚上当前的值。
Pipeline 寄存器复位 - REGRST
当高电平时,此输入将Pipeline 寄存器复位为全零。
C引脚极性切换 - CINVCTRL
CINVCTRL引脚用于动态切换C引脚的极性。这是在不需要毛刺的应用中使用的。在切换极性时,不要在两个时钟周期内使用ODELAY控制引脚。
计数值输入 - CNTVALUEIN
CNTVALUEIN引脚与LD引脚一起用于动态切换可加载的tap值。
计数值输出 - CNTVALUEOUT
CNTVALUEOUT引脚用于报告加载的tap值。
增量/减量信号 - CE、INC
增量/减量由使能信号(CE)控制。此接口仅在ODELAY处于VARIABLE、VAR_LOAD或VAR_LOAD_PIPE模式时可用。
只要CE保持高电平,ODELAY将每个时钟(C)周期以TIDELAYRESOLUTION递增或递减。INC的状态确定ODELAY是否递增或递减;INC = 1时递增,INC = 0时递减,与时钟(C)同步。如果CE为低电平,则ODELAY的延迟不会改变,无论INC的状态如何。
当CE变为高电平时,增量/减量操作将在下一个正时钟周期开始。当CE变为低电平时,增量/减量操作将在下一个正时钟沿停止。
ODELAYE2原语中的可编程延迟tap是环绕的。当达到延迟tap的末端(tap 31)时,后续的增量函数将返回到tap 0。减量功能也是如此:减小到零以下会移动到tap 31。 VAR_LOAD_PIPE模式中的Pipeline 寄存器功能在总线结构设计中非常有用。可以逐个加载个别延迟(管道),然后使用LD引脚将所有延迟同时更新为其新值。
ODELAY_TYPE属性
当设置为FIXED时,tap延迟值固定为由ODELAY_VALUE属性设置确定的分段数量。此值预设且在配置后无法更改。
当设置为VARIABLE时,选择可变的tap延迟。可以通过设置CE = 1和INC = 1来增加tap延迟,或通过CE = 1和INC = 0来减少tap延迟。增量/减量操作与C同步进行。
当设置为VAR_LOAD或VAR_LOAD_PIPE时,可更改并动态加载可变的tap延迟。可以通过设置CE = 1和INC = 1来增加tap延迟,或通过CE = 1和INC = 0来减少tap延迟。增量/减量操作与C同步进行。
在VAR_LOAD模式下,LD引脚加载CNTVALUEIN上呈现的值。这允许动态设置tap值。在VAR_LOAD_PIPE模式下,LD引脚启用将管道寄存器中的当前值加载到输出延迟中。
ODELAY_VALUE属性
ODELAY_VALUE属性指定tap延迟。可能的值是从0到31的任何整数。默认值为零。通过在断言LD信号时将tap延迟复位,tap延迟的值将恢复为ODELAY_VALUE。在VAR_LOAD或VAR_LOAD_PIPE模式下,假定此属性为零。
HIGH_PERFORMANCE_MODE属性
当为TRUE时,此属性减少了输出抖动。抖动减小导致ODELAYE2原语的功耗略有增加。
SIGNAL_PATTERN属性
时钟和数据信号具有不同的电气特性,因此在ODELAY链中积累不同量的抖动。通过设置SIGNAL_PATTERN属性,用户可以在计算时序时适当地考虑抖动。时钟信号具有周期性,没有连续的连续1或0序列,而数据具有随机性,可以具有长短不一的1和0序列。
ODELAY模式
当用作ODELAY时,数据输入来自IBUF或FPGA逻辑,输出到ILOGICE2/ISERDESE2或ILOGICE3/ISERDESE2。有四种可用的操作模式:
有关更多详细信息,请参阅IDELAYCTRL用法和设计准则。在VARIABLE模式中使用的控制引脚在表2-6中描述。
可加载可变延迟模式(ODELAY_TYPE = VAR_LOAD)
除了在此模式中具有(ODELAY_TYPE = VARIABLE)的相同功能外,ODELAY tap还可以通过来自FPGA逻辑的5输入位CNTVALUEIN<4:0>进行加载。当LD脉冲时,CNTVALUEIN<4:0>上呈现的值将成为新的tap值。由于此功能,将忽略ODELAY_VALUE属性。在此模式下使用时,必须实例化IDELAYCTRL原语。有关更多详细信息,请参阅IDELAYCTRL用法和设计准则。在VAR_LOAD模式下使用的控制引脚在表2-7中描述。
ODELAY Timing
图2-26显示了ODELAYE2(ODELAY_TYPE = VARIABLE,ODELAY_VALUE = 0,DELAY_SRC = CLKIN/ODATAIN)的时序图。
时钟事件1
在C的上升沿上检测到复位(LD为高),导致输出DATAOUT选择来自31个延迟tap链的tap 0作为输出。 时钟事件2 在C的上升沿上捕获到CE和INC的脉冲,表示增量操作。输出从tap 0到tap 1变化,没有毛刺。请参阅增量/减量操作后的稳定性。
时钟事件3
不再断言CE和INC,因此完成了增量操作。输出将无限期保持在tap 1,直到LD、CE或INC引脚有进一步活动为止。
图2-27显示了ODELAY的时序图。
时钟事件0
在脉冲LD之前,tap设置和CNTVALUEOUT的值未知。
时钟事件1
在C的上升沿上检测到LD为高,导致输出DATAOUT等于CNTINVALUE,并将tap设置更改为tap 2。CNTVALUEOUT更新以表示新的tap值。
时钟事件2
在C的上升沿上捕获到CE和INC的脉冲,表示增量操作。输出从tap 2到tap 3变化,没有毛刺。CNTVALUEOUT更新以表示新的tap值。
时钟事件3
在C的上升沿上检测到LD,导致输出DATAOUT等于CNTINVALUE。CNTVALUEOUT显示tap设置的值。输出将无限期保持在tap 10,直到LD、CE或INC引脚有进一步活动为止。
增量/减量操作后的稳定性
图2-26显示了ODELAY线在响应INC和CE命令时从tap 0变为tap 1。显然,当tap 0处的数据值与tap 1处的数据值不同时,输出必须更改状态。但是,当tap 0和tap 1处的数据值相同时(例如,都为0或都为1),则从tap 0到tap 1的过渡不会对输出造成毛刺或干扰。通过想象发射器数据信号通过ODELAY tap链的方式,可以更好地理解这个概念。如果tap 0和tap 1都接近传输信号的中心,那么tap 0处的数据与tap 1处的数据将没有任何不同。在这种情况下,从tap 0到tap 1的过渡不会对输出造成任何更改。为了确保这一点,ODELAY的增量/减量操作被设计成无毛刺。
因此,只要当前的延迟线值接近传输数据信号的中心,用户可以在实时传递用户数据的同时动态调整ODELAY tap设置。只要当前的延迟线值接近传输数据信号的中心,这些调整不会干扰实时用户数据。 当ODELAYE2原语用于时钟信号的路径时,无毛刺行为也适用。调整tap设置不会导致输出上的毛刺或干扰。
ODELAY VHDL和Verilog实例化模板
所有原语和子模块的VHDL和Verilog实例化模板可在Libraries Guide中找到。 在VHDL中,每个模板都有一个组件声明部分和一个体系结构部分。模板的每个部分都应插入到VHDL设计文件中。体系结构部分的端口映射应包括设计信号名称。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。