对Xilinx FPGA的IDELAY的理解

本文详细介绍了Xilinx 7系列FPGA中的SelectIO资源,特别是IDELAY2和IDELAYCTRL的工作原理。讨论了IDELAY2的四种工作模式及其在信号传输中的应用,并解释了IDELAYCTRL如何与IDELAY2配合使用以提高信号延时的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.xilinx 7系列的SelectIO逻辑资源

1.1SelectIO基本情况

1.2 那什么是HP Bank,HR Bank,甚至HD Bank呢?

2. IDELAY2(重点说)

 2.1基本情况

2.2属性和引脚

2.3 四种工作模式有啥不同

2.4 IDELAY2到底可以延时多长时间?(以V7 T 系列为例,IDELAY是IDELAY2)

3.输入延迟控制(IDELAYCTRL)

3.1 IDELAYCTRL概述

3.2 IDELAYCTRL原句及端口

3.3 IDELAYCTRL时序

3.4 IDELAYCTRL位置

4 参考文献


摘要:为了调整项目中的时钟与数据的时序关系,常常需要用到IDELAY这样的PRIMITIVES,如何更好的来开发使用IDELAY,到底它是如何工作的,它和IDELAYCTRL又是如何连动的呢,这里做了一点探讨,本文以V7的IDELAY2和IDELAYCTRL来整理,对基本的东西没有展开,如果使用过这类SelectIO Primitives的,希望有所帮助。

1.xilinx 7系列的SelectIO逻辑资源

1.1SelectIO基本情况

可以用两个图来说,对于HP Bank,是这样的

对于HR Bank是这样的

1.2 那什么是HP Bank,HR Bank,甚至HD Bank呢?

  • The HR I/O banks are designed to support a wider range of I/O standards with voltages up to 3.3V. 简单说,就是支持宽电压的IO Bank
  • The HP I/O banks are designed to meet the performance requirements of high-speed memory and other chip-to-chip interfaceswith voltages up to 1.8V. 简单说就是支持高性能,也即是高速的IO Bank
  • The HD I/O banks are designed to support low-speed interfaces. 简单说就是高密度的,支持低速接口的IO Bank
    The 7 series FPGAs offer both high-performance (HP) and high-range (HR) I/O banks.  7系列中只有HP 和 HR 没有HD 

再上个表格对比下

 HR bankHP bankHD bank
全称High RangeHigh PerformanceHigh Desity
名称高范围bank高性能bank高密度bank
电压范围1.2~3.3V1.0~1.8V1.2~3.3V
接口速率 支持高速接口支持低速接口

2. IDELAY2(重点说)

 2.1基本情况

IDELAY2是一个专用的延时单元,有31级,延时线每级的可分辨的延时时间是由专用的IDELAYCTRL提供的,一个时钟区域内一个IDELAYCTRL同时供多个IDELAY2,它 的逻辑图如下:

2.2属性和引脚

这个直接上图吧,不要看端口接的是啥,重点看后边注释

2.3 四种工作模式有啥不同

  • FIXED模式下,延时是固定的,其抽头值由属性IDELAY_VALUE确定的,不用动态装载,工作时也不能变化;
  • VARIABLE模式下,延时是可变的,其初如抽头值也是由属性IDELAY_VALUE确定的,在工作时,在C(时钟)作用下,当CE=1时(使能),由INC引脚控制抽头值的增(=1)和减(=0),且会由31->0(增时)或由0->31(减时);
  • VAR_LOAD模式,与VARIABLE模式不同之处在于:可以装入初值,怎么装:LD=1时,把CNTVALUEIN的值装入延时线;
  • VAR_LOAD_PIPE和VAR_LOAD的区别在于:前者可以把延时线的tap(抽头)值的更新值可以先存到pipe register里(在LDPIPEEN=1时),然后再统一载入(在LD=1时)到tap ,在总线模式下非常有意义;而后者在LD=1时,直接载入CNTVALUEIN的值至tap;

2.4 IDELAY2到底可以延时多长时间?(以V7 T 系列为例,IDELAY是IDELAY2)

  1. 这个延时是由物理延时线产生的,故只能往后延不会往前延,也即只是正的延时,这是个基本概念;
  2. 这个延时可以理解为不同延时线抽头实现,改变了Tap值就可以改变延时的大小,由下图可见每个抽头延时的大小(也叫resolution)是 1/(32x2xfref),亦即与参考频率有关。fref=200MHz是78ps
  3. 当用IDELAY来传clock类信号时,其延时基本没有误差,为啥呢,因为基本时钟信号比较规矩,有规律,看下图
  4. 当用IDELAY来传data类信号时,其延时就不准了,有误差,为啥呢:数据信号和时钟信号不一样呗。如果想减少误差,就将IDELAY的属性HIGH_PERFORMANCE打开,看下边图啊
  5. 一共是31个Tap所以总延时也就是78x31=2.418ns(或者理解为200M时钟周期的一半),换句话就是说,IDELAY撑死也就至多延时2.5ns(参考频率更高的,延时更小),所以如果项目设计时采用的时钟比较低,想用IDELAY来改变时钟/数据的时序关系,这就有点杯水车薪的感觉,思路应该不是正选。
  6. 使用IDELAY都要配IDELAYCTRL,这中间的门道到底是啥,没有人说,xilinx也不会讲,下边补点IDELAYCTRL的内容

