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

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

3天内不再提示

FPGA设计中时序分析的概念分析

FPGA研究院 来源:FPGA之家 作者:FPGA之家 2022-11-15 09:35 次阅读

时序分析是FPGA设计中永恒的话题,也是FPGA开发人员设计进阶的必由之路。慢慢来,先介绍时序分析中的一些基本概念。

时钟的时序特性主要分为抖动(Jitter)、偏移(Skew)、占空比失真(Duty Cycle Distortion)3点。对于低速设计,基本不用考虑这些特征;对于高速设计,由于时钟本身的原因造成的时序问题很普遍,因此必须关注。

时钟抖动 (clock jitter)

理想的时钟信号应该是理想的方波,但是现实中的时钟的边沿变化不可能是瞬变的,它有个从低到高 / 从高到低的变化过程,如下图所示。

常见的抖动参数有3种:

周期抖动(Period Jitter):周期抖动率(Period Jitter)测量时钟输出传输偏离其理想位置的最大偏离。Period Jitter代表周期差抖动的上下边界。

周期差抖动(cycle-to-cycle Jitter):周期差抖动率(cycle-to-cycle jitter)是两个相邻周期的时间偏差。它总是小于周期抖动(period jitter)

长期抖动(Long-term Jitter):长期抖动率如下图(Long-Term Jitter)定义为一个时钟沿相对于基准周期时钟沿经过一段时间的延时之后,与其理想位置的偏离。此测量可以捕获锁相环低频周期变化(缓慢的,频率很低的)。长期抖动对图形、串行连接通讯系统、打印机和任何光栅扫描操作非常重要。

时钟抖动的原因就是噪声。时钟抖动是永远存在的,当其大到可以和时钟周期相比拟的时候,会影响到设计,这样的抖动是不可接受的。

时钟偏斜 (clock skew)

时钟信号要提供给整个电路的时序单元,所以时钟信号线非常长,并构成分布式的RC网路。它的延时与时钟线的长度、时序单元的负载电容、个数有关,所以产生所谓的时钟偏移。时钟偏移是指同一个时钟信号到达两个不同的寄存器之间的时间差值,根据差值可以分为正偏移和负偏移。

时钟偏移的计算公式:Tskew = Tclk2 - Tclk1

时钟偏移是永远存在的,当其大到一定程度会影响电路的时序。解决方法就是在FPGA的设计中让主要的时钟信号走全局时钟网络。该网络采用全铜工艺和树状结构,并设计了专用时钟缓冲和驱动网络,到所有的IO单元、CLB和块RAM的偏移非常小,可以忽略不计。

占空比失真DCD (Duty Cycle Distortion)

即时钟不对称,时钟的脉冲宽度发生了变化。DCD会吞噬大量的时序裕量,造成数字信号的失真,使过零区间偏离理想的位置。DCD通常是由信号的上升沿和下降沿之间时序不同而造成的。

信号扇入/扇出 (fan-in/fan-out)

扇出(fan-out)是定义单个逻辑门能够驱动的数字信号输入最大量的术语。大多数TTL逻辑门能够为10个其他数字门或驱动器提供信号。因而,一个典型的TTL逻辑门有10个扇出信号。

在一些数字系统中,必须有一个单一的TTL逻辑门来驱动10个以上的其他门或驱动器。这种情况下,被称为缓冲器(buf)的驱动器可以用在TTL逻辑门与它必须驱动的多重驱动器之间。这种类型的缓冲器有25至30个扇出信号。逻辑反向器(也被称为非门)在大多数数字电路中能够辅助这一功能。

模块的扇出是指模块的直属下层模块的个数。一般认为,设计得好的系统平均扇出是3或4。一个模块的扇出数过大或过小都不理想,过大比过小更严重。一般认为扇出的上限不超过7。扇出过大意味着管理模块过于复杂,需要控制和协调过多的下级。解决的办法是适当增加中间层次。一个模块的扇入是指有多少个上级模块调用它。

扇人越大,表示该模块被更多的上级模块共享。这当然是我们所希望的。但是不能为了获得高扇人而不惜代价,例如把彼此无关的功能凑在一起构成一个模块,虽然扇人数高了,但这样的模块内聚程度必然低,这是我们应避免的。设计得好的系统,上层模块有较高的扇出,下层模块有较高的扇人。其结构图像清真寺的塔,上面尖,中间宽,下面小。

时序分析起点和终点

时序分析起点(launch edge):第一级寄存器数据变化的时钟边沿,也是静态时序分析的起点。

时序分析终点(latch edge):数据锁存的时钟边沿,也是静态时序分析的终点。

