当前位置:   article > 正文

A7 I/O资源_a7 ddr io

a7 ddr io

本文主要参考UG471《7 Series FPGAs SelectIO Resources

一、IO资源

        7系列FPGA包含了来自前一代Xilinx FPGA的基本I/O逻辑资源。这些资源包括以下内容:

  1. 组合输入/输出
  2. 3态输出控制
  3. 端口寄存器 输入/输出
  4. 寄存器3态输出控制
  5. 双数据速率(DDR)输入/输出
  6. DDR输出3态控制
  7. IDELAY提供用户可调节的、精细分辨率延迟调整
  8. ODELAY提供用户可调节的、精细分辨率延迟调整
  9. SAME_EDGE输出DDR模式
  10. SAME_EDGE和SAME_EDGE_PIPELINED输入DDR模式

        图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 资源

          ILOGIC 块位于 I/O 块(IOB)旁边。ILOGIC 块包含用于捕获数据的同步元件,这些数据通过 IOB 进入 FPGA。在 7 系列器件中,可以配置的 ILOGIC 是 ILOGICE2(HP I/O 存储器块)和 ILOGICE3(HR I/O 存储器块)。尽管在本指南中始终被称为 ILOGIC,除非明确指定,否则 ILOGICE2 和 ILOGICE3 在功能上是相同的,它们的端口也是相同的。ILOGICE2 和 ILOGICE3 之间唯一的区别是:

  1. ILOGICE3 位于 HR 存储器块中,具有零保持延迟元素(ZHOLD)。
  2. ILOGICE2 位于 HP 存储器块中,不具有 ZHOLD 元素。

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 可以支持以下操作

  1. 边沿触发的 D 类型触发器
  2. IDDR 模式(OPPOSITE_EDGE、SAME_EDGE 或 SAME_EDGE_PIPELINED)。有关输入 DDR 的更多讨论,请参阅输入 DDR 概述(IDDR),第109页。
  3. 电平敏感型锁存器
  4. 异步/组合逻辑

        ILOGIC 块寄存器具有一个默认情况下为高电平有效的公共时钟使能信号(CE1)。如果未连接,任何存储元素的时钟使能引脚都会默认为活动状态。 ILOGIC 块寄存器具有公共的同步或异步设置和复位(SR 信号)。设置/复位输入引脚 SR 强制存储元素进入由 SRVAL 属性指定的状态。复位条件优先于设置条件。 SRVAL 属性可以单独设置每个 ILOGIC 块中的每个存储元素,但不能单独设置每个 ILOGIC 块中的存储元素的同步或异步设置/复位(SRTYPE)。

以下各节讨论了 ILOGIC 块内部的各种资源。

