Menu Close

FPGA 输入IDELAY设置及应用

在FPGA设计中经常会处理数据对齐以及数据与时钟对齐等问题。正确设置及应用IO delay可以提高系统性能,在某些应用中可以弥补硬件设计的缺陷,因此能正确使用和设置IO delay在FPGA系统设计中也是非常重要的环节。下文就IDELAY与ODELAY的配置信息及应用作详细介绍。

2. IDELAY的配置与应用

每个IO BLOCK都有可编程的DELAY资源IDELAY2,这些输入延迟可以连接在ILOGICE2/ISERDESE2或ILOGICE3/ISERDESE2与IOB之间,为每个IOB提供可编程的延迟。

  • IDELAY 原语

原语的使用,可以在点击Vivado的文本编辑器的language template(灯泡状图标),打开原语使用界面,如图1,

%title插图%num

图1 原语选择界面

在图1中找到使用Device primitive instantiation –>Artix-7–.>I/o components–>I/o Delay components。 其中包含两项内容分别Delay Calibration(IDELAYCTRL)和 Input Delay Element (IDELAYE2)。

  • 输入延迟资源

输入延迟模块提供31级延迟,在Xilinx 7系列的FPGA器件中每级的延迟时间与提供的校准时钟有密切关联,一般平均每一级延迟约78ps/200M, 52ps/300M ,39ps/400M。延迟资源块如图2所示,

%title插图%num

图2 延迟资源块

  • 延迟资源块原语

(* 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

);

原语中属性部分描述如表1

表1

属性名称

Attribute Name

Value

默认值

Default Value

描述

Description

IDELAY_TYPE FIXED,

VARIABLE,

VAR_LOAD,

VAR_LOAD_PIPE

FIXED Sets the type of tap delay line.

FIXED delay: sets a static delay value.

设置静态的延迟参数0-31,如IDELAY_VALUE=25,表示延时为25级,一旦配置就固定下来,后续不能更改。

VARIABLE delay: dynamically adjusts the delay value. 动态调整延迟参数,可以由输入管脚的值决定,并于时钟C同步。

CE=1,INC=1,自加1。

CE=1,INC=0,自减1。

初始值由IDELAY_VALUE决定,

VAR_LOAD: dynamically loads tap values.

动态加载延迟参数0-31。

在该模式下使用LD装载输入端将CNTVALUEIN[4:0]的值载入。使用CE和INC输入端可以实现加减1。并与时钟端C同步。

CE=1,INC=1,自加1。

CE=1,INC=0,自减1。

VAR_LOAD_PIPE: is similar to VAR_LOAD mode with the ability to store the CNTVALUEIN value ready for a future update

与VAR_LOAD类似,可以将延迟参数预先存储在流水线寄存器中用于将来更新。

使用CE和INC输入端可以实现加减1。并与时钟C同步。

CE=1,INC=1,自加1。

CE=1,INC=0,自减1。

DELAY_SRC String: IDATAIN, DATAIN IDATAIN, IDATAIN: IDELAY chain input is IDATAIN

延迟的源为输入端口

DATAIN: IDELAY chain input is DATAIN

延迟源为FPGA内部逻辑

IDELAY_VALUE Integer:

0 to 31

0 Specifies the fixed number of delay taps in fixed mode or the initial starting number of taps in VARIABLE mode (input path). When IDELAY_TYPE is set to VAR_LOAD, or VAR_LOAD_PIPE mode, this value is ignored and assumed to be zero

指定在fixed模式下的延迟级数,或者是在VARIABLE模式下的初始值。

在 VAR_LOAD,VAR_LOAD_PIPE模式下,该值自动或略,并假定为0

HIGH_PERFORMANCE_MODE

高性能模式

Boolean: FALSE or TRUE TRUE When TRUE, this attribute reduces the output jitter. The difference in power consumption is quantified in the Xilinx Power Estimator tool.

如果选择TRUE,可以降低延迟后信号的 jitter,但会增加功耗。

SIGNAL_PATTERN

信号模式

String: DATA,

 

CLOCK

DATA Causes the timing analyzer to account for the appropriate amount of delay-chain jitter in the data or clock path.

主要用于时序分析软件对jitter的评估,

DATA:是对数据jitter的评估

CLOCK:将jitter的评估结果计入时钟路径

其实就是告诉延迟模块,当前延迟输入是时钟还是数据。

REFCLK_FREQUENCY

参考时钟

Real:

190 to 210,

290 to 310, 390 to 410

200 Sets the tap value (in MHz) used by the timing analyzer for static timing analysis. The ranges of 290.0 to 310.0 and 390 to 410 are not available in all speed grades.

See the 7 series FPGA data sheets.

CINVCTRL_SEL

