不枉初心,砥砺前行

皮皮祥的博客

欢迎留言,评论

导航

Input Delay Reasource (IDELAY)

Input Delay Reasource (IDELAY):

先来说说IDELAYCTRL资源:

借鉴了这位博主对它的描述:(https://blog.csdn.net/haoxingheng/article/details/50320145

在电压、温度等因素变化时,可能会影响到系统的时序,此时IDELAYCTRL模块就可以连续补偿时钟域内所有个体的delay taps (IDELAY/ODELAY)。如果使用了IOB上的IDELAY或ODELAY资源,那么就必须使用IDELAYCTRL资源。请注意,整个IO BANK里面只有一个IDELAYCTRL。

IDELAYCTRL很重要的一个输入项就是参考时钟REFCLK,补偿时钟域内所有模块的时序参考,这个时钟必须由BUFG或BUFH驱动。REFCLK必须保证在FIDELAYCTRL_REF+IDELAYCTRL_REF_PRECISION(MHz)ppm才能保证IDELAY/ODELAY的延时分辨率:

(TIDELAYRESOLUTION=1/(32x 2 x FREF))

再来说IDELAYE2资源:

然后贴一张UG471的图镇楼

    IDELAYE2就是这么个模块,接口信号就是这么多。

再看看原语代码具体长什么样子:

哈哈,这个配色够骚吧。

然后再看它接口信号都是些什么意思:(参考了这位博主的内容:https://blog.csdn.net/haoxingheng/article/details/50320145

端口名

方向

位宽

描述

C

I

1

当使用VARIABLE, VAR_LOAD或 VAR_LOAD_PIPE模式下的时钟输入,必须是由BUFG或BUFR驱动,当使用SelectIO资源时,必须和它的时钟源相同。

REGRST

I

1

复位pipeline寄存器,仅在VAR_LOAD_PIPE模式下有效

LD

I

1

VARIABLE模式:使能预编程值;

VAR_LOAD模式:使能CNTVALUEIN值作为延迟tap;

VAR_LOAD_PIPE模式:使能当前pipeline寄存器的值。

INC

I

1

INC/DEC增加,减少的Tap数

CE

I

1

使能INC和DEC功能,只在VARIABLE, VAR_LOAD或 VAR_LOAD_PIPE模式下有效;当CE保持为高的时候,每一个C周期都增加或减少一个TIDELAYRESOLUTION的时延。

CINVCTRL

I

1

动态翻转C的极性,当使用该功能时,需禁止IDELAY control引脚2个cycle。

CNTVALUEIN

I

5

来自FPGA逻辑的动态Tap值

IDATAIN

I

1

来自IBUF的数据输入,输出可驱动FPGA逻辑、ILOGICE和ISERDESE

DATAIN

I

1

来自FPGA逻辑的数据输入,输出不可驱动IOB

LDPIPEEN

I

1

使能pipeline寄存器加载数据

DATAOUT

O

1

延时输出的数据

CNTVALUEOUT

O

5

Tap值输出,用于FPGA监测

 

 

 

 

     再看看原语里面的parameter都代表什么意思:

这里圈出来的是本篇要重点说明的点:

IDELAY_TYPE:  FIXED表示固定延迟

                           IDELAY_VALUE:表示延迟多少tap,这里要重点说一下这个tap,它的这个延迟单位tap到底多长时间,好。那就先看这个REFCLK_FREQUENCY,

一般我们设置默认200MHZ,T=5ns    tap=2.5ns/32 ,因为这里可以设置0-31个tap,大约就是0.078ns。

好了,接口和parameter都介绍完了。

来看看我怎么用它:

先说这个VAR_LOAD模式:

时序图就是这样了,这个时序图是对上面表2-7的完美解释了。LD拉高的时候把CNTVALUEIN加载进去,INC和CE同时拉高的时候tap递增。

上面是UG471对这种模式用法的描述,简而言之就是当在这种模式下的时候,LD信号拉高就把延迟的tap值通过CNTVALUEIN加载进去了,具体配置上图中贴出来的代码就是了。

重点是看仿真波形:

默认延迟为0.6ns,我设置CNTVALUENIN为5‘b10,可以看到输入时刻为2500ns,输出时刻为2500.756ns。延迟为2个tap(0.078ns)

这里要说明一下,LD信号拉高一个clk即可,多拉高几个clk也没用,延迟还是2个tap。因为CNTVALUENIN始终是2’b10,仿真我也试过了。

FIXED模式就更简单了。后面会持续的更新其他io资源的理解和仿真。

 

posted on 2021-08-05 15:26  皮皮祥  阅读(849)  评论(0编辑  收藏  举报