2.1、组合逻辑输入路径 

        组合逻辑输入路径用于在输入驱动器和 FPGA 逻辑之间创建直接连接。当以下情况自动使用此路径时:

  1. 在 FPGA 逻辑中,从输入数据到逻辑资源存在直接(非寄存器)连接。
  2. 将 pack I/O 寄存器/锁存器映射指令设置为 OFF。 (即不使用IO端口寄存器,单端输出信号一般建议使用,时序更可控制

2.2、输入 DDR 概述(IDDR) 

        7 系列器件在 ILOGIC 块中具有专用寄存器,用于实现输入双数据速率(DDR)寄存器。通过实例化 IDDR 原语来使用此功能。

        输入到 I/O 块的所有时钟都是完全多路复用的,即 ILOGIC 和 OLOGIC 块之间没有时钟共享。IDDR 原语支持以下操作模式:

  1. OPPOSITE_EDGE 模式
  2. SAME_EDGE 模式
  3. SAME_EDGE_PIPELINED 模式

        SAME_EDGE 和 SAME_EDGE_PIPELINED 模式与 Virtex-6 架构相同。这些模式允许设计者将下降沿数据传输到 ILOGIC 块内的上升沿域,从而节省 CLB 和时钟资源,提高性能。这些模式使用 DDR_CLK_EDGE 属性实现。以下各节详细描述了每种模式。

2.2.1、OPPOSITE_EDGE 模式 

        传统的输入 DDR 解决方案,或称 OPPOSITE_EDGE 模式,通过 ILOGIC 块中的单个输入来实现。数据在时钟上升沿通过输出 Q1 提交给 FPGA 逻辑,并在时钟下降沿通过输出 Q2 提交给 FPGA 逻辑。这种结构类似于 Virtex-6 FPGA 的实现。图2-5显示了使用 OPPOSITE_EDGE 模式的输入 DDR 的时序图。2.2.2、SAME_EDGE 模式 

        在 SAME_EDGE 模式下,数据在相同的时钟边沿被呈现到 FPGA 逻辑中。这种结构类似于 Virtex-6 FPGA 的实现。

        图2-6显示了使用 SAME_EDGE 模式的输入 DDR 的时序图。在时序图中,输出对 Q1 和 Q2 不再是 (0) 和 (1)。相反,首先呈现的是 Q1 对 (0) 和 Q2 对(不关心),接着是下一个时钟周期上的对 (1) 和 (2)。

同一时钟上下沿的数据不对齐。


2.2.3、SAME_EDGE_PIPELINED模式

         在SAME_EDGE_PIPELINED模式下,数据在同一时钟沿上被提供给FPGA逻辑。

        与SAME_EDGE模式不同,数据对并没有在一个时钟周期内分离。但是,需要额外的时钟延迟来消除SAME_EDGE模式的分离效应。图2-7显示了使用SAME_EDGE_PIPELINED模式的输入DDR的时序图。输出对Q1和Q2在同一时刻提供给FPGA逻辑。

2.2.3、输入 DDR 资源(IDDR) 

        图2-8显示了IDDR原语的块图。不能同时支持设置和复位。

注意

        IDDR原语包含设置和复位引脚。但是每个IDDR只能使用一个引脚,因此描述中使用了S/R代替单独的设置和复位引脚。

        库指南中包括了在VHDL和Verilog中实例化IDDR原语的模板。

2.2.4、ILOGIC 时序模型 

本节描述了ILOGIC块内各种资源相关的时序。

ILOGIC 时序特性 

图2-9说明了ILOGIC寄存器时序。当使用IDELAY时,TIDOCK会被TIDOCKD替代。

时钟事件1

  1. 在时钟事件1之前的时间TICE1CK,输入时钟使能信号在输入寄存器的CE1输入处变为有效高电平,从而使输入寄存器对传入的数据启用。
  2. 在时钟事件1之前的时间TIDOCK,输入信号在输入寄存器的D输入处变为有效高电平,并在时钟事件1之后的时间TICKQ时反映在输入寄存器的Q1输出上。

时钟事件4

  1. 在时钟事件4之前的时间TISRCK,S/R信号(在此情况下配置为同步复位)变为有效高电平,将输入寄存器复位,并在时钟事件4之后的时间TICKQ时反映在IOB的Q1输出上。

ILOGIC 时序特性,DDR 

图2-10说明了IDDR模式下的ILOGIC时序特性。当使用IDELAY时,TIDOCK会被TIDOCKD替代。所示的示例使用了OPPOSITE_EDGE模式的IDDR。对于其他模式,请根据图2-7中所示的适当延迟添加。

时钟事件1

  1. 在时钟事件1之前的时间TICE1CK,输入时钟使能信号在两个DDR输入寄存器的CE1输入处变为有效高电平,从而使它们对传入的数据启用。由于CE1和D信号对两个DDR寄存器都是共用的,因此必须小心地在时钟上升沿和下降沿之间切换这些信号,并满足相对于这两个边沿的寄存器建立时间。
  2. 在时钟事件1之前的时间TIDOCK(CLK上升沿)之前,输入信号在两个寄存器的D输入处变为有效高电平,并在时钟事件1之后的时间TICKQ时反映在输入寄存器1的Q1输出上。

时钟事件4

  1. 在时钟事件4之前的时间TIDOCK(CLK下降沿)之前,输入信号在两个寄存器的D输入处变为有效低电平,并在时钟事件4之后的时间TICKQ时反映在输入寄存器2的Q2输出上(在此情况下没有变化)。

时钟事件9

  1. 在时钟事件9之前的时间TISRCK,S/R信号(在此情况下配置为同步复位)变为有效高电平,将Q1在时钟事件9之后的时间TICKQ时复位,并在时钟事件10之后的时间TICKQ时将Q2复位。

三、输入延迟资源(IDELAY) 

        每个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_TYPE = FIXED) 在固定延迟模式下,延迟值在配置时预设为由属性IDELAY_VALUE确定的级数。一旦配置,此值不能更改。在此模式下使用时,必须实例化IDELAYCTRL原语。有关详细信息,请参见IDELAYCTRL使用和设计指南。
  • 可变延迟模式(IDELAY_TYPE = VARIABLE) 在可变延迟模式下,延迟值可以在配置后通过操作控制信号CE和INC来更改。在此模式下使用时,必须实例化IDELAYCTRL原语。有关详细信息,请参见IDELAYCTRL使用和设计指南。在VARIABLE模式下使用的控制引脚在表2-6中描述。

  • 可加载的可变延迟模式(IDELAY_TYPE = VAR_LOAD) 除了具有(IDELAY_TYPE = VARIABLE)的相同功能外,在此模式下,可以通过来自FPGA逻辑的5位输入位CNTVALUEIN<4:0>加载IDELAY级延迟。当脉冲LD时,CNTVALUEIN<4:0>处的值将是新的级值。由于这个功能,IDELAY_VALUE属性被忽略。在此模式下使用时,必须实例化IDELAYCTRL原语。有关详细信息,请参见IDELAYCTRL使用和设计指南。在VAR_LOAD模式下使用的控制引脚在表2-7中描述。

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

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模块的相对位置。

  1. 、每个区域有50个IO,左右共享?
  2. 、使用Gclk?
  3. 、IDELAYCTRL是否需要指定位置?