时钟极性选择

Boolean: FALSE or TRUE FALSE Enables the CINVCTRL_SEL pin to dynamically switch the polarity of the C pin.

是将时钟极性取反

PIPE_SEL Boolean: FALSE or TRUE FALSE Selects pipeline mode. This attribute should only be set to TRUE when using the VAR_LOAD_PIPE mode of operation.

选择流水线模式,如果使用VAR_LOAD_PIPE模式,则PIP_SEL=TRUE

  • IDELAY2的输入输出

IDELAY2输入输出的描述见表2

名称 方向 位宽(width) 功能描述
C Input 1 Clock input used in VARIABLE, VAR_LOAD, or VAR_LOAD_PIPE mode

时钟,用于VARIABLE, VAR_LOAD, VAR_LOAD_PIPE模式动态数据同步。

REGRST Input 1 Reset for the pipeline register. Only used in VAR_LOAD_PIPE mode.

复位流水线寄存器,将寄存器的值清零,只用于VAR_LOAD_PIPE模式

LD Input 1 Loads the IDELAYE2 primitive to the pre-programmed value in VARIABLE mode. In VAR_LOAD mode, it loads the value of CNTVALUEIN. In VAR_LOAD_PIPE mode it loads the value currently in the pipeline register.

在VARIABLE模式下,将IDELAY_VALUE的属性值装载。

在VAR_LOAD模式下,将输入CNTVALUEIN装载

在VAR_LOAD_PIPE模式下,将当前存储在流水线寄存器的值装入。

CE Input 1 Enable increment/decrement function

使能加减计数,动态改变延迟级数

INC Input 1 Increment/decrement number of tap delays.

加/减延迟计数,CE=1,INC=1加

CE=1,INC=0减

CINVCTRL Input 1 Dynamically inverts the clock (C) polarity

动态改变输入时钟C的极性。时钟极性改变后,至少延迟两个时钟周期,时钟才能稳定。

CNTVALUEIN Input 5 Counter value from FPGA logic for dynamically loadable tap value.

输入端口,接收FPGA内部逻辑值用于动态装载IDEKLAY2的延迟级数

IDATAIN Input 1 Data input for IDELAY from the IBUF

数据/时钟输入端,待延迟FPGA输入端经过IBUF的信号

DATAIN Input 1 Data input for IDELAY from the FPGA logic.

被延迟的信号来自FPGA内部逻辑

LDPIPEEN Input 1 Enables the pipeline register to load data.

使能流水线寄存器装载到IDELAY2的延迟级数值,只在VAR_LOAD_PIPE模式下有效

DATAOUT Output 1 Delayed data from one of two data input ports (IDATAIN or DATAIN).

延迟后的信号输出

CNTVALUEOUT Output 5 Counter value going to FPGA logic for monitoring tap value.

实际延迟级数输出,用于FPGA内部监测

 

2. 延迟矫正Delay Calibration(IDELAYCTRL)

Delay Calibration是伴随IDELAY2或ODELAY2的,如果例化了IDELAY2或ODELAY2,则Delay Calibration也要一起例化。Delay Calibration的作用是将不间断的矫正IDELAY2或ODELAY2,将误差限制在一定的区域,在电压、温度等环境参数变化时,可以减少系统的处理过程。校准时钟(REFCLK)是用户提供的时钟。IDEALYCTRL模块如图3所示。

%title插图%num

图3 Delay Calibration ( IDEALYCTRL)

  • Delay Calibration的输入/输出

复位(RST)

FPGA 配置后,Delay Calibration必须复位,直到REFCLK稳定。RST是异步复位脚,复位的高电平宽度须满足TIDELAYCTRL_RPW

参考时钟REFCLK,这个时钟必须是BUFG或BUFH驱动的时钟。为了更好的矫正REFCLK的频率需要一定的精度(IDELAYCTRL_REF_PRECISION)。

  • IDEALYCTRL位置

在每个clock region 的I/O colunm都有IDEALYCTRL,IDEALYCTRL在每个clock region内矫正IDELAY2或ODELAY2, 关于clock region(时钟区域)的详细资料,可以参照附件文档ug472_7Series_Clocking.pdf。

 

Posted in FPGA, FPGA, FPGA 教材教案, FPGA硬件资源, IC, 元器件, 教材与教案, 文章, 资料区

4 Comments

  1. 8班王飞飞

    老师好,阅读本篇文章时遇到一点问题,请老师解答:
    1、”IDELAY2″的命名表示“两接”的含义,那么“ILOGICE3、ISERDESE3″是代表”三接“的含义吗?
    2、”IDELAY2″所处的位置结构是“ILOGICE2IDELAY2IOBPAD(管脚)”,对吗?

发表回复

相关链接