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

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

3天内不再提示

一文详解FPGA编程技巧输入输出偏移约束

Hx 作者:工程师陈翠 2018-07-14 07:14 次阅读

1. 偏移约束的作用

偏移约束(Offset Constraint)用来定义一个外部时钟引脚(Pad)和数据输入输出引脚之间的时序关系,这种时序关系也被称为器件上的Pad-to-Setup或Clock-to-Out路径这些约束对与外部元器件相连的接口十分重要,在这里,需要解释两个术语:

Pad-to-Setup:也被称为OFFSET IN BEFORE约束,是用来保证外部输入时钟和外部输入数据的时序满足FPGA内部触发器的建立时间要求的如下图TIN_BEFORE约束使得FPGA在进行DATA_IN和CLK_SYS布线时努力保证DATA_IN相对于CLK_SYS的延时小于TIN_BEFORE

Clock-to-Out:也被称为OFFSET OUT AFTER约束,是用来满足下游器件建立保持(setup/hold)要求或输出时钟和数据之间时序要求的

OFFSET IN BEFORE 或OFFSET OUT AFTER约束允许用户指定外部输入或输出引脚相对于时钟边沿到内部数据的延时

一文详解FPGA编程技巧输入输出偏移约束

1.1输入偏移约束时序参考图

一文详解FPGA编程技巧输入输出偏移约束

1.2输出偏移约束时序参考图

Xilinx FPGA有三个层次的约束:

Global OFFSET:为所有输入或输出指定相对某个特定时钟的约束;

Group OFFSET:为一组输入或者输出指定相对驱动他们的时钟的约束

Net-Specific OFFSET:为某个特定的输入或者输出指定相对其驱动时钟的约束;

在进行约束的详细讲解之前,必须明确两个概念:

建立时间setup time

指在触发器始终上升沿到来之前,数据必须保持稳定的时间,如果建立时间不够,数据将不能被打入触发器;

保持时间hold time

指触发器的时钟上升沿到来之后数据必须稳定不变的时间,如果保持时间不够,数据不能被打入触发器;

一文详解FPGA编程技巧输入输出偏移约束

1.3建立保持时间时序图

2. OFFSET IN约束

OFFSET IN约束用来设定Pad-to-Setup时序要求OFFSET IN是对数据时钟关系的一种说明它当分析建立时间要求(data_delay+setup-clock_delay-clock_arrival要求满足约束条件)的时候,需要考虑时钟延时(clock delay)、时钟边沿(clock edge)、DLL/DCM引入的时钟相位

2.1. OFFSET IN BEFORE 约束

OFFSET IN BEFORE约束限定了数据从引脚传播到同步元件并在同步元件建立起来的所需的时间比如 “OFFSET = IN 2 ns BEFORE clock_pad”这个约束,限定数据必须在下一个时钟边沿到来之前2ns内读取,因此FPGA会规划使得数据相对时钟边沿的超前2ns之内

一文详解FPGA编程技巧输入输出偏移约束

2.1OFFSET IN BEFORE约束带校准功能的电路

上图FPGA在布线时会尽力去满足如下不等式:

TData + TSetup - TClock 《= Toffset_IN_BEFORE;

2.1.1. VALID约束

OFFSET IN约束往往和VALID约束一起使用OFFSET IN约束在建立时间分析中作为建立时间要求使用,而VALID约束在保持时间约束中作为保持时间要求使用VALID约束指定了输入数据的持续时间在默认情况下,FPGA指定VALID和OFFSET的值相等,也即FPGA在默认情况下认为保持时间为0

一文详解FPGA编程技巧输入输出偏移约束

2.2带有VALID约束的输入偏移约束

2.1.2. OFFSET IN约束的一个简单例子

FPGA的分析工具在综合时经常会用到一个词:Slack,即松弛时间,当Slack》0时,该路径设计满足时序要求;当Slack《0时,该路径不满足时序要求

Slack = (Requirement - (Data Path - Clock Path - Clock Arrival))

一文详解FPGA编程技巧输入输出偏移约束

2.3OFFSET IN的简单例子时序

该约束为:

TIMESPEC TS_clock = PERIOD clock_grp 10 ns HIGH 50%;

OFFSET = IN 3 ns BEFORE clock;

一文详解FPGA编程技巧输入输出偏移约束

2.4OFFSET IN约束时序报告

从时序约束报告的Slack的值可以看出,Data不能被Clock成功打入触发器FF0.

2.2. OFFSET IN AFTER约束

OFFSET IN AFTER和OFFSET IN BEFORE在本质上是一样的,只是形式上不一样,其约束效果是完全一样的OFFSET IN AFTER的约束公司如下:

TData + TSetup - TClock 《= TPeriod – Toffset_IN_AFTER;

3. OFFSET OUT约束

OFFSET OUT约束用来定义clock-to-pad时序要求OFFSET OUT约束是对外部clock-to-data的说明并且必须考虑clock_delay、clock edge和DLL/DCM时钟相位等

3.1. OFFSET OUT AFTER约束

OFFSET OUT AFTER约束定义了数据从同步元件传播到管脚最长允许时间可以形象地理解为时钟边沿到达器件边界时数据离开器件边界的时间“OFFSET = OUT 2 ns AFTER clock_pad”约束意思是从FPGA数据端口传输到下游器件的数据在参考时钟2ns之后一定可读

一文详解FPGA编程技巧输入输出偏移约束

3.1OFFSET OUT AFTER约束带校准功能的电路

下面公式规定了数据时钟的这种关系:

TQ + TClock2Out + TClock 《= Toffset_OUT_AFTER;