3.输入延迟控制(IDELAYCTRL)

3.1 IDELAYCTRL概述

如果IDELAYE2或者ODELAYE2例化时,IDELAYCTRL也必须例化。手册里基本都是这句:该模块的用途是对IDELAYE2或者ODELAYE2的延时tap进行校准,减少处理过程、电压和温度的影响,使用REFCLK时钟精细校准。这解释有点懵逼,说到底:(1)IDELAY2和IDELAYCTRL到底是啥关系;(2)IDEALY2到底是怎样实现的延时?所以说会使用,不见得真明白,不明白是因为压根就没有解释,总之吧,会用就可以了

3.2 IDELAYCTRL原句及端口

IDELAYCTRL

 

1.RST:复位信号

RST端口高电平复位,异步复位。为了确保恰当的IDELAY和ODELAY操作,在REFCLK时钟稳定后,必须对IDELAYCTRL进行复位。

2.REFCLK:参考时钟

REFCLK时钟为IDELAYCTRL提供校准时钟。该时钟必须由BUFG或者BUFH时钟缓冲器驱动。REFCLK可以直接来自用户提供的时钟源或者MMCM,但都必须布线到全局时钟buffer。

3.RDY:Ready信号

RDY信号指示IDELAY和ODELAY模块已经完成校准。如果RDY信号变为低电平,IDELAYCTRL模块必须进行复位处理。

3.3 IDELAYCTRL时序

IDELAYCTRL控制时序图如图所示。

3.4 IDELAYCTRL位置

IDELAYCTRL位于I/O行的的每个时钟域。一个IDELAYCTRL完成它所在时钟域的所有IDELAYE2和ODELAYE2块的校准。截了个图,显示了IDELAYCTRL位置相关位置示意图。

4 参考文献

关于在FPGA中实现延时的探讨,这是2014年在电测与仪表上发表的论文用FPGA进位链实现延时的论文:基于CycloneIII的高精度时间数字转换设计     http://d.wanfangdata.com.cn/periodical/dcyyb201402018

其他有用的参考文献: 

1. https://www.xilinx.com/support/documentation/data_sheets/ds183_Virtex_7_Data_Sheet.pdf

2. https://www.xilinx.com/support/documentation/user_guides/ug471_7Series_SelectIO.pdf

3. https://www.xilinx.com/support/documentation/user_guides/ug472_7Series_Clocking.pdf

### IDelay 在音频处理中的应用 在音频处理领域,`IDELAY` 的功能可以通过引入精确的时间延迟来实现环绕声效果或其他复杂的音频处理需求。具体而言,`IDELAY` 提供了一种硬件级的解决方案,允许对输入信号施加可控的延迟。 #### 硬件支持与特性 Xilinx 7 系列 FPGA 中的 `IDELAYE2` 原语是一个 31 抽头的环绕式延迟模块[^2],它能够提供高精度的延迟控制能力。这种延迟机制非常适合于需要亚纳秒级别时间调整的应用场景,比如音频信号的相位同步或空间定位模拟。 对于 200 MHz 主时钟的情况,`IDELAY` 能够将输入信号延迟大约半个周期 (即约 2.5 ns)[^1]。这使得它成为一种理想的工具,用于微调高速信号之间的相对到达时间差,从而创建虚拟的空间感或增强立体声音效。 #### 参数配置 当设计基于 `IDELAY` 的音频处理器时,可以根据具体的采样率和所需的效果动态调整参数。例如,在 Artix-7 上,`IDELAY_VALUE` 设置范围为 0 到 31,对应的最大总延迟约为 3.018 ns (`600 ps + N * 78 ps`, 其中 \(N\) 表示 tap 数量)[^5]。尽管这一数值看似较小,但对于高频分量丰富的音频信号来说已经足够显著地影响感知上的位置变化。 以下是利用 Verilog 实现简单延迟链的一个例子: ```verilog module audio_delay ( input wire clk, input wire reset, input wire [7:0] data_in, output reg [7:0] delayed_data_out ); // Example delay value setup reg [4:0] idelay_value = 5'd16; // Set to mid-point as an example IDELAYE2 #( .DELAY_SRC("DATAIN"), // Delay source is DATAIN pin .SIGNAL_PATTERN("DATA") // Signal pattern type ) iDelayInst ( .IDATAIN(data_in), // Data input from the previous stage .DATAOUT(delayed_data_out), // Output after applying delay .CASC_IN(1'b0), // No cascading used here .CE(1'b0), // Constant enable state .INC(1'b0), // Increment control inactive .LD(reset), // Load new delay value on reset .CNTVALUEIN(idelay_value), // Initial or loaded delay setting .CLK(clk) // Clock signal for synchronization ); endmodule ``` 此代码片段展示了如何通过设置不同的 `idelay_value` 来改变输入数据流的传播速度,进而达到所需的音轨分离度或者混响强度。 #### 设计注意事项 由于实际器件间可能存在制造工艺差异导致的行为不一致性[^3],因此建议开发者们采用迭代方法逐步逼近理想状态而不是单纯依赖理论计算得出的结果。另外需要注意的是虽然 HR Bank IO 结构提供了专门针对输入方向优化过的延迟单元(IDELAYE2),却没有相应匹配的功能去作用于输出端口上[^4]——这意味着如果计划同时操控双向通信,则需额外考虑外部电路补偿措施。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值