首页 > 其他分享 >时序分析:基础知识整理(二)

时序分析:基础知识整理(二)

时间:2024-03-22 18:13:28浏览次数:22  
标签:FPGA 基础知识 时间 寄存器 整理 逻辑电路 时序 时钟

搬运自:

孤独的单刀;

大佬后面的是付费项目,所以涉及付费项目的我不会公开,

本博客纯方便自己看做笔记。

输出延时时间Tco

由 clk 触发到输出数据有效之间最大延 迟时间,对应图1的Tco(clock output delay)

组合逻辑与时序逻辑

组合逻辑电路

数字电路根据逻辑功能的不同特点,可以分成两大类:组合逻辑电路与时序逻辑电路。

组合逻辑电路的最大特点是输出是实时跟随输入变化的,

如下面的组合逻辑,如果两个输入之间到达的路径延时不一致的话,则很容易产生毛刺。

(个人见解:纯组合逻辑一定会有不符合需要的输出的时刻,但是通过时序逻辑去获取,也可以得到正确的结果)

(位宽过大的时候会有难以估计的问题)

偏偏FPGA又不是理想器件,在资源被大量使用的情况下,要做到不同的路径达到门电路的延时一致几乎是不可能的,

所以可以说纯组合逻辑电路的毛刺现象几乎是不可避免的。

毛刺的产生很多时候都是个灾难,因为它并不是你预期设计的一部分,这相当于你的设计遇上了没有预料到的输入情况,所以输出在很大程度上也会变得不可控。

时序逻辑电路

时序逻辑电路的最大特点是输出不是实时跟随输入变化的,而是在时钟的上升沿(或下降沿,一般以上升沿为主流)统一发生变化

(诚然这个变化也不是瞬时的,还需要一定的Tco时间)。

在时钟的上升沿之前,只要输入满足建立时间和保持时间的要求,则任你如何有毛刺也不会对输出造成影响,

这很容易理解,因为在非上升沿不会发生采样,自然也不会有输出。

时序逻辑电路解决了组合逻辑电路无法解决的毛刺问题,将电路的行动全部置于统一的行动之下----时钟。

在时钟信号的控制下,整个电路可以有条不紊的运行。

当然,组合逻辑电路并不是被替代,因为我们仍然需要其实现逻辑功能。

所以组合逻辑与时序逻辑可以说是共生,你中有我我中有你----组合逻辑实现逻辑功能,而时序逻辑则将电路的运行置于统一的管理之下。

同步电路和异步电路

基于FPGA的设计几乎都是时序逻辑电路,极少会有设计纯组合逻辑电路的情况。

因此,时序逻辑电路在FPGA的设计中占有非常重要的地位。

对于时序逻辑,按信号间关系来看,又可分为同步时序逻辑和异步时序逻辑,简称同步逻辑和异步逻辑。

简单来讲,FPGA 设计中寄存器全部使用一个时钟的设计是同步设计电路,FPGA 设计寄存器使用多个时钟的设计是异步设计电路。

我们说的所有时序分析都是建立在同步电路的基础上的,异步电路不能做时序分析(或者说只能做伪路径约束)。

异步电路由于使用的时钟不同,导致上游寄存器的输出数据进入下游寄存器的时间是任意的,这非常可能导致不满足下游寄存器的建立时间要求和保持时间要求,从而导致亚稳态。

同样的原因,由于两者时钟不同,所以也不法建立对应的模型来分析异步电路是否能满足时序要求。

所以,对FPGA的时序分析其实主要就是对同步时序逻辑电路进行分析,然后再做约束。那么到底要约束些什么?

建立时间与保持时间

时序逻辑电路的基础是触发器FF,对FF的使用有两个要求是必须满足的----建立时间与保持时间。

  • 建立时间:Setup Time,缩写是 Tsu,即在时钟上升沿之前数据必须稳定的最短时间
  • 保持时间:Hold Time,缩写是 Th,即在时钟上升沿之后数据必须稳定的最短时间

