0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在应用程序中实现 IDELAY 功能

OpenFPGA 来源:OpenFPGA 作者:OpenFPGA 2022-10-12 09:04 次阅读

FPGA项目开发之 7 系列 FPGA 高级 SelectIO 逻辑资源

IO 灵活性是FPGA 最大的优点之一。如果我们设计的 PCB 信号走线不完美,IO的灵活性使我们能够对齐进入设备的高速数据,帮助我们摆脱困境。

设备 IO 结构中一个经常被忽视的功能是 IDELAY2 和 ODELAY2 原语。这些原语为开发人员提供了一个由 32 个抽头组成的可编程延迟线,可提供可调节或固定的延迟。

实际可用的原语取决于我们正在使用的 IO bank 的类型。High Performance IO (HP IO) 为用户提供 IDELAY2 和 ODELAY2 原语,而 High-Range IO (HR IO) 仅提供 IDELAY2 原语。

我们可以同时使用 IDELAY 和 ODELAY 来消除信号之间的小延迟。抽头之间的分辨率取决于FPGA的时钟频率和速度等级,7 系列 AC/DC 数据表如下所示:

95788e6e-49c6-11ed-a3b6-dac502259ad0.png

当我们提供 200 MHz 参考时钟时,每个抽头增量都会将延迟增加 78 ps。这意味着总延迟约为 2.469 ns。

IDELAY 和 ODELAY 原语可以在四种模式下运行:

FIXED——延迟在此模式下是固定的,不能在运行时更改。

VARIABLE – 这是一个可变延迟,其中抽头值可以使用简单的界面增加或减少。

VAR_LOAD – 与变量模式类似,可以通过输入向量设置抽头延迟。

VAR_LOAD_PIPE – 这与 VAR_LOAD 类似,但是可以流水线化未来的延迟。

IDELAY2 模块能够延迟来自逻辑结构或 IO 输入的信号。

现在让我们看下如何在应用程序中实现 IDELAY 功能,并创建一个不同模式下的实例。

要开始使用 IDELY 或 ODELAY,我们需要实现一个 IDELAYCNTRL 模块。该模块不断校准其区域内的各个延迟抽头。该模块非常简单,需要参考时钟和复位,RDY 输出低时表示 IDELAYCNTRL 模块需要复位。

959ce8a4-49c6-11ed-a3b6-dac502259ad0.png

这些可以使用 Vivado 文本编辑器中提供的语言模板来实例化我们需要的模块。

95b521f8-49c6-11ed-a3b6-dac502259ad0.png

我们也可以使用相同的语言模板来实例化 IDELAYCNTRL2。我们将要演示的设计将使用一个 IDELAYCNTRL 和两个 IDELAY2 原语。这就能测试不同配置 IDELAY2 时信号延迟之间的差异。

两个 IDELAY2 原语都将以 VAR_LOAD 模式运行。允许使用 CNTVALUEIN 和简单的 CE 和 INC 信号接口调整抽头延迟。

95cca666-49c6-11ed-a3b6-dac502259ad0.png

测试平台将执行以下步骤:

重置 IDELAYCNTRL。

将两个输入信号 IDELAY2 设置为 0 延迟。

设置两个 IDELAY 延迟 2,将两个信号。

将第二个 IDELAY2 延迟增加 1 ,同时将第一个 IDELAY 保留为 2。

将第二个 IDELAY2 减 1 ,让两者具有相同的延迟。

将第二个 IDELAY2 设置为具有 31 的最大可能延迟。

可以在下面看到整体仿真延迟比较小,无法看到该级别延迟的影响。然而,随着仿真执行不同的测试,我们将看到控制信号和抽头值发生变化。

95ea211e-49c6-11ed-a3b6-dac502259ad0.png

测试一的波形如下所示。尽管没有计算延迟,但输入信号和输出信号之间存在大约 60 ps 的延迟。

96200220-49c6-11ed-a3b6-dac502259ad0.png

当延迟设置为 2 时,延迟为 756 ns,即 156 ps(两个 78 ps 的抽头延迟)加上原来的 0.6 ns 延迟。

96362e74-49c6-11ed-a3b6-dac502259ad0.png

第三个测试显示信号一和信号二之间有 78 ps 的延迟。对应于接头设置的差异,这也显示在计数值输出信号上。

96637550-49c6-11ed-a3b6-dac502259ad0.png

第四个测试将两个信号路径设置为具有相同的延迟。测试三和四演示了简单的递增和递减接口是如何工作的。我们启用 IDELAY2,并根据 INC 的状态,增加或减少抽头延迟。如果 INC 设置为与 CE 一致,则增加抽头延迟,否则减少抽头延迟。

