IDELAYE2

输入固定或可变延迟的元件

每个输入/输出模块都包含一个可编程的绝对延迟元件IDELAYE2。该元件既可连接至输入寄存器/ISERDES2,也可直接驱动FPGA逻辑电路。IDELAYE2采用31抽头环形延迟结构。

引脚描述

Port

direction

width

function

C

input

1

所有控制输入(RST,CE,andINC)都同步于C。当IDELAYE2配置”VARIABLE”,”VAR_LOAD”,或者“VAR_LOAD_PIPE”模式时,必须要输入时钟进C。C信号可进行本地反相处理,但必须由全局或区域时钟缓冲器提供时钟信号。该时钟应连接至SelectIO逻辑资源中的同一时钟(当使用ISERDESE2和OSERDESE2时,C连接至CLKDIV)

CE

input

1

高电平启用递增/递减功能

CINVCTRL

input

1

CINVCTRL引脚用于动态切换C引脚的极性,适用于无毛刺干扰的应用场景。切换极性时,需间隔两个时钟周期切勿使用IDELAYE2

控制引脚

CNTVALUEIN[4:0]

input

5

FPGA逻辑的计数器值,用于动态加载的抽头值输入

CNTVALUEOUT[4:0]

output

5

CNTVALUEOUT引脚用于报告延迟元件的动态切换值。当IDELAYE2

处于“VAR_LOAD”或“VAR_LOAD_PIPE”模式时,CNTVALUEOUT才可用

DATAIN

input

1

DATAIN的输入信号由FPGA逻辑直接驱动,形成逻辑可访问的延迟线。数据通过数据输出端口返回至FPGA逻辑,其延迟时间由IDELAY_VALUE

值设定。DATAIN支持本地反相功能,但数据无法驱动至I/O端口

DATAOUT

output

1

延迟从IDATAIN

或DATAIN输入路径的数据。DATAOUT连接至ISERDESE2、输入寄存器或FPGA逻辑

IDATAIN

input

1

IDATAIN输入端由其关联的I/O驱动。数据可被驱动至ISERDESE2或输入寄存器块,直接进入FPGA逻辑,或通过数据输出端口同时驱动两者,其延迟由IDELAY_VALUE值设定

INC

input

1

选择是否递增或递减延迟数值。当CE为高电平时,INC=1递增;INC=0递减

LD

input

1

在“VARIABLE”模式下,加载IDelay_value属性设定的数值。默认值为零

在“VAR_LOAD”模式下,加载cntvaluein的数值。此时cntvaluein[4:0]中的数值将作为新的抽头值

在“VAR_LOAD_PIPE”模式下,加载当前流水线寄存器中的数值。此时流水线寄存器中的数值将作为新的抽头值

LDPIPEEN

input

1

当为高电平时,会将CNTVALUEIN的值加载到流水线寄存器中

REGRST

input

1

当为高电平时,将流水线寄存器的值全部置0,只能使用”VAR_LOAD_PIPE”模式

可用属性

attribute

type

Allowed values

default

description

CINVCTRL_SEL

STRING

"FALSE", "TRUE"

"FALSE"

启用CINVCTRL_SEL引脚,可动态切换C引脚的极性

DELAY_SRC

STRING

"IDATAIN",

"DATAIN"

"IDATAIN"

选择IDELAYE2的延迟源输入端口“IDATAIN”:IDELAYE2链路输入端口为IDATAIN

“DATAIN”:IDELAYE链路输入端口为DATAIN

HIGH_PERFORMANCE_MODE

STRING

"FALSE", "TRUE"

"FALSE"

当为TRUE时,此属性会减少输出抖动。当为FALSE时,会降低功耗

IDELAY_TYPE

STRING

"FIXED",

"VARIABLE",

"VAR_LOAD",

"VAR_LOAD_PIPE"

"FIXED"

设置抽头延迟线类型。

“fixed”-设置静态延迟值

“variable”-动态调整(递增/递减)延迟值。“VAR_LOAD”-动态加载抽头值。“VAR_LOAD_PIPE”-管道式动态加载抽头值

IDELAY_VALUE

DECIMAL

0, 1, 2, 3, 4, 5, 6, 7, 8,

9, 10, 11, 12, 13, 14,

15, 16, 17, 18, 19,

20, 21, 22, 23, 24,

25, 26, 27, 28, 29,

30, 31

0

指定固定模式下的固定延迟抽头数,或“VARIABLE”模式(输入路径)下的初始抽头数。当IDelay类型设置为“VAR_LOAD”或“VAR_LOAD_PIPE”模式时,该值将被忽略

