前言
本文节选UG471的第二章,进行整理翻译,用于介绍SelectIO资源内部的IDELAY资源和IDELAYCTRL资源。
输入延迟资源 (IDELAY)简介
每个 I/O 模块都包含一个称为 IDELAYE2 的可编程延迟原语。 IDELAY 可以连接到 ILOGICE2/ISERDESE2 或 ILOGICE3/ISERDESE2 块。
IDELAYE2 是一个 31 抽头、环绕式延迟原语,具有校准的抽头分辨率。它可以应用于组合输入路径、注册输入路径或两者。 它也可以直接从 FPGA 逻辑访问。 IDELAY 允许在单个输入引脚的基础上延迟输入信号。 抽头延迟分辨率通过使用 IDELAYCTRL 参考时钟连续校准,该参考时钟来自 7 系列 FPGA 数据手册中指定的范围。
IDELAYE2 原语
IDELAYE2 原语的结构如下:
端口说明
Port Name | Direction | Width | Function |
---|---|---|---|
C | Input | 1 | 在 VARIABLE、VAR_LOAD 或 VAR_LOAD_PIPE 模式下使用的时钟输入。 |
REGRST | Input | 1 | 复位流水线寄存器。 仅用于 VAR_LOAD_PIPE 模式。 |
LD | Input | 1 | 将 IDELAYE2 原语加载到 VARIABLE 模式下的预编程值。 在 VAR_LOAD 模式下,它加载 CNTVALUEIN 的值。 在 VAR_LOAD_PIPE 模式下,它加载当前在流水线寄存器中的值。 |
CE | Input | 1 | 启用递增/递减功能。 |
INC | Input | 1 | 增加/减少抽头延迟的数量。 |
CINVCTRL | Input | 1 | 动态反转时钟 © 极性。 |
CNTVALUEIN | Input | 5 | 来自 FPGA 逻辑的计数器值,用于动态加载抽头值。 |
IDATAIN | Input | 1 | 来自 IBUF 的 IDELAY 数据输入。 |
DATAIN | Input | 1 | 来自 FPGA 逻辑的 IDELAY 数据输入。 |
LDPIPEEN | Input | 1 | 使流水线寄存器能够加载数据。 |
DATAOUT | Output | 1 | 来自两个数据输入端口(IDATAIN 或 DATAIN)之一的延迟数据。 |
CNTVALUEOUT | Output | 5 | 计数器值进入 FPGA 逻辑以监控抽头值。 |
来自 IOB 的数据输入 - IDATAIN
IDATAIN 输入由其关联的 IOB 驱动。 IDELAY 可以将数据驱动到 ILOGICE2/ISERDESE2 或 ILOGICE3/ISERDESE2 模块,直接进入 FPGA 逻辑,或通过 DATAOUT 端口驱动到两者,延迟由 IDELAY_VALUE 设置。
来自 FPGA 逻辑的数据输入 - DATAIN
DATAIN 输入由提供逻辑可访问延迟线的 FPGA 逻辑直接驱动。 数据通过 DATAOUT 端口驱动回 FPGA 逻辑,延迟由 IDELAY_VALUE 设置。 DATAIN 可以局部反转。 无法将数据驱动到 IOB。
数据输出 - DATAOUT
来自两个数据输入端口的延迟数据。 DATAOUT 可以驱动到 ILOGICE2/ISERDESE2 或 ILOGICE3/ISERDESE2 块,直接到 FPGA 逻辑,或两者兼而有之。
时钟输入 - C
IDELAYE2 原语(REGRST、LD、CE 和 INC)的所有控制输入与时钟输入 © 同步。 当 IDELAY 配置为 VARIABLE、VAR_LOAD 或 VAR_LOAD_PIPE 模式时,必须将时钟连接到此端口。 C 可以局部反转,并且必须由全局或区域时钟缓冲器提供。 如果 ODELAYE2 原语与 IDELAYE2 原语在同一个 I/O bank 中使用,C 必须为这两个原语使用相同的时钟网络。
模块负载 - LD
在 VARIABLE 模式下,IDELAY 加载端口 LD 加载由 IDELAY_VALUE 属性设置的值。 IDELAY_VALUE 属性的默认值为零。
使用默认值时,LD 端口作为 ILDELAY 的异步复位。
LD 信号为高电平有效信号,与输入时钟信号 © 同步。
在 VAR_LOAD 模式下,IDELAY 加载端口 LD 加载由 CNTVALUEIN 设置的值。 CNTVALUEIN[4:0] 处的值将是新的抽头值。 在 VAR_LOAD_PIPE 模式下,IDELAY 加载端口 LD 加载流水线寄存器中当前的值。 流水线寄存器中的值将是新的抽头值。
C 引脚极性切换 - CINVCTRL
CINVCTRL 引脚用于动态切换 C 引脚的极性。 这适用于故障不是问题的应用程序。 切换极性时,不要在两个时钟周期内使用 IDELAY 控制引脚。
计数值输入 - CNTVALUEIN
CNTVALUEIN 引脚用于动态切换可加载抽头值。
计数值输出 - CNTVALUEOUT
CNTVALUEOUT 引脚用于报告加载的抽头值。
流水线寄存器复位 - REGRST
当为高电平时,该输入将流水线寄存器复位为全零。
增量/减量信号 - CE、INC
增量/减量由使能信号 (CE) 控制。 此接口仅在 IDELAY 处于 VARIABLE、VAR_LOAD 或 VAR_LOAD_PIPE 模式时可用。
只要 CE 保持高电平,IDELAY 就会在每个时钟 © 周期递增或递减 TIDELAYRESOLUTION。 INC的状态决定IDELAY是递增还是递减; INC = 1 递增,INC = 0 递减,与时钟 © 同步。 如果 CE 为低电平,则无论 INC 的状态如何,通过 IDELAY 的延迟都不会改变。
当 CE 变为高电平时,递增/递减操作在下一个时钟正沿开始。 当 CE 变为低电平时,递增/递减操作在下一个时钟正沿停止。
IDELAYE2 原语中的可编程延迟抽头。 当达到最后一个抽头延迟时(抽头 31),随后的增量函数将返回抽头 0。这同样适用于减量函数:从零开始递减移动到抽头 31。
VAR_LOAD_PIPE 模式下的流水线寄存器功能在总线结构设计中非常有用。 可以使用 LDPIPEEN 一次(流水线)加载单个延迟,然后使用 LD 引脚将所有延迟同时更新为新值。
IDELAY 属性
下表总结了 IDELAY 属性。
Attribute | Value | Default Value | Description |
---|---|---|---|
IDELAY_TYPE | String: FIXED, VARIABLE, VAR_LOAD, or VAR_LOAD_PIPE | FIXED | 设置抽头延迟线的类型。 FIXED 延迟设置静态延迟值。 VAR_LOAD 动态加载抽头值。 VARIABLE delay 动态调整延迟值。 VAR_LOAD_PIPE 类似于 VAR_LOAD 模式,能够存储 CNTVALUEIN 值以备将来更新。 |
DELAY_SRC | String: IDATAIN, DATAIN | IDATAIN | IDATAIN:IDELAY 链输入为 IDATAIN DATAIN:IDELAY 链输入为 DATAIN |
IDELAY_VALUE | Integer: 0 to 31 | 0 | 指定固定模式下的固定延迟抽头数或可变模式下的初始起始抽头数(输入路径)。 当 IDELAY_TYPE 设置为 VAR_LOAD 或 VAR_LOAD_PIPE 模式时,此值将被忽略并假定为零。 |
HIGH_PERFORMANCE_MODE | Boolean: FALSE or TRUE | TRUE | 当为 TRUE 时,此属性会减少输出抖动。 Xilinx Power Estimator 工具对功耗差异进行了量化。 |
SIGNAL_PATTERN | String: DATA, CLOCK | DATA | 使时序分析器考虑数据或时钟路径中适当的延迟链抖动量。 |
REFCLK_FREQUENCY | Real: 190 to 210, 290 to 310, or 390 to 410 | 200 | 设置时序分析器用于静态时序分析的抽头值(以 MHz 为单位)。 290.0 到 310.0 和 390 到 410 的范围并非在所有速度等级中都可用。 请参阅 7 系列 FPGA 数据表。 |
CINVCTRL_SEL | Boolean: FALSE or TRUE | FALSE | 启用 CINVCTRL_SEL 管脚以动态切换 C 管脚的极性。 |
PIPE_SEL | Boolean: FALSE or TRUE | FALSE | 选择流水线模式。 仅当使用 VAR_LOAD_PIPE 操作模式时,该属性才应设置为 TRUE。 |
IDELAY_TYPE 属性
DELAY_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 引脚加载在 CNTVALUEIN 上显示的值 VAR_LOAD 模式或之前在 VAR_LOAD_PIPE 模式下写入流水线寄存器的值。 这允许动态设置抽头值。
IDELAY_VALUE 属性
IDELAY_VALUE 属性指定点击延迟的初始数量。 可能的值是 0 到 31 之间的任何整数。默认值为 0。 当抽头延迟复位(通过置位 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 原语必须被实例化。
-
可变延迟模式(IDELAY_TYPE = VARIABLE)
在可变延迟模式下,延迟值可以在配置后通过操纵控制信号 CE 和 INC 来改变。在该模式下使用时,IDELAYCTRL 原语必须被实例化。
下表中描述了在 VARIABLE 模式下使用的控制引脚。
C | LD | CE | INC | TAP Setting |
---|---|---|---|---|
0 | x | x | x | No Change |
1 | 1 | x | x | IDELAY_VALUE |
1 | 0 | 0 | x | No Change |
1 | 0 | 1 | 1 | Current Value +1 |
1 | 0 | 1 | 0 | Current Value –1 |
1 | 0 | 0 | 0 | No Change |
-
可加载可变延迟模式 (IDELAY_TYPE = VAR_LOAD)
除了在该模式下具有与 (IDELAY_TYPE = VARIABLE) 相同的功能外,IDELAY 抽头还可以通过来自 FPGA 逻辑的 5 输入位 CNTVALUEIN< 4:0 > 加载。 当 LD 产生脉冲时,出现在 CNTVALUEIN< 4:0 > 处的值将是新的抽头值。 由于此功能,IDELAY_VALUE 属性被忽略。 在此模式下使用时,IDELAYCTRL 原语必须被实例化。
下表描述了在 VAR_LOAD 模式下使用的控制引脚。
C | LD | CE | INC | CNTVALUEIN | CNTVALUEOUT | TAP Setting |
---|---|---|---|---|---|---|
0 | x | x | x | x | No Change | No Change |
1 | 1 | x | x | CNTVALUEIN | CNTVALUEIN | CNTVALUEIN |
1 | 0 | 0 | x | x | No Change | No Change |
1 | 0 | 1 | 1 | x | Current Value +1 | Current Value +1 |
1 | 0 | 1 | 0 | x | Current Value –1 | Current Value –1 |
1 | 0 | 0 | 0 | 0 | No Change | No Change |
IDELAY 时序
下表显示了 IDELAY 开关特性。
Symbol | Description |
---|---|
TIDELAYRESOLUTION | IDELAY抽头分辨率 |
TICECK/TICKCE | 相对于 C的CE 引脚建立/保持时间 |
TIINCCK/TICKINC | 相对于 C的INC 引脚建立/保持时间 |
TIRSTCK/TICKRST | 相对于 C 的 LD 引脚建立/保持时间 |
示例时序
下图显示了 IDELAY(IDELAY_TYPE = VARIABLE、IDELAY_VALUE = 0 和 DELAY_SRC = IDATAIN)时序图。
时钟事件 1
在 C 的上升沿,检测到复位(LD 为高电平),导致输出 DATAOUT 选择抽头 0 作为 31 抽头链的输出。
时钟事件 2
在 C 的上升沿捕获 CE 和 INC 上的脉冲。这表示增量操作。 输出从抽头 0 到抽头 1 无毛刺地变化。
时钟事件 3
CE 和 INC 不再有效,从而完成递增操作。 输出无限期地保持在抽头 1,直到 LD、CE 或 INC 引脚上有进一步的活动。
VAR_LOAD 模式
下图显示了 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 引脚上有进一步的活动。
递增/递减操作后的稳定性
下图显示了响应 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 原语的抽头设置,而不会中断任何时钟管理元素或可能在该时钟上运行的状态机。
IDELAYCTRL简介
IDELAYCTRL 概述
如果实例化 IDELAYE2 或 ODELAYE2 原语,则还必须实例化 IDELAYCTRL 模块。 IDELAYCTRL 模块连续校准其区域内的各个延迟抽头 (IDELAY/ODELAY),以减少工艺、电压和温度变化的影响。 IDELAYCTRL 模块使用用户提供的 REFCLK 校准 IDELAY 和 ODELAY。
IDELAYCTRL 原语
下图显示了 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 时序
下表显示了 IDELAYCTRL 开关特性。
Symbol | Description |
---|---|
F IDELAYCTRL_REF | REFCLK 频率 |
IDELAYCTRL_REF_PRECISION | REFCLK 精度 |
T IDELAYCTRLCO_RDY | 重置/启动时间,以准备好 IDELAYCTRL |
如图 2-15 所示,7 系列 FPGA IDELAYCTRL RST 为边沿触发信号。
IDELAYCTRL 位置
IDELAYCTRL 模块存在于每个时钟区域的每个 I/O 列中。 IDELAYCTRL 模块校准其时钟区域内的所有 IDELAYE2 和 ODELAYE2 模块。
图 2-16 说明了 IDELAYCTRL 模块的相对位置。文章来源:https://www.toymoban.com/news/detail-401641.html
文章来源地址https://www.toymoban.com/news/detail-401641.html
reference
- UG471
到了这里,关于FPGA - 7系列 FPGA内部结构之SelectIO -04- 逻辑资源之IDELAY和IDELAYCTRL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!