前言
本文节选UG471的第二章,进行整理翻译,用于介绍SelectIO资源内部的IDELAY资源和IDELAYCTRL资源。
输入延迟资源 (IDELAY)简介
每个 I/O 模块都包含一个称为 IDELAYE2 的可编程延迟原语。 IDELAY 可以连接到 ILOGICE2/ISERDESE2 或 ILOGICE3/ISERDESE2 块。
IDELAYE2 是一个 31 抽头、环绕式延迟原语,具有校准的抽头分辨率。它可以应用于组合输入路径、注册输入路径或两者。 它也可以直接从 FPGA 逻辑访问。 IDELAY 允许在单个输入引脚的基础上延迟输入信号。 抽头延迟分辨率通过使用 IDELAYCTRL 参考时钟连续校准,该参考时钟来自 7 系列 FPGA 数据手册中指定的范围。
IDELAYE2 原语
IDELAYE2 原语的结构如下:
端口说明
来自 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 属性。
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 模式下使用的控制引脚。
可加载可变延迟模式 (IDELAY_TYPE = VAR_LOAD)
除了在该模式下具有与 (IDELAY_TYPE = VARIABLE) 相同的功能外,IDELAY 抽头还可以通过来自 FPGA 逻辑的 5 输入位CNTVALUEIN< 4:0 > 加载。 当 LD 产生脉冲时,出现在 CNTVALUEIN< 4:0 > 处的值将是新的抽头值。 由于此功能,IDELAY_VALUE 属性被忽略。 在此模式下使用时,IDELAYCTRL 原语必须被实例化。
下表描述了在 VAR_LOAD 模式下使用的控制引脚。
IDELAY 时序
下表显示了 IDELAY 开关特性。
示例时序
下图显示了 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 引脚上有进一步的活动。