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
内容仅供参考,如果错误,欢迎批评指正