最后的测试将第二个信号路径设置为最大延迟。在这里可以看到信号 2 延迟了 3.018 ns。这是2.469 ns 的抽头延迟加上原来的 0.6 ns。

9679975e-49c6-11ed-a3b6-dac502259ad0.png

IDELAY 在我们的工具箱中是一个非常有用的工具,它提供了对 FPGA 中的输入信号进行细粒度对齐的能力。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1624

    文章

    21616

    浏览量

    601118
  • IO
    IO
    +关注

    关注

    0

    文章

    433

    浏览量

    39042
  • 应用程序
    +关注

    关注

    37

    文章

    3233

    浏览量

    57539

原文标题:FPGA项目开发之 7 系列 FPGA 高级 SelectIO 逻辑资源

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    xilinx FPGAoddr,idelay的用法详解

    idelay2按推荐配置,从DATAIN还是从IDATAIN输入区别为是内部延时还是从IO输入,FIXED固定延时,idelay value先输入0,,时钟是200M,其他全部接0。
    的头像 发表于 11-25 14:35 1.1w次阅读

    何在应用程序实现 IDELAY 功能

    可以在下面看到整体仿真延迟比较小,无法看到该级别延迟的影响。然而,随着仿真执行不同的测试,我们将看到控制信号和抽头值发生变化。
    的头像 发表于 10-09 17:42 2000次阅读

    何在ModusToolbox™检查和设置应用程序的内存地址?

    何在ModusToolbox™检查和设置应用程序的内存地址?
    发表于 03-01 10:16

    何在Ubuntu linux写一个应用程序

    何在Ubuntu linux写一个应用程序
    发表于 04-18 10:02

    何在应用程序调用ROM bootlaoder

    何在应用程序调用ROM bootlaoder
    发表于 06-13 11:47

    嵌入式应用程序的USB 3.0链路共享怎么实现

    USB 3.0 端口可通过分离超高速端口和标准 USB 2.0 端口来实现链路共享功能。目前,链路共享是赛普拉斯 HX3 USB 3.0 集线器控制器的独有功能。本文将介绍如何在扩展坞
    发表于 08-08 08:01

    何在应用程序“CyMeCube”查看端点?

    FX3 USB Struts示例设备”。CySCORE的应用程序是干净的(没有显示)。如何在应用程序“CyMeCube”查看端点?也许,我忘了在复合项目中插入一些代码了吗?我的第二
    发表于 10-15 11:00

    CH32F103如何在应用程序响应中断?

    = execution address*.o (RESET, +First)*(InRoot$$Sections).ANY (+RO).ANY (+XO)}RW_IRAM1 0x20000000 0x00005000{; RW data.ANY (+RW +ZI)}}请问,如何在
    发表于 06-16 06:14

    何在应用程序实现IDELAY功能并创建一个不同模式下的实例

    IDELAY2 模块能够延迟来自逻辑结构或 IO 输入的信号。现在让我们看下如何在应用程序实现 ID
    发表于 10-09 16:00

    FPGA高级SelectIO逻辑资源简析

    IDELAY2 模块能够延迟来自逻辑结构或 IO 输入的信号。现在让我们看下如何在应用程序实现 ID
    发表于 10-12 14:19

    何在linux应用程序中使用pwm捕获?

    /402e4000.pwm/pwm/pwmchip6/pwm0# cat capture cat: capture: 函数未实现 那么,如何在 linux 应用程序中使用 pwm 捕获?
    发表于 05-10 07:05

    何在uclinux添加自己应用程序的详细过程

    何在uclinux添加自己应用程序的详细过程
    发表于 03-28 09:48 20次下载

    用Delphi实现基于SAPI的电脑语音控制应用程序

    介绍了语音功能的基本概念,讨论了开发具有语音控制功能应用程序的条件和步骤。并用Delphi 实现了一个基于微软SAPI 的语音控制应用程序
    发表于 09-11 16:13 43次下载

    何在软件实现TI的触摸屏控制器提供的各种功能详细概述

    这个应用报告展示了几个例子,展示了如何从TI的触摸屏控制器(TSC)提供各种功能,如图形,滚动条,压力按钮,和模拟拨号。一个简单的电阻TSC可以用来实现所有这些功能,只要它们不被同时激活。此
    发表于 05-25 11:27 10次下载
    如<b class='flag-5'>何在</b>软件<b class='flag-5'>中</b><b class='flag-5'>实现</b>TI的触摸屏控制器提供的各种<b class='flag-5'>功能</b>详细概述

    何在Spring Boot应用程序整合ZXing库

    在数字化时代,二维码已经成为了信息交流的一种常见方式。它们被广泛用于各种应用,从产品标签到活动传单,以及电子支付。本文将向您展示如何在Spring Boot应用程序整合ZXing库,以创建和解析QR码。
    的头像 发表于 12-03 17:39 1045次阅读