PIPE_SEL

STRING

"FALSE", "TRUE"

"FALSE"

选择流水线模式

REFCLK_FREQUENCY

1 significant

digit FLOAT

190-210, 290-310

Mhz

200.0

设置定时分析仪在静态定时分析和功能/定时仿真中使用的抽头值(单位:MHz)。为确保抽头延迟值和性能,REFCLK的频率必须在数据表规定的范围内

SIGNAL_PATTERN

STRING

"DATA", "CLOCK"

"DATA"

使定时分析仪能够考虑数据或时钟路径中适当的延迟链抖动

VHDL例化模板

-- IDELAYE2: Input Fixed or Variable Delay Element

-- 7 Series

-- Xilinx HDL Language Template, version 2018.3

IDELAYE2_inst : IDELAYE2

generic map (

CINVCTRL_SEL => "FALSE", -- Enable dynamic clock inversion (FALSE, TRUE)

DELAY_SRC => "IDATAIN", -- Delay input (IDATAIN, DATAIN)

HIGH_PERFORMANCE_MODE => "FALSE", -- Reduced jitter ("TRUE"), Reduced power ("FALSE")

IDELAY_TYPE => "FIXED", -- FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE

IDELAY_VALUE => 0, -- Input delay tap setting (0-31)

PIPE_SEL => "FALSE", -- Select pipelined mode, FALSE, TRUE

REFCLK_FREQUENCY => 200.0, -- IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0).

SIGNAL_PATTERN => "DATA" -- DATA, CLOCK input signal

)

port map (

CNTVALUEOUT => CNTVALUEOUT, -- 5-bit output: Counter value output

DATAOUT => DATAOUT, -- 1-bit output: Delayed data output

C => C, -- 1-bit input: Clock input

CE => CE, -- 1-bit input: Active high enable increment/decrement input

CINVCTRL => CINVCTRL, -- 1-bit input: Dynamic clock inversion input

CNTVALUEIN => CNTVALUEIN, -- 5-bit input: Counter value input

DATAIN => DATAIN, -- 1-bit input: Internal delay data input

IDATAIN => IDATAIN, -- 1-bit input: Data input from the I/O

INC => INC, -- 1-bit input: Increment / Decrement tap delay input

LD => LD, -- 1-bit input: Load IDELAY_VALUE input

LDPIPEEN => LDPIPEEN, -- 1-bit input: Enable PIPELINE register to load data input

REGRST => REGRST -- 1-bit input: Active-high reset tap-delay input

);

-- End of IDELAYE2_inst instantiation

Verilog例化模板

// IDELAYE2: Input Fixed or Variable Delay Element

// 7 Series

// Xilinx HDL Language Template, version 2018.3

(* IODELAY_GROUP = <iodelay_group_name> *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRL

IDELAYE2 #(

.CINVCTRL_SEL("FALSE"), // Enable dynamic clock inversion (FALSE, TRUE)

.DELAY_SRC("IDATAIN"), // Delay input (IDATAIN, DATAIN)

.HIGH_PERFORMANCE_MODE("FALSE"), // Reduced jitter ("TRUE"), Reduced power ("FALSE")

.IDELAY_TYPE("FIXED"), // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE

.IDELAY_VALUE(0), // Input delay tap setting (0-31)

.PIPE_SEL("FALSE"), // Select pipelined mode, FALSE, TRUE

.REFCLK_FREQUENCY(200.0), // IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0).

.SIGNAL_PATTERN("DATA") // DATA, CLOCK input signal

)

IDELAYE2_inst (

.CNTVALUEOUT(CNTVALUEOUT), // 5-bit output: Counter value output

.DATAOUT(DATAOUT), // 1-bit output: Delayed data output

.C(C), // 1-bit input: Clock input

.CE(CE), // 1-bit input: Active high enable increment/decrement input

.CINVCTRL(CINVCTRL), // 1-bit input: Dynamic clock inversion input

.CNTVALUEIN(CNTVALUEIN), // 5-bit input: Counter value input

.DATAIN(DATAIN), // 1-bit input: Internal delay data input

.IDATAIN(IDATAIN), // 1-bit input: Data input from the I/O

.INC(INC), // 1-bit input: Increment / Decrement tap delay input

.LD(LD), // 1-bit input: Load IDELAY_VALUE input

.LDPIPEEN(LDPIPEEN), // 1-bit input: Enable PIPELINE register to load data input

.REGRST(REGRST) // 1-bit input: Active-high reset tap-delay input

);

// End of IDELAYE2_inst instantiation

内容仅供参考,如果错误,欢迎批评指正