IDELAYCTRL的使用和设计指南 

有关放置和锁定IDELAYCTRL的更多信息,请参阅约束指南。

五、OLOGIC资源 

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信号)。

输出和三态路径可以独立配置为以下模式之一。

  1. 边沿触发的D型触发器
  2. DDR模式(同一边沿或相反边沿)
  3. 电平敏感型锁存器
  4. 异步/组合

图2-17说明了OLOGIC块中的各种逻辑资源。

本文档的这一部分讨论了使用OLOGIC资源可以使用的各种功能。

组合式输出数据和三态控制路径 

组合输出路径从FPGA逻辑到输出驱动器或输出驱动器控制创建了直接连接。当满足以下条件时,软件将自动使用这些路径:

  1. FPGA逻辑中的逻辑资源与输出数据或三态控制之间存在直接(未使用寄存器)连接。
  2. 将I/O寄存器/锁存器包装到IOB的软件映射指令设置为OFF。

输出DDR概述(ODDR)

7系列器件在OLOGIC中具有专用寄存器,用于实现输出DDR寄存器。在实例化ODDR原语时可以访问此功能。当使用OLOGIC时,DDR多路复用是自动的,无需手动控制多路复用选择。此控制信号由时钟生成。

ODDR原语只有一个时钟输入。下降沿数据由输入时钟的局部反相版本锁存。进入I/O块的所有时钟都是完全多路复用的,即ILOGIC或OLOGIC块之间没有时钟共享。ODDR原语支持以下操作模式:

  1. 相反边缘模式
  2. 同一边缘模式

同一边缘模式与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

  1. 在时钟事件1之前的TOOCECK时间点,输出时钟使能信号在输出寄存器的OCE输入上变为有效高电平,启用输出寄存器用于接收数据。
  2. 在时钟事件1之前的TODCK时间点,输出信号在输出寄存器的D1输入上变为有效高电平,并在时钟事件1之后的TOCKQ时间点上反映在OQ输出上。

时钟事件4 

在时钟事件4之前的TOSRCK时间点,S/R信号(在此情况下配置为同步复位)变为有效高电平,将输出寄存器复位,并在时钟事件4之后的TRQ时间点上反映在OQ输出上。

图2-22说明了OLOGIC ODDR寄存器的时序。

