数字电路的时序分析

2023-11-07

记录一下时序分析的学习

首先搞清楚以下时序分析时用到的名词:

1.什么是setup time和hold time,为什么需要setup time和hold time

参考:https://zhuanlan.zhihu.com/p/161283550

  首先来看触发器的原理,如下图所示,是一个传输门逻辑实现的D触发器,T1,T2,I1,I2构成了前级锁存器,T3,T4,I3,I4构成了后一级的锁存器,共同组成了一个触发器。
在这里插入图片描述

  其工作原理为:当clk信号为低电平时,T1,T4导通,T2,T3截止,这时候触发器的输出是稳定的,因为后级是稳定锁存数据的,电路简化是下图的样子:

在这里插入图片描述

  当clk发生跳变,变为高电平时,T2,T3导通,T1,T4截止,前级锁存器将数据锁存,后级为一个通路,可将数据送出到Q端,简化为下图的样子:
在这里插入图片描述

那为什么需要setup time呢?

答:当clk由本来的低电平变为高电平时(也就是上升沿触发时),前级锁存器要想在高电平时正确锁存D端的数据,就必须在低电平的通路阶段,让D端的数据传输到I1的输出端,这样前级锁存器才能在变为高电平后正确锁存数据。从D输入端到I1的输出端(Qm非)需要的时间,就是setup的时间,即在CLK上升沿之前,D端数据要稳定一段时间,使得数据可以到达I1的输出端(Qm非)。

那为什么需要hold time呢?

答:在clk由低变高时,T1的关断是需要时间的,还是为了前级锁存器的正常锁存,确保T1完全关断,D在CLK上升沿之后,也需要保持不变,使得T1传输门完全关断,前级触发器正确锁存。

因此,在时序逻辑中,信号必须满足setup time和hold time,寄存器才能正确采集数据,逻辑才不会混乱。

2.时序路径是什么,有哪些时序路径?

时序路径,其实就是信号的传输路径,根据信号的传输路径,时序路径有以下四种:

  • Path from Input Port to Internal Sequential Cell(输入端口到芯片的内部时序元件(也就是寄存器))
  • Internal Path from Sequential Cell to Sequential Cell(寄存器到寄存器)
  • Path from Internal Sequential Cell to Output Port(内部寄存器到输出端口)
  • Path from Input Port to Output Port(输入端口到输出端口)
    在这里插入图片描述

  可以看到只要遇到寄存器,一条时序路径就结束,整个时序分析就是分析这些路径上的信号延时。

3.如何分析时序路径上的时序?

分析时序路径主要依靠分析时序路径上的信号延时,首先明确几个概念:

  • launch edge time: 数据发射时间,也就是前一级寄存器将数据打出的时间
  • capture edge time: 数据的捕获时间,也就是后一级寄存器捕获数据的时间,通常capture edge time - launch edge time为一个时钟周期。
  • datapath delay: 数据从发射出到下一级寄存器D端的时间,通常为Tclk-Q + Tcomb(组合逻辑时延)
  • source clock path delay: 指前一级source寄存器的clk,从时钟源端到source寄存器的延时
  • destination clock path delay: 后一级destination寄存器的clk,从时钟源端到destination寄存器的延时
    在这里插入图片描述
    在这里插入图片描述

3.1 setup time的分析

首先根据上面讲到的时序路径来分析setup time,这里将提到三个概念:

  • Data Required Time (setup): 指的是为了满足setup,我们期望数据信号到达的时间
  • Data Arrival Time (setup): 指的是数据信号实际的到达时间
  • Slack (setup): 指的是期望到达时间与时间到达时间的差值,也就是时间裕度。

首先以reg2reg这种最为典型的时序路径(前面讲了4种时序路径)来看Data Required Time (setup)的分析:
在这里插入图片描述

在不考虑时钟偏移和时钟抖动的情况下,假设时钟周期为5ns,建立时间setup是0.5ns的话,也就是说数据必须在第二个周期的前0.5ns到达,即数据必须在5-0.5=4.5ns之前到达,因此4.5ns是要求到达时间,如果超过了这个时刻数据就打不进触发器DFF2,因此:

          Data Required Time (setup) <= 4.5ns

同样在不考虑时钟偏移和时钟抖动的情况下,假设Tclk-Q的时间为0.6ns,两个寄存器之间的组合逻辑延时为3.33ns,则:

          Data Arrival Time (setup) = 0.6ns+3.33ns = 3.93ns

也就是说clk上升沿之后3.39ns,数据就从launch edge到达了目的寄存器的D端,这个时间是小于4.5ns的,因此setup是满足的。

          时序裕度Slack (setup)=4.5-3.93=+0.57ns.

