• FPGA结构分析——IDELAY2,网口储备点3


    写在前面:IDELAY2有4种工作模式( FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE),本篇主要对“FIXED”模式即固定数值延迟模式进行说明,后面择机再出一篇聊聊剩余的3种模式,先解决“从无到有”的问题,再想着“从有到优”的问题。

    本篇所说的IDELAY2与前代的IDELAY存在一些差异,具体可在Virtex-4 User Guide 中查阅

    还是像之前一样,先抛出几个问题:
    1.什么是 IDELAY2?IDELAY2的作用是什么?使用场景?
    2. IDELAY2结构是什么样?都有哪些端口?端口属性都是什么?
    3. IDELAY2原语结构,参数属性说明?
    4. IDELAYCTRL
    5. IDELAY2时序是什么样?

    1.什么是 IDELAY2?IDELAY2的作用是什么?使用场景?

    IDELAY2也即 input delay,用于在信号通过引脚进入FPGA芯片内部之前,进行延时调节,如下图,信号由PAD通过IOB后,经过IDELAY2后到达ILOGIC再到达FPGA内部或直接到达FPGA内部,用于由于器件差异或PCB走线较差导致的时钟和数据未对齐问题,从而进行微调。
    在这里插入图片描述

    2.IDELAY2结构是什么样?都有哪些端口?端口属性都是什么?

    IDELAY2结构如下图:
    在这里插入图片描述
    端口说明:
    C、REGRST、LD、CE、INC、CINVCTRL、CNTVALUE[4:0]、LDPIPEEN、CNTVALUEOUT[4:0]共9个端口用于VARIABLE,、VAR_LOAD,、VAR_LOAD_PIPE模式下,本篇不讨论;
    IDATAIN:从IOB输出的延迟输入管脚;
    DATAIN:从FPGA fabric侧输出的延迟输入管脚;
    DATAOUT:延迟输出管脚。

    3.IDELAY2原语结构,参数属性说明?

    IDELAY原语如下:

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

    参数说明:
    IDELAY_TYPE:用于设置四种延迟模式的一种,默认FIXED,即固定延迟模式;
    DELAY_SRC:用于选择延迟输入源端口,是IDATAIN或 DATAIN,默认IDATAIN;
    IDELAY_VALUE:延迟数据,对于不同的参考时钟,每一拍代表的延迟时间不同;
    HIGH_PERFORMANCE_MODE:TRUE用于减少抖动,FALSE用于减少功耗,默认TRUE;
    SIGNAL_PATTERN:延迟输入信号类型,时钟或数据,默认为数据;
    REFCLK_FREQUENCY:延迟数值IDELAY_VALUE的参考时钟,默认200MHz,即1个tap为78ps,具体参考7系列FPGA的数据手册;
    CINVCTRL_SEL:动态改变时钟极性,默认FALSE;
    PIPE_SEL:在VAR_LOAD_PIPE模式下,选择pipeline mode。

    4.IDELAYCTRL:

    IDELAYCTRL 和 IDELAYE 需要同时使用,IDELAYCTRL用于对 IDELAYE 延时进行校准:
    在这里插入图片描述
    REFCLK:参考时钟输入引脚,实际参考时钟频率与IDELAY_VALUE应相同;
    RST:复位引脚;
    RDY:校准完成信号。

    原语:

       (* IODELAY_GROUP = <iodelay_group_name> *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRL
    
       IDELAYCTRL IDELAYCTRL_inst (
          .RDY(RDY),       // 1-bit output: Ready output
          .REFCLK(REFCLK), // 1-bit input: Reference clock input
          .RST(RST)        // 1-bit input: Active high reset input
       );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    通过IODELAY_GROUP将IDELAY和IDELAYCTRL关联起来

    5.IDELAY2时序

    在这里插入图片描述
    Clock event 1:LD拉高,相当于复位IDELAY,输入直接到DATAOUT,未进行延迟;
    Clock event 2:CE和INC同时拉高,tap值加1,即DATAOUT延迟于输入1拍;
    Clock event 3:继续保持Clock event 2后的延迟拍数。

    注意:在FIXED模式下,延迟tap数在一开始就被 IDELAY_VALUE配置后定下来,不可改动,所以我们可以在VARIABLE或VAR_LOAD模式下进行动态调整,当调整结束后,再使用FIXED模式将程序固定下来。

  • 相关阅读:
    金蝶云星空企业版v8.0如何通过内网穿透实现异地公网远程访问
    数据结构题目收录(二十四)
    css超出显示
    Mybatis源码面试题汇总(持续更新中, 答案收集中)
    瑞芯微:基于RK3568的ocr识别
    【工具篇】Unity内置渲染管线和URP以及HDRP轮廓外发光边缘光高亮显示演示
    分布式事务详解、理论分析、及强一致性(2PC、3PC)剖析
    Gitea Action 简单配置(CI/CD)
    js dispatchEvent派发自定义事件
    面试总结-2023届安全面试题总汇
  • 原文地址:https://blog.csdn.net/weixin_42470069/article/details/126715531