OFFSET OUT AFTER约束沿着参考时钟路径和数据路径的最大延时不超过偏移值

3.1.1. OFFSET OUT AFTER约束的一个简单例子

同样的,OFFSET OUT的Slack也定义了输出约束的松弛时间:

Slack = (Requirement - (Clock Arrival + Clock Path + Data Path))

一文详解FPGA编程技巧输入输出偏移约束

3.2OFFSET OUT 约束的简单例子

其约束应写为:

TIMESPEC TS_clock = PERIOD clock_grp 10 ns HIGH 50%;

OFFSET = OUT 3 ns AFTER clock;

一文详解FPGA编程技巧输入输出偏移约束

3.3OFFSET OUT 时序约束报告

时序报告中Slack=-0.865ns,不满足时序约束要求

3.2. OFFSET OUT BEFORE约束

同样地,OFFSET OUT BEFORE和OFFSET OUT AFTER约束本质上没有什么不同,只是形式上的不一样的,其约束效果完全一样

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

    关注

    1600

    文章

    21284

    浏览量

    592879
  • fpga编程
    +关注

    关注

    0

    文章

    3

    浏览量

    4606
收藏 人收藏

    评论

    相关推荐

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

    今天给大侠带来Xilinx FPGA编程技巧之常用时序约束详解,话不多说,上货。 基本的约束方法为了保证成功的设计,所有路径的时序要求
    发表于 04-12 17:39

    OFFSET在2个FPGA之间的时序约束

    的理解是正确的吗?如果我的理解不正确,那么在什么情况下我需要使用偏移输入/输出约束?3)我需要从vlx760到vlx75 fpga的rxda
    发表于 04-08 10:27

    如何估计SerDes输入时序约束所需的偏移输入延迟?

    大家好,我们正试图更好地约束我们的输入SerDes线路,580Mb / s DDR 14bit。我们有个有效的解决方案,但会在最终数据中产生故障。从wp237开始,我们将使用第个选
    发表于 08-09 09:54

    输入输出压差仅1伏的稳压器

    输入输出压差仅1伏的稳压器
    发表于 04-17 11:34 533次阅读
    <b class='flag-5'>输入输出</b>压差仅1伏的稳压器

    模块输入输出(I/O)知识

    模块输入输出(I/O)知识   我觉得有必要谈一下模块的输入输出口的梳理,一般我们可以分为IO的功能划分和IO规范。前者的目
    发表于 11-21 14:06 2467次阅读

    用Cyclone FPGA实现双倍数据率输入输出接口

    Cyclone 系列芯片是美国A ltera 公司推出的低价格、高容量现场可编程门阵列器件(FPGA ) , 本文概述了他的主要特点, 给出了其在与外部存储器接口时用到的双倍数据率输入输出接口的设计方
    发表于 06-27 16:27 45次下载
    用Cyclone <b class='flag-5'>FPGA</b>实现双倍数据率<b class='flag-5'>输入输出</b>接口

    FPGA开发之时序约束(周期约束

    时序约束可以使得布线的成功率的提高,减少ISE布局布线时间。这时候用到的全局约束就有周期约束偏移约束。周期
    发表于 02-09 02:56 609次阅读

    使用Labview编程完成计数器/IO输入/输出编程

    使用Labview编程完成计数器输入,IO输入输出编程
    的头像 发表于 08-05 06:01 6792次阅读

    STM32的8种GPIO输入输出模式

    STM32的8种GPIO输入输出模式参考文章“STM32的8种GPIO输入输出模式深入详解”和“STM32中GPIO的8种工作模式!”输入模式- 浮空
    发表于 11-26 17:06 16次下载
    STM32的8种GPIO<b class='flag-5'>输入输出</b>模式

    MCU中的IO口输入输出状态详解

    使用MCU,必然接触到IO(Input,Output)口,对于IO口的输入输出状态就要有所了解。
    发表于 02-08 15:47 2次下载
    MCU中的IO口<b class='flag-5'>输入输出</b>状态<b class='flag-5'>详解</b>

    创建输入输出接口时序约束的窍门

    输入输出接口的约束,整理出了一套非常实用的InputDelay/Output Delay Constraints Language Templates。
    的头像 发表于 08-02 09:54 1852次阅读
    创建<b class='flag-5'>输入输出</b>接口时序<b class='flag-5'>约束</b>的窍门

    Logos系列FPGA输入输出接口(IO)用户指南

    电子发烧友网站提供《Logos系列FPGA输入输出接口(IO)用户指南.pdf》资料免费下载
    发表于 09-26 10:19 1次下载
    Logos系列<b class='flag-5'>FPGA</b><b class='flag-5'>输入输出</b>接口(IO)用户指南

    FPGA编程技巧系列之输入输出偏移约束详解

    Pad-to-Setup:也被称为OFFSET IN BEFORE约束,是用来保证外部输入时钟和外部输入数据的时序满足FPGA内部触发器的建立时间要求的。如下图TIN_BEFORE
    的头像 发表于 02-15 11:52 1301次阅读

    CW32通用输入输出端口详解

    CW32通用输入输出端口详解
    的头像 发表于 10-30 17:33 552次阅读
    CW32通用<b class='flag-5'>输入输出</b>端口<b class='flag-5'>详解</b>

    plc带模拟量输入输出和不带模拟量输入输出有什么区别啊?

    plc带模拟量输入输出和不带模拟量输入输出有什么区别啊? PLC是一种广泛应用的自动化控制器,它可通过输入输出控制信号来管理各种自动化过程。PLC的“模拟量”
    的头像 发表于 10-17 16:44 1035次阅读