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

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

3天内不再提示

FPGA设计中两种IO约束:管脚约束,延迟约束

454398 来源:科学计算technomania 作者:猫叔 2020-10-30 16:08 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

I/O约束

I/O约束是必须要用的约束,又包括管脚约束和延迟约束。

管脚约束

管脚约束就是指管脚分配,我们要指定管脚的PACKAGE_PIN和IOSTANDARD两个属性的值,前者指定了管脚的位置,后者指定了管脚对应的电平标准。

在vivado中,使用如下方式在xdc中对管脚进行约束。

set_property -dict {PACKAGE_PIN AJ16  IOSTANDARD  LVCMOS18} [get_ports "led[0]"    ]

在Vivado规定,必须要指定管脚电平,不然在最后一步生成比特流时会出错。

除了管脚位置和电平,还有一个大家容易忽略但很容易引起错误的就是端接,当我们使用差分电平时比如LVDS,在在V6中我们使用IBUFDS来处理输入的差分信号时,可以指定端接为TRUE。

   IBUFDS #(
      .DIFF_TERM("TRUE"),       // Differential Termination
      .IOSTANDARD("DEFAULT")     // Specify the input I/O standard
   ) IBUFDS_inst (
      .O(O),  // Buffer output
      .I(I),  // Diff_p buffer input (connect directly to top-level port)
      .IB(IB) // Diff_n buffer input (connect directly to top-level port)
   );

但在Ultrascale中的IBUFDS,却把端接这个选项去掉了

IBUFDS #(

      .DQS_BIAS("FALSE")  // (FALSE, TRUE)
   )
   IBUFDS_inst (
      .O(O),   // 1-bit output: Buffer output
      .I(I),   // 1-bit input: Diff_p buffer input (connect directly to top-level port)
      .IB(IB)  // 1-bit input: Diff_n buffer input (connect directly to top-level port)
   );

我们必须要在xdc或I/O Pors界面中,手动指定,否则可能会出错。

笔者之前就采过一个坑,差分端口输入,当连续输入的数据为11101111这种时,中间那个0拉不下来,还是1,同样也会发生在000010000,这样就导致数据传输错误,后来才发现是端接忘记加。因为端接会影响信号的实际电平,导致FPGA判断错误。

当综合完成后,我们可以点击DRC,进行设计规则检查,这一步可以报出一些关键问题,比如时钟端口未分配在时钟引脚上等。

延迟约束

延迟约束用的是set_input_delay和set_output_delay,分别用于input端和output端,其时钟源可以是时钟输入管脚,也可以是虚拟时钟。但需要注意的是,这个两个约束并不是起延迟的作用,具体原因下面分析。

set_input_delay

这个约束跟ISE中的OFFSET=IN功能相同,但设置方式不同。下图所示即为input delay的约束说明图。

从图中很容易理解,

T_inputdelay = Tco + TD

当满足图中的时序时,最大延迟为2ns,最小延迟为1ns。

因此,需要加的时序约束为:

create_clock -name sysclk -period 10 [get_ports clkin]
set_input_delay 2 -max -clock sysclk [get_ports Datain]
set_input_delay 1 -min -clock sysclk [get_ports Datain]
set_output_delay

set_output_delay的用法跟set_input_delay十分相似,这里就不再展开讲了。我们上面讲set_input_delay的描述中,大家可以看到,这个约束是告诉vivado我们的输入信号和输入时钟之间的延迟关系,跟下面要讲的时钟周期约束是一个原理,让vivado在这个前提下去Place and Route。并不是调节输入信号的延迟,因为身边有不少的FPGA工程师在没用过这个约束指令之前,都以为这是调节延迟的约束。

如果要调整输入信号的延迟,只能使用IDELAY,在V6中,IDELAY模块有32个tap值,每个tap可延迟78ps,这样总共差不多是2.5ns。