因此也看到setup时间约束的是数据传播的最大延时,在本例中,如果实际的信号传播延时大于了4.5ns,电路将不满足setup的要求,发生时序违例。

更进一步分析:

  实际的电路中,时钟并不是理想的时钟,source寄存器和目的寄存的时钟也不是完全同步的,由于时钟从时钟源到达两个寄存器的时间不同,因此存在时钟偏差skew,由于时钟的不稳定行,时钟还存在一定的抖动jitter,因此在分析setup时,也需要将时钟的因素考虑在内。

还是以reg2reg的时序路径为例:
在这里插入图片描述

  我们从时钟源来重新分析计算**Data Required Time (setup)、Data Arrival Time (setup)、时序裕度Slack (setup)**这三个时间,以lunach edge time为0时刻。

从图中可以看出:

Data Required Time (setup) = TCLK(一个时钟周期) + Tskew - setup time - clock uncertainty(考虑时钟抖动,把要求的时间再往前挪一些)

Data Arrival Time (setup) = Tclk_Q + Tcomb

时序裕度Slack (setup) = Data Required Time (setup) - Data Arrival Time (setup) = 一个时钟周期 + Tskew - setup time - Tclk_Q - Tcomb - clock uncertainty

3.2 hold time的分析

还是以REG2REG的时序路径为例:

首先需要想清楚一件事情:在接收端的上升沿后的hold时间段内,前一级的source寄存器在干什么?

答:前一级的source寄存器把新的数据给launch(发射)了出来,因此,hlod time时间段内,想要保持触发器D端的数据不变,就是要保证,前一级新发出来的数据不能到达的太快,如果在hlod时间段内,前一级新发出来的数据到达了接收寄存器的D端,就会破坏D端的前一个的稳定数据,也就是hold时间不满足。

在不考虑时钟偏移和时钟抖动的情况下也就是:

Data Arrival Time(hold)>= hold time ,也就是信号传的慢一点,最快也只能是hold time,假定新数据的到达时间正好是hold time,也就是前一个数据正好在接收寄存器的D端保持了hold time的时间,刚刚满足。这也就是hold规定了最小的延时,再小就不行了,破坏了hold time。 这里hold time就是我们的Data Required Time(hold),我们希望Data Arrival Time(hold)不要小于hold time。
这时候的时间裕度就可以这么算:

时序裕度Slack (setup) = Data Arrival Time(hold)- hold time

更进一步分析:

考虑时钟偏移和时钟抖动:

如果是正偏移:在接收端的上升沿发生时,发送端的上升沿都已经结束了,也就是新的数据早就发出来了,因此,为了保证满足hold时间,需要信号再慢一点,即:

Data Required Time(hold)>= hold time + Tskew + clock uncertainty(考虑抖动)

Data Arrival Time (hold) = Tclk_Q + Tcomb

时序裕度Slack (hold) = Data Arrival Time (hold) - Data Required Time(hold)(这里用Arrival减去Required 是为了使得slack为正值,一般不违例的情况下就是Arrival时间大于Required时间)=Tclk_Q + Tcomb -(hold time + Tskew + clock uncertainty(考虑抖动))

分析完毕

现在再来看看为什么需要时钟约束?

首先要清楚EDA工具在检查时序时具体在检查什么?

答:eda工具在检查时序时,在检查每一条时序路径的setup和hold时间是否满足,即检查setup的slack和hold的salck,看看时序裕度是否为正。

前面我们已经分析计算了Slack (setup)和Slack (hold),现在我们看看计算这两个量需要哪些参数?

答:需要下面计算公式里面的每一个变量参数。

时序裕度Slack (setup) = Data Required Time (setup) - Data Arrival Time (setup) = TCLK(一个时钟周期) + Tskew - setup time - Tclk_Q - Tcomb - clock uncertainty

时序裕度Slack (hold) = Data Arrival Time (hold) - Data Required Time(hold)(这里用Arrival减去Required 是为了使得slack为正值,一般不违例的情况下就是Arrival时间大于Required时间)=Tclk_Q + Tcomb -(hold time + Tskew + clock uncertainty(考虑抖动))

以上的参数中setup、hold、Tclk_Q 、Tcomb时间是芯片代工厂工艺库里面会根据综合使用的标准单元给到的,这也就是电路综合时候需要一个库文件的原因。

那还有其他的TCLK、clock uncertainty等参数是eda工具不知道的,这就需要我们给它参数,这也就是时钟约束。