通俗来讲:建立时间和保持时间就是在寄存器采样窗口中输入数据必须保持不变,以免寄存器无法稳定采样。也就是说,在我寄存器的采样窗口之前你输入数据就必须要保持稳定,即输入数据不能来的太晚(建立时间);同样的,你寄存器的输入数据也必须在我寄存器的采样窗口结束后才变化,在此之前必须保持问题,即输入数据不能走的太早(保持时间)。

 建立时间和保持时间的示意图如下:

建立时间和保持时间是触发器的固定属性,也就是说同一FPGA型号其所有的FF的建立时间和保持时间都是相同的,

而不同的FPGA型号之间,其建立时间与保持时间则不同。

关于FPGA对应的建立时间和保持时间可以通过手册来查询,也可以用vivado做时序分析时查询。

高级的FPGA芯片其建立时间和保持时间会比低级的FPGA芯片较小,这也是其能运行频率更高的原因。

了解FPGA的建立时间和保持时间非常重要,它是我们进行时序分析的基础,

甚至可以说,时序分析就是要分析所有的FF是不是都满足建立时间与保持时间的要求。

如果建立时间或者保持时间的要求无法被满足,那么就会发生亚稳态现象。

亚稳态 (Metastability)和决断时间Tmet(resolution time)

如果数据传输中不满足触发器的Tsu和Th不满足,就可能产生亚稳态,

此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端在0和1之间处于振荡状态,

而不是等于数据输入端D的值。

这段时间称为决断时间Tmet(resolution time)。

经过resolution time之后Q端将稳定到0或1上,

但是稳定到0或者1,是随机的,与输入没有必然的关系。

恢复时间与去除时间

异步信号距离下一个时钟沿的时间和上一个时钟沿的时间。

恢复时间(Recovery Time)是指异步控制信号(如寄存器的异步清除和置位控制信号)在“下个时钟沿”来临之前变无效的最小时间长度。

这个时间的意义是,如果保证不了这个最小恢复时间,也就是说这个异步控制信号的解除与“下个时钟沿”离得太近(但在这个时钟沿之前),没有给寄存器留有足够时间来恢复至正常状态,

(不能让异步控制的挂起时间离同步时钟沿太近)

那么就不能保证“下个时钟沿”能正常作用,也就是说这个“时钟沿”可能会失效。

 

去除时间(Removal)是指异步控制信号(如寄存器的异步清除和置位控制信号)在“有效时钟沿”之后变无效的最小时间长度。

这个时间的意义是,如果保证不了这个去除时间,也就是说这个异步控制信号的解除与“有效时钟沿”离得太近(但在这个时钟沿之后),

那么就不能保证有效地屏蔽这个“时钟沿”,也就是说这个“时钟沿”可能会起作用。

 

换句话来说,

如果你想让某个时钟沿起作用,那么你就应该在“恢复时间”之前是异步控制信号变无效,

如果你想让某个时钟沿不起作用,那么你就应该在“去除时间”过后使控制信号变无效。

如果你的控制信号在这两种情况之间,那么就没法确定时钟沿是否起作用或不起作用了,也就是说可能会造成寄存器处于不确定的状态。

而这些情况是应该避免的。所以恢复时间和去除时间是应该遵守的。

比如下图中:

复位信号rst_n作为一个异步控制型号,

需要在下一个时钟有效沿之前就变无效(拉高),以保证Recovery恢复时间,这样寄存器才有足够的时间恢复到正常状态(这有点类似建立时间);

同样的,复位信号rst_n的移除不能与上一个时钟有效沿间隔太近,以保证其无法影响上一个时钟有效沿(这有点类似保持时间)。

 

 

4种基本的时序路径

下图是一张典型的FPGA与上游、下游器件通信的示意图。

 

