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
    +关注

    关注

    1625

    文章

    21663

    浏览量

    601672
  • DRC
    DRC
    +关注

    关注

    2

    文章

    148

    浏览量

    36120
  • Vivado
    +关注

    关注

    19

    文章

    807

    浏览量

    66312
收藏 人收藏

    评论

    相关推荐

    与非门构成的基本RS触发器的约束条件是什么

    与非门构成的RS触发器是一基本的数字逻辑电路,用于存储一位二进制信息。它由个输入端(R和S),个输出端(Q和Q'),以及个与非门组成。R代表设置(Set),S代表复位(Rese
    的头像 发表于 10-18 11:15 566次阅读

    电路的约束指的是哪

    电路的约束通常指的是电气约束和物理约束。这约束在电路设计和分析
    的头像 发表于 08-25 09:34 719次阅读

    深度解析FPGA的时序约束

    建立时间和保持时间是FPGA时序约束个最基本的概念,同样在芯片电路时序分析也存在。
    的头像 发表于 08-06 11:40 557次阅读
    深度解析<b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的时序<b class='flag-5'>约束</b>

    两种SR锁存器的约束条件

    基本约束条件: SR锁存器是一基本的数字逻辑电路,用于存储一位二进制信息。它有个输入端:S(Set)和R(Reset),以及个输出端:Q和Q'(Q的反相)。以下是SR锁存器的基本
    的头像 发表于 07-23 11:34 806次阅读

    Xilinx FPGA编程技巧之常用时序约束详解

    今天给大侠带来Xilinx FPGA编程技巧之常用时序约束详解,话不多说,上货。 基本的约束方法 为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。最普遍的三路径以及
    发表于 05-06 15:51

    时序约束实操

    添加约束的目的是为了告诉FPGA你的设计指标及运行情况。在上面的生成约束之后,在Result àxx.sdc中提供约束参考(请注意该文件不能直接添加到工程
    的头像 发表于 04-28 18:36 2183次阅读
    时序<b class='flag-5'>约束</b>实操

    Xilinx FPGA约束设置基础

    LOC约束FPGA设计中最基本的布局约束和综合约束,能够定义基本设计单元在FPGA芯片中的位置,可实现绝对定位、范围定位以及区域定位。
    发表于 04-26 17:05 1080次阅读
    Xilinx <b class='flag-5'>FPGA</b>的<b class='flag-5'>约束</b>设置基础

    Xilinx FPGA编程技巧之常用时序约束详解

    今天给大侠带来Xilinx FPGA编程技巧之常用时序约束详解,话不多说,上货。 基本的约束方法为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。最普遍的三路径以及
    发表于 04-12 17:39

    介绍一新的可以约束光的纳米级领结结构

    结合自下而上和自上而下两种方法,利用两种表面力,制备出可以用来约束光的、原子级尺度的领结型间隙,在电子学、纳米机器人、传感器、量子技术等领域具有巨大潜力。
    的头像 发表于 01-23 10:26 406次阅读
    介绍一<b class='flag-5'>种</b>新的可以<b class='flag-5'>约束</b>光的纳米级领结结构

    机器人运动学的非完整约束与运动模型推导

    机器人运动学的运动学约束是指机器人在运动过程受到的限制,包括位置、姿态、速度和加速度等因素。这些约束会对机器人的自由度产生影响,从而影响机器人的运动和控制。运动学
    的头像 发表于 01-18 16:45 1640次阅读
    机器人运动学<b class='flag-5'>中</b>的非完整<b class='flag-5'>约束</b>与运动模型推导

    FPGA物理约束之布局约束

    能够保持稳定不变,使用增量式编译是一选择,而使用布局约束是另一更灵活的选择。此时的布局约束,通常不会针对用户逻辑部分,而是针对一些相对固定的片内存储器或乘法器,基于第一次编译的结果
    的头像 发表于 01-02 14:13 1401次阅读
    <b class='flag-5'>FPGA</b>物理<b class='flag-5'>约束</b>之布局<b class='flag-5'>约束</b>

    Pod一直处于Pending状态?什么是Pod拓扑约束

    起因: 今天在部署组件的时候,发现组件的pod一直处于Pending状态,报错显示的原因是:不满足Pod拓扑分布约束,看了代码发现是原来同事给组件新增了Pod拓扑约束
    的头像 发表于 12-18 11:46 1154次阅读
    Pod一直处于Pending状态?什么是Pod拓扑<b class='flag-5'>约束</b>?

    FPGA物理约束之布线约束

    IS_ROUTE_FIXED命令用于指定网络的所有布线进行固定约束。进入Implemented页面后,Netlist窗口如图1所示,其中Nets文件展开后可以看到工程中所有的布线网络。
    的头像 发表于 12-16 14:04 1131次阅读
    <b class='flag-5'>FPGA</b>物理<b class='flag-5'>约束</b>之布线<b class='flag-5'>约束</b>

    SV约束随机化总结

    constraint 约束随机化类的变量 在main_phase 之前就已经提前产生一个变量的随机值。 用法:一般在类定义一个rand 类型的变量, 然后根据需求写约束
    的头像 发表于 12-14 14:30 798次阅读
    SV<b class='flag-5'>约束</b>随机化总结

    基本rs触发器的约束条件

    基本的RS(Reset-Set)触发器是在数字电路和计算机体系结构中使用的一重要时序电路元件。它由个互补的输入信号,即Reset(复位)和Set(设置)构成,可以存储一个比特的二进制状态。当满足
    的头像 发表于 12-08 16:46 3382次阅读