前面一共讲有四种时序路径,在分析port2reg、reg2port以及port2port的时序路径时,还需要知道延时input delay 和输出延时 output delay,这也是eda工具不知道的,需要我们约束。
在这里插入图片描述

总结一下就是:

时序约束就是给eda工具在检查时序路径时需要用到的参数。

因此时序约束长下面这个样子:

  • create_clocks -name clk_name -period 10 [get_ports clk_in] //这个说明了时钟的周期TCLK为10ns
  • set_input_delay -max 7.4 -clock CLK [get_ports A] //这个说明了portA的信号输入延时
  • set_output_delay -max 7 -clock Clk [get_ports B] //这个说明了portB的信号输出延时
  • set_clock_uncertainty -setup 0.15 [get_clock clk] //这个约束考虑了时钟抖动和偏移,使得时序检查更为严苛

以上是基本的时序约束,要想更为精细化的时序检查,还有其他的一些更为细致的参数要给eda综合工具,这个正在进一步学习中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数字电路的时序分析 的相关文章

  • FPGA_时钟显示(时钟可调)

    1 实验说明 在数码管显示数据的基础上 让六位数码管显示数字时钟 并且通过按键可以对时间进行修改 实验目标 六位数码管分别显示时间的时分秒 且通过按键可实现加减调整时间及清零功能 key1 切换键 选择待调整的时间单位 时 分 秒 key2
  • CAN FD基础

    CAN FD基础 一 CAN FD与CAN 2 0的区别 1 CAN FD的优势 该协议能够支持更高的速率 可以更快的刷写ECU 在单个数据帧内传送率可达64字节 避免了经常发生的数据分拆传输的状况 对汽车行业而言 CAN FD协议显得非常
  • 机械孔与盲孔

    过孔是什么 过孔 Via 电路板上的孔 连接不同层之间的线路 把电路板从平面结构变成立体结构 单层线路想不交叉太难了 双层或更多层线路 必须通过过孔来连接 通过孔壁上的铜 连通上下层的电路铜线 单层PCB 有些时候无法布线 必须通过过孔换层
  • [从零开始学习FPGA编程-28]:进阶篇 - 基本组合电路-奇偶校验生成器(Verilog语言版本)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 第1章 奇偶校验生成器 1 1 什么是奇校验 1 2 Verilog语言描述
  • 使用七牛云进行文件上传

    目录 一 七牛云入门测试 1 注册七牛云账号 完成后选择对象存储 2 在里面创建空间 一个空间相当于一个文件夹 就是将对象上传到的地方 3 查看个人秘钥 注册完成账号后 会有一个秘钥 上传文件的时候进行授权和认证 4 文件上传测试 二 封装
  • ALLEGRO等长时如何将PIN DELAY和VIA长度计算在内

    在PCB设计中 对于时序要求严格的线路 Via和IC pin delay的长度必须得到重视 通过下面的操作 可将Via和Pin delay加入到线路长度的计算中 1st 计算Pin delay 打开Constraint Manager 选择
  • 硬件工程师-三极管

    目录 一 机械开关 二 三极管的种类 三 NPN型三极管 N型三极管 四 PNP型三极管 编辑 五 三极管公式 NPN型三极管 PNP型三极管 六 NPN管的继续讲解 三极管的导通电压 PNP管也是一样 三极管的三种状态 判断三极管是放大还
  • 【FPGA多周期时序约束详解】- 解读FPGA多周期时序约束的全过程

    FPGA多周期时序约束详解 解读FPGA多周期时序约束的全过程 FPGA作为数字电路设计的常见工具 其设计中必然会遇到时序约束的问题 而多周期时序约束更是FPGA设计中不可避免的难点之一 本文将详细介绍FPGA多周期时序约束的全过程 并结合
  • DC/DC闭环控制的丘克(Cuk)变换电路原理设计及实验仿真

    如果将降压 Buck 变换电路和升压 Boost 变换电路的拓扑结构进行对偶变换 即Boost变换电路和Buck变换电路串联在一起得到一种新的电路拓扑结构 丘克 CUK 变换电路 如图所示 Cuk变换电路的输入和输出均有电感 增加电感的值
  • 串口通信知识点总结

    串口是串行接口 serial port 的简称 也称为串行通信接口或COM接口 串口通信是指采用串行通信协议 serial communication 在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式 串口按电气标准及协议来划分
  • linux使用文件描述符0、1和2来处理输入和输出

    文件描述符012 在Linux中 文件描述符0 1和2分别代表标准输入 stdin 标准输出 stdout 和标准错误 stderr 它们用于处理进程的输入和输出 文件描述符0 stdin 文件描述符0是进程的标准输入 通常用于读取用户的输
  • 学习区分dB、dBm、dBuV、dBi

    dB 对于分贝的概念 很多朋友最早接触这个概念 是用 分贝 评估声音的大小 声音的大小用分贝 dB 表示 是一种对数单位 用来描述声音的强度或功率比例 如果P是我们需要测试的声压级或声功率级 P0是参考值 通常取为标准听觉阈限的声压级 X
  • [Verilog] Verilog 基本格式和语法

    主页 元存储博客 全文 3000 字 文章目录 1 声明格式 1 1 模块声明 1 2 输入输出声明 1 3 内部信号声明 1 4 内部逻辑声明
  • 1.69寸SPI接口240*280TFT液晶显示模块使用中碰到的问题

    1 69寸SPI接口240 280TFT液晶显示模块使用中碰到的问题说明并记录一下 在网上买了1 69寸液晶显示模块 使用spi接口 分辨率240 280 给的参考程序是GPIO模拟的SPI接口 打算先移植到FreeRtos测试 再慢慢使用
  • allegro画PCB如何更新元件的PCB封装

    allegro画PCB如何更新元件的PCB封装 一 更新单个器件的PCB封装 首先菜单栏选择Place gt Update Symbols 如下图 注意此案例是更新了C0805封装 中更新封装 就将上图第二个红色方框中的勾选即可 二 更新某
  • 1.69寸SPI接口240*280TFT液晶显示模块使用中碰到的问题

    1 69寸SPI接口240 280TFT液晶显示模块使用中碰到的问题说明并记录一下 在网上买了1 69寸液晶显示模块 使用spi接口 分辨率240 280 给的参考程序是GPIO模拟的SPI接口 打算先移植到FreeRtos测试 再慢慢使用
  • 48V转12V的DC-DC稳压电路推荐

    项目或学习过程中好用且稳定的DC DC的电路将是一个成功硬件项目的基础 主芯片 MP9486 MP9486A 是一款高压降压型开关稳压器 可输 出高达 1A 的持续电流至负载 它集成了一个高 压高端 MOSFET 提供 3 5A 的典型峰值
  • TRICONEX MA2211-100 芯片上相互连接

    TRICONEX MA2211 100 芯片上相互连接 TRICONEX MA2211 100 所有相同的组件 io的电源 处理器 和内存将需要 但是 你可以看到所有这些带存储器和处理器的OO板 针不能嵌入到一个小的单片机上 现在是 普拉克
  • 如何正确使用RC滤波网络

    众所周知 最有效的滤波电路应靠近噪声源放置 滤波的作用是对噪声电流进行及时有效地阻止和转移 实际设计中 工程师经常使用高的串联阻抗 电阻 电感和铁氧体 阻止电流 并使用低的并联阻抗 电容 转移电流 通常情况下 我们期望滤波器可以对噪声信号衰
  • DSCA190V 57310001-PK

    DSCA190V 57310001 PK DSCA190V 57310001 PK 具有两个可编程继电器功能 并安装在坚固的 XP 外壳中 DSCA190V 57310001 PK 即可使用 只需最少的最终用户校准 DSCA190V 573