其可以划分为基本的四条数据路径,这四条路径也是需要进行时序约束的最基本的路径。

  • 路径1,上游器件通过FPGA管脚到FPGA的寄存器的时序路径,即pin2reg(管脚到寄存器),需要对其进行约束,以满足FPGA端寄存器的建立时间和保持时间要求;
  • 路径2,FPGA内部的寄存器到另一个寄存器, 即reg2reg(寄存器到寄存器),需要对其进行约束,以满足FPGA端寄存器的建立时间和保持时间要求;
  • 路径3,FPGA管脚到下游器件的寄存器的时序路径,即reg2pin(寄存器到管脚),需要对其进行约束,以满足下游器件的寄存器的建立时间和保持时间要求;
  • 路径4,FPGA管脚到FPGA管脚的时序路径(不通过任何寄存器),其本质上是纯组合逻辑电路,仅仅需要约束其值在一个指定范围,不需要满足建立时间和保持时间要求。

 

标签:FPGA,基础知识,时间,寄存器,整理,逻辑电路,时序,时钟
From: https://www.cnblogs.com/VerweileDoch/p/18090208

相关文章

  • 2020-1-31-Typescript基础知识
    typescript安装、编译、数据类型、函数声明、ES5中的类、TS中的类、接口、泛型、装饰器Typescript安装npminstalll-gtypescript编译成jstscaaa.ts执行该命令后会自动生成js文件在VScode中设置保存后自动编译1.生成tscconfig.json文件tsc--init2.修改tscconfig.......
  • 2020-2-20-nodejs基础知识
    vs插件安装、快速运行、url模块使用、自动重启工具supervisor、自定义模块、下载第三方包、fs模块、Async、Await的使用、文件里、简易静态服务器、事件驱动EventEmitter、模拟登陆简单版、模拟express封装、操作mongodb数据库VScode插件安装需要安装NodeSnippets插件才会有提......
  • 服务器硬件基础知识
    ......
  • 时序分析:基础知识整理(一)
    好的时序是设计出来的,不是约束出来的。搬运自:孤独的单刀;大佬后面的是付费项目,所以涉及付费项目的我不会公开,本博客纯方便自己看做笔记。时钟抖动ClockJitter理想的时钟信号是完美的方波,但是实际的方波是存在一些时钟抖动的。那么什么是时钟抖动呢? 时钟抖动,ClockJitt......
  • Maven国内镜像地址配置(整理了最新可用的源)
    在maven根目录下的settings.xml文件修改maven配置,首先是本地仓库配置其次在换国内镜像源,这里给大家整理了最新可用的镜像源阿里<mirror><id>alimaven</id><name>aliyunmaven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><......
  • 数据结构与算法基础知识
    数据结构与算法1算法的基本概念算法:是指一组有穷的指令集,是解题方案的准确而完整的描述。也不等于计算方法。算法的基本特征:确定性,算法中的每一步骤都必须有明确的定义,不允许有多义性;有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止;可行性,算法原则上能够精......
  • JSP内置对象笔记整理
    JSP内置对象《JavaWeb开发从入门到实战》第四章内置对象:在JSP页面中不需要声明和实例化,可以直接在Java程序片和Java表达式部分使用的对象。分类·:与Input/Output有关的内置对象与Context有关的内置对象与Servlet有关的对象与Error有关的内置对象与Input/Output有关的......
  • GMAC和PHY基础知识
    参考资料:https://www.cnblogs.com/sammei/p/3933940.htmlhttps://gitcode.csdn.net/65e7d38e1a836825ed789828.htmlhttps://baijiahao.baidu.com/s?id=1752808344840024096&wfr=spider&for=pchttps://www.cnblogs.com/liangxiaofeng/p/3874866.html GMAC和PHY在ISO网络......
  • 腾讯云最新活动及优惠券领取入口整理汇总
    腾讯云作为国内领先的云计算服务提供商,一直以来都致力于为用户提供稳定、安全、高效的云服务。为了吸引用户上云,腾讯云经常推出各种优惠活动,并提供了丰富的优惠券领取渠道。本文将对腾讯云最新的活动及优惠券领取入口进行整理汇总,以便用户可以更加方便地获取优惠。腾讯云推出......
  • PHP 封装整理 insert语句
    废话不多说直接上代码publicfunctioninsert($table,$data,$keyName,$canRepeatAdd=true){$keyStr="";$paramStr="";$params=[];foreach($dataas$key=>$value){if(is_array......