数据输出延时 (Tco)

数据输出延时(Tco):这个时间指的是当时钟有效沿变化后,数据从输入端到输出端的最小时间间隔。

建立时间 (setup time)

建立时间(setup time)是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。输入信号应提前时钟上升沿(如上升沿有效)T 时间到达芯片,这个T就是建立时间。简而言之,时钟边沿触发前,要求数据必须存在一段时间,这就是器件需要的建立时间。如不满足建立时间,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器。

保持时间 (hold time)

保持时间(hold time)是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。简而言之,时钟边沿触发后,数据也必须保持一段时间,以便能够稳定读取,这就是器件需要的保持时间。如果hold time 不够,数据同样不能被打入触发器。

如果不满足建立和保持时间的话,那么DFF(D type flip-flop/D类型触发器) 将不能正确地采样到数据,将会出现亚稳态(metastability )的情况。如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。

数据到达时间 (Data Arrival Time)

输入数据在有效时钟沿后到达所需要的时间。主要分为三部分:时钟到达寄存器时间(Tclk1),寄存器输出延时(Tco)和数据传输延时(Tdata)。

数据到达时间的计算公式:

Data Arrival Time = Launch edge + Tclk1 +Tco + Tdata

时钟到达时间 (Clock Arrival Time)

时钟从latch边沿到达锁存寄存器时钟输入端所消耗的时间为时钟到达时间。

时钟到达时间的计算公式:

Clock Arrival Time = Lacth edge + Tclk2

建立裕量 (Setup Slack)

当数据需求时间大于数据到达时间时,就说时间有余量,Slack是表示设计是否满足时序的一个称谓。

建立裕量的计算公式:

Setup slack = Data Required Time - Data Arrival Time

正的slack表示数据需求时间大于数据到达时间,满足时序(时序的余量),负的slack表示数据需求时间小于数据到达时间,不满足时序(时序的欠缺量)。

最大时钟频率

时钟最小周期:系统时钟能运行的最高频率。

当数据需求时间大于数据到达时间时,时钟具有余量

当数据需求时间小于数据到达时间时,不满足时序要求,寄存器经历亚稳态或者不能正确获得数据

当数据需求时间等于数据到达时间时,这是最小时钟运行频率,刚好满足时序

最小时钟周期为数据到达时间等于数据需求时间。

时序分析

分析上图,数据传播的路径从上一级触发器到下一级触发器建立经过的数据时延总和为:Tclk1 + Tco + Tdata + Tsetup - slack + Tsu。

在两级寄存器之间,时钟间隔为:Tclk + Tclk2。

根据建立时间要求(在下一个时钟上升沿到来的时候,数据必须稳定,且保持一定的时间Tsu)可以列一个不等式:数据时延时钟间隔,即:Tclk1 + Tco + Tdata + Tsetup - slack + Tsu = Tclk + Tclk2。

同理,根据保持时间要求(时钟上升沿到来后,寄存器锁存数据的时候,数据要保持一定的稳定时间Th)可以列出:Tco + Tdata = Th。

随着系统时钟 fclk 变大时,Tclk变小,则要求 Tco + Tdata 也变小,当 Tco + Tdata 不满足第一个不等式时,不满足建立时间要求;但是,Tco + Tdata 也不是越小越好,当其太小时,不满足第二个不等式时,触发器不能正常锁存数据,即不满足保持时间要求。从某种意义上说,Th限制了数据传输速率。

对于设计者来说最大的目的是提高时序的裕量,这样即使信号完整性上出现一点问题,或者外界环境发生一定的变化,系统仍然能正常工作,这就是一个设计优良的系统应该体现出的超强的稳定性。

审核编辑:郭婷

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

    关注

    1603

    文章

    21328

    浏览量

    593275
  • 寄存器
    +关注

    关注

    30

    文章

    5037

    浏览量

    117764

原文标题:货 | FPGA开发设计必经之路:时序分析

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