编辑:hfy

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

    关注

    1665

    文章

    22607

    浏览量

    641823
  • DRC
    DRC
    +关注

    关注

    2

    文章

    159

    浏览量

    38433
  • Vivado
    +关注

    关注

    19

    文章

    861

    浏览量

    71618
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    聊聊那些导致时序约束不收敛的常见问题

    FPGA开发的同学,十有八九都被时序约束折磨过。代码写得好好的,仿真也没问题,一跑综合实现就报一堆setup/hold violation,改来改去就是收敛不了。按我的经验,这时候与其继续盲目调参数,不如静下心来检查一下自己的约束
    的头像 发表于 05-06 17:17 693次阅读
    聊聊那些导致时序<b class='flag-5'>约束</b>不收敛的常见问题

    2026深入拆解:Gemini 3.0 镜像官网如何理解 FPGA 时序约束并自动生成 SDC 文件

    在 Vivado 或 Quartus 引用的约束文件。本教程用一个包含多时钟域和 DDR 接口的真实设计,完整拆解从需求到 SDC 的全过程。 为什么
    的头像 发表于 05-04 12:29 4350次阅读
    2026深入拆解:Gemini 3.0 镜像官网如何理解 <b class='flag-5'>FPGA</b> 时序<b class='flag-5'>约束</b>并自动生成 SDC 文件

    EHB系统MOSFET选型指南:基于热响应滞后与高频控制约束的决策清单

    基于 EHB 系统的极端工况,梳理 MOSFET 选型的物理风险,并提供结构化的条件决策清单。 一、 EHB 制动控制的核心选型约束 在为 EHB 系统的电机驱动单元进行 MOSFET 选型时,系统工程师必须框定以下前置约束
    的头像 发表于 03-17 13:23 6557次阅读

    电压放大器在主动约束层阻尼板研究测试的应用

    主动约束层阻尼结构采用压电或其他智能材料取代经典约束层阻尼结构约束层,并通过引入主动控制系统,进一步增强约束阻尼层对振动能量的耗散能力。
    的头像 发表于 03-09 14:33 247次阅读
    电压放大器在主动<b class='flag-5'>约束</b>层阻尼板研究测试<b class='flag-5'>中</b>的应用

    Vivado时序约束invert参数的作用和应用场景

    在Vivado的时序约束,-invert是用于控制信号极性的特殊参数,应用于时钟约束(Clock Constraints)和延迟约束(De
    的头像 发表于 02-09 13:49 537次阅读
    Vivado时序<b class='flag-5'>约束</b><b class='flag-5'>中</b>invert参数的作用和应用场景

    商业卫星轴角转换器的抗辐照MCU尺寸约束研究

    摘要 :随着低轨商业卫星星座的规模化部署,星载轴角转换器作为姿态与轨道控制系统(AOCS)执行机构位置反馈的核心测量单元,面临着极为严苛的体积、重量与功耗(SWaP)约束以及抗辐照性能的双重挑战
    的头像 发表于 01-23 12:04 502次阅读

    vivado中常用时序约束指令介绍

    在vivado,我们常用的时序约束指令主要包括如下几个方面。
    的头像 发表于 01-20 16:15 869次阅读

    输入引脚时钟约束_Xilinx FPGA编程技巧-常用时序约束详解

    基本的约束方法 为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。最普遍的三路径以及异常路径为: 输入路径(Input Path),使用输入约束 寄存器到寄存器路径
    发表于 01-16 08:19

    蜂鸟e203移植要从哪些方面入手,在bsp哪里修改引脚对应关系,约束文件?

    蜂鸟e203移植要从哪些方面入手,在bsp哪里修改引脚对应关系,约束文件,跪求大神
    发表于 11-10 07:11

    采用xc7a200开发板移植蜂鸟E203

    是这个复位信号至少有一个生效。当着个复位键都为1时,从而将电源唤醒,可以设置一个LED观察现象是否烧录至FPGA,当约束的灯灭时,代表
    发表于 10-24 13:50

    时序约束问题的解决办法

    Time 是否满足约束。 我们要留意的是 WNS 和 WHS 个数值,如果这个数值为红色,就说明时序不满足约束。下面将解释怎么解决这个问题。 1. Setup Time 违例
    发表于 10-24 09:55

    关于综合保持时间约束不满足的问题

    个时钟是没有约束的异步时钟 3、在 synthesis 打开 edit timing constraints 设置异步时钟,如下图: 4、再重新运行 synthesis
    发表于 10-24 07:42

    蜂鸟e203移植fpga上如何修改约束文件

    第一步:我们先导入官方网站蜂鸟e203的代码提供的e203添加进去,并加入ddr200T的 src.文件的system.v文件并加入约束文件(constrs文件夹之中
    发表于 10-24 07:18

    技术资讯 I Allegro 设计的走线约束设计

    本文要点在进行时序等长布线操作的时候,在布线操作的时候不管你是走蛇形线还是走折线,约束管理器会自动帮你计算长度、标偏差,通过精确控制走线长度,来实现信号的时序匹配。约束设计就是一套精准的导航系统
    的头像 发表于 09-05 15:19 1688次阅读
    技术资讯 I Allegro 设计<b class='flag-5'>中</b>的走线<b class='flag-5'>约束</b>设计

    技术资讯 I 图文详解约束管理器-差分对规则约束

    本文要点你是否经常在Layout设计抓瞎,拿着板子无从下手,拿着鼠标深夜狂按;DDR等长没做好导致系统不稳定,PCIe没设相位容差造成链路训练失败……这些都是血泪教训,关键时刻需要靠约束管理器救命
    的头像 发表于 08-08 17:01 1596次阅读
    技术资讯 I 图文详解<b class='flag-5'>约束</b>管理器-差分对规则<b class='flag-5'>约束</b>