时钟事件1 

  1. 在时钟事件1之前的TOOCECK时间点,ODDR时钟使能信号在ODDR的OCE输入上变为有效高电平,启用ODDR用于接收数据。必须注意在CLK的上升沿和下降沿之间切换ODDR寄存器的OCE信号,以及相对于两个时钟沿的寄存器建立时间。
  2. 在时钟事件1之前的TODCK时间点(CLK的上升沿),数据信号D1在ODDR寄存器的D1输入上变为有效高电平,并在时钟事件1之后的TOCKQ时间点上反映在OQ输出上。

时钟事件2 

  1. 在时钟事件2之前的TODCK时间点(CLK的下降沿),数据信号D2在ODDR寄存器的D2输入上变为有效高电平,并在时钟事件2之后的TOCKQ时间点上反映在OQ输出上(在这种情况下,OQ输出没有变化)。

时钟事件9 

在时钟事件9之前的TOSRCK时间点(CLK的上升沿),S/R信号(在此情况下配置为同步复位)变为有效高电平,将ODDR寄存器复位,反映在时钟事件9之后的OQ输出上(在这种情况下,OQ输出没有变化),并将ODDR寄存器复位,反映在时钟事件10之后的OQ输出上(在这种情况下,OQ输出没有变化)。

图2-23说明了OLOGIC 3态寄存器的时序。

时钟事件1

  1. 在时钟事件1之前的TOTCECK时间点,3态时钟使能信号在3态寄存器的TCE输入上变为有效高电平,启用3态寄存器用于接收数据。
  2. 在时钟事件1之前的TOTCK时间点,3态信号在3态寄存器的T输入上变为有效高电平,在时钟事件1之后的TOCKQ时间点将引脚返回到高阻态。

时钟事件2 

  1. 在时钟事件2之前的TOSRCK时间点,S/R信号(在此情况下配置为同步复位)变为有效高电平,将3态寄存器在时钟事件2之后的TRQ时间点复位。

图2-24说明了IOB DDR 3态寄存器的时序。本示例使用了DDR在相对边沿模式下。对于其他模式,请根据图2-7中显示的适当延迟添加。

时钟事件1

  1. 在时钟事件1之前的TOTCECK时间点,3态时钟使能信号在3态ODDR寄存器的TCE输入上变为有效高电平,启用它们用于接收数据。必须注意切换3态ODDR寄存器的TCE信号,以使其在CLK的上升沿和下降沿之间切换,并且满足相对于两个时钟沿的寄存器建立时间。
  2. 在时钟事件1之前的TOTCK时间点(CLK的上升沿),3态信号T1在3态寄存器的T1输入上变为有效高电平,并在时钟事件1之后的TOCKQ时间点上反映在TQ输出上。

时钟事件2

  1.  在时钟事件2之前的TOTCK时间点(CLK的下降沿),3态信号T2在3态寄存器的T2输入上变为有效高电平,并在时钟事件2之后的TOCKQ时间点上反映在TQ输出上(在这种情况下,TQ输出没有变化)。

时钟事件9 

  1. 在时钟事件9之前的TOSRCK时间点(CLK的上升沿),S/R信号(在此情况下配置为同步复位)变为有效高电平,将3态寄存器复位,反映在时钟事件9之后的TQ输出上(在这种情况下,TQ输出没有变化),并将3态寄存器复位,反映在时钟事件10之后的TQ输出上(在这种情况下,TQ输出没有变化)。

六、Output Delay Resources (ODELAY)—Not Available in HR Banks

每个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。有四种可用的操作模式:

  1. 固定延迟模式(ODELAY_TYPE = FIXED) 在固定延迟模式中,延迟值在配置时预设为由属性ODELAY_VALUE确定的分段数。一旦配置,此值无法更改。在此模式下使用时,必须实例化IDELAYCTRL原语。有关更多详细信息,请参阅IDELAYCTRL用法和设计准则。
  2. 可变延迟模式(ODELAY_TYPE = VARIABLE) 在可变延迟模式下,可以通过操纵控制信号CE和INC在配置后更改延迟值。在此模式下使用时,必须实例化IDELAYCTRL原语。

有关更多详细信息,请参阅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设计文件中。体系结构部分的端口映射应包括设计信号名称。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/770751
推荐阅读