收藏 人收藏

    评论

    相关推荐

    FPGA的约束设计和时序分析

    FPGA/CPLD的综合、实现过程中指导逻辑的映射和布局布线。下面主要总结一下Xilinx FPGA时序约束设计和分析
    发表于 09-21 07:45

    时序分析基本概念解析

    正如“聚合”的意思(字典)“两个或多个事物聚集在一起的发生”。所以我们可以假设它也与 2 个时钟路径聚集在一起有关。 (了解时钟路径请参考另一篇博客-静态时序分析基础:第1部分“时序路径”)
    的头像 发表于 08-08 10:31 591次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>分析</b>基本<b class='flag-5'>概念</b>解析

    时序分析基本概念介绍—时序库Lib

    今天主要介绍的时序概念时序库lib,全称liberty library format(以• lib结尾),
    的头像 发表于 07-07 17:15 1799次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>分析</b>基本<b class='flag-5'>概念</b>介绍—<b class='flag-5'>时序</b>库Lib

    时序分析Slew/Transition基本概念介绍

    今天要介绍的时序分析基本概念是Slew,信号转换时间,也被称为transition time。
    的头像 发表于 07-05 14:50 1725次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>分析</b>Slew/Transition基本<b class='flag-5'>概念</b>介绍

    时序分析基本概念介绍&lt;Skew&gt;

    今天要介绍的时序分析基本概念是skew,我们称为偏差。
    的头像 发表于 07-05 10:29 2378次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>分析</b>基本<b class='flag-5'>概念</b>介绍&lt;Skew&gt;

    介绍时序分析基本概念MMMC

    今天我们要介绍的时序分析基本概念是MMMC分析(MCMM)。全称是multi-mode, multi-corner, 多模式多端角分析模式。
    的头像 发表于 07-04 15:40 1609次阅读
    介绍<b class='flag-5'>时序</b><b class='flag-5'>分析</b>基本<b class='flag-5'>概念</b>MMMC

    静态时序分析的相关概念

      本文主要介绍了静态时序分析 STA。
    的头像 发表于 07-04 14:40 604次阅读
    静态<b class='flag-5'>时序</b><b class='flag-5'>分析</b>的相关<b class='flag-5'>概念</b>

    AOCV时序分析概念介绍

    今天我们要介绍的时序分析概念是 **AOCV** 。全称Stage Based Advanced OCV。我们知道,在OCV分析过程中,我们会给data path,clock path
    的头像 发表于 07-03 16:29 1297次阅读
    AOCV<b class='flag-5'>时序</b><b class='flag-5'>分析</b><b class='flag-5'>概念</b>介绍

    总结一下在时序分析中的基本概念及基本术语

    下图是一个经典时序分析模型,无论寄存器A与寄存器B是否在同一个芯片中,下列概念均适用。
    的头像 发表于 07-03 15:37 708次阅读
    总结一下在<b class='flag-5'>时序</b><b class='flag-5'>分析</b>中的基本<b class='flag-5'>概念</b>及基本术语

    SOCV时序分析概念简析

    今天我们介绍的时序分析概念是 **SOCV** 。也被叫作POCV,全称为 **Statistic OCV** . 这是一种比AOCV更加先进的分析模式。
    的头像 发表于 07-03 15:19 1695次阅读
    SOCV<b class='flag-5'>时序</b><b class='flag-5'>分析</b><b class='flag-5'>概念</b>简析

    clock gate时序分析概念介绍

    今天我们要介绍的时序分析概念是clock gate。 clock gate cell是用data signal控制clock信号的cell,它被频繁地用在多周期的时钟path,可以节省功耗。
    的头像 发表于 07-03 15:06 1703次阅读
    clock gate<b class='flag-5'>时序</b><b class='flag-5'>分析</b><b class='flag-5'>概念</b>介绍

    时序分析概念min pulse width介绍

    今天我们要介绍的时序分析概念是 **min pulse width** ,全称为最小脉冲宽度检查。这也是一种非常重要的timing arc check,经常用在时序器件或者memory
    的头像 发表于 07-03 14:54 1401次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>分析</b><b class='flag-5'>概念</b>min pulse width介绍

    介绍时序分析的基本概念lookup table

    今天要介绍的时序分析基本概念是lookup table。中文全称时序查找表。
    的头像 发表于 07-03 14:30 764次阅读
    介绍<b class='flag-5'>时序</b><b class='flag-5'>分析</b>的基本<b class='flag-5'>概念</b>lookup table

    静态时序分析的基本概念和方法

    向量和动态仿真 。本文将介绍静态时序分析的基本概念和方法,包括时序约束,时序路径,时序裕量,se
    的头像 发表于 06-28 09:38 807次阅读
    静态<b class='flag-5'>时序</b><b class='flag-5'>分析</b>的基本<b class='flag-5'>概念</b>和方法

    FPGA静态时序分析简单解读

    任何学FPGA的人都跑不掉的一个问题就是进行静态时序分析。静态时序分析的公式,老实说很晦涩,而且总能看到不同的版本,内容又不那么一致,为了彻
    的头像 发表于 05-29 10:24 380次阅读
    <b class='flag-5'>FPGA</b>静态<b class='flag-5'>时序</b><b class='flag-5'>分析</b>简单解读