随机推荐

  • zlib库使用简单讲解

    1 zlib库简介 zlib 是通用的压缩库 提供了一套 in memory 压缩和解压函数 并能检测解压出来的数据的完整性 integrity zlib 也支持读写 gzip gz 格式的文件 源码网址 http www gzip org
  • C# 字符串

    文章目录 C 字符串操作 1 获取长度 2 查找字符 3 字符串替换 4 字符串截取 5 字符串插入 C 类型转换 1 隐式类型转换 2 显式类型转换 C Convert方法和Parse 方法 1 Parse 2 Convert C 装箱和
  • 【机器学习-西瓜书】第5章 神经网络

    5 1 神经元模型 定义 神经网络是由具有适应性的简单单元组成的 广泛并行互连的网络 其组织能够模拟神武神经系统对真实世界物体所做出的交互反应 这里的简单单元指 神经元neuron 在神经网络中 每个神经元与其他神经元相连 当超过一个 阈值
  • Bash脚本自学 - 变量和位置自变量

    变量 在hellothere sh文件里 bin bash FIRST NAME Herbert LAST NAME Lindemans echo Hello FIRST NAME LAST NAME 在指令行输入 chmod u x he
  • [LeetCode] Binary Tree Level Order Traversal 二叉树层次遍历(DFS

    目录 1 Binary Tree Level Order Traversal 二叉树层次遍历 BFS 2 Binary Tree Level Order Traversal II 二叉树层次遍历从低往高输出 BFS 3 Maximum De
  • 如何用dev-c++创建lib(静态链接库)文件

    虽说dev c 适合初学者 但是它的功能还是很强大的 那如何用它制作一个lib 静态链接库 呢 目录 第一步 制作静态链接库 第二步 链接静态链接库 方法一 使用项目 方法二 修改编译选项 第三步 使用库函数 方法一 方法二 第一步 制作静
  • git出现fatal: unable to auto-detect email address (got ‘用户@PC机.(none)’)

    git出现fatal unable to auto detect email address got 用户 PC机 none 解决方法 cd git 进入git中的 git文件夹 找到config vim config 按i进入编辑模式 在
  • Linux入门

    1 1 Linux操作系统简介 Linux是一套免费使用和自由传播的类Unix操作系统 是一个基于POSIX和UNIX的多用户 多任务 支持多线程和多CPU的操作系统 它能运行主要的UNIX工具软件 应用程序和网络协议 它支持32位和64位
  • MP4中同时有逐行、隔行编码视频内容

    公司做了个MP4视频 一部分是逐行的 一个部门是隔行扫描方式 用mediainfo看了下 整个显示视频信息为 Scan Type Interlaced Scan Order TFF 用Stream Eye观看视频 隔行部分如下图 逐行部分
  • Windows Qt设置环境变量

    目录 附 其他相关文章 问题 在Qt软件中新建项目 可以直接构建运行 但是当我们直接双击运行项目构建生成的exe文件时 会提示以下内容 由于找不到 Qt5Core dll 无法继续执行代码 重新安装程序可能会解决此问题 另外 可能还会有Qt
  • 关于vue项目在IE11上遇到的兼容性问题

    1 chunk vendors js语法错误 分析 sockjs client包的语法错误 解决 在vue config js中配置transpileDependencies属性 module exports 打包时将转化成低语法 tran
  • 【Django基础学习】python manage.py inspectdb相关的一些问题和解决方案

    Django 之 inspectdb inspectdb简单介绍 具体用法 在Django项目下 python manage py inspecdb gt your app name models py 作用 众所周知 Django较为适合
  • windows系统中通过 运行(win+R) 的方式打开电脑程序或文件夹

    或许你有这样的经历 在电脑 win系统 中 按下win徽标加R键会弹出 运行对话框 里面输入 notepad mspaint snippingtool等后会出来系统的程序 那么我们如何也这样打开自己的程序 或文件夹呢 从而让桌面变得较为干净
  • AR-虚实融合文献阅读整理(一)

    一 增强现实中虚实融合中光照一致性的研究 http xueshu baidu com s wd paperuri 3A 28e867ba9c51b7d137175268533e46399d 29 filter sc long sign tn
  • PCIe专题学习——2.5(Flow control缓存架构及信用积分)

    之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍 了解了PCIe是一种封装分层协议 packet based layered protocol 主要包括事务层 Transaction layer 数据链路层 Data link lay
  • Ubuntu的gcc卸载与安装

    1 卸载旧版本gcc sudo apt get remove gcc 2 添加软件源 sudo add apt repository ppa ubuntu toolchain r test 3 更新 sudo apt get update
  • FIR与IIR滤波器

    H z 有分母的就是IIR 因为有自环 递归型 一个冲激响应会一直在系统里循环 H z 没有分母的就是FIR 因为没有自环 非递归型 一个冲激响应不会在系统里一直循环 通过H Z 也可简单判断 一般FIR滤波器的系统函数无分母 IIR滤波器
  • 网络爬虫-----初识爬虫

    目录 1 什么是爬虫 1 1 初识网络爬虫 1 1 1 百度新闻案例说明 1 1 2 网站排名 访问权重pv 2 爬虫的领域 为什么学习爬虫 2 1 数据的来源 2 2 爬虫等于黑客吗 2 3 大数据和爬虫又有啥关系 2 4 爬虫的领域 前
  • 用户态和内核态的区别

    一 操作系统需要两种CPU状态 内核态 Kernel Mode 运行操作系统程序 操作硬件 用户态 User Mode 运行用户程序 二 指令划分 特权指令 只能由操作系统使用 用户程序不能使用的指令 举例 启动I O 内存清零 修改程序状
  • 数字电路的时序分析

    记录一下时序分析的学习 首先搞清楚以下时序分析时用到的名词 记录一下时序分析的学习 1 什么是setup time和hold time 为什么需要setup time和hold time 2 时序路径是什么 有哪些时序路径 3 如何分析时序