文章目录

  • 前言
  • 基本概念介绍
    • 常用时间参数介绍
      • tsu
      • 建立时间要求
      • 建立时间余量
      • th
      • 保持时间要求
      • 保持时间余量
      • tco
      • Maximum frequency (or Minimum period)
    • 线延迟与门延迟
      • 影响延迟的因素
      • 温度与电压
      • 温度对延迟的影响
      • 电压对延迟的影响
      • 三种工况
    • 时钟信号的偏差描述
      • 时钟精度
      • 时钟漂移
      • jitter
      • skew
      • slew rate

前言

本文来自于《FPGA之道》,一起看作者对于时序分析这一专题的理解。

基本概念介绍

在介绍时序分析之前,让我们先来了解一些相关的基本概念。

常用时间参数介绍

时序分析主要是针对时序逻辑来说的,而时序逻辑中最基本的单元则是寄存器,因此,本章节就让我们围绕下图来谈一谈与寄存器相关的一些重要的时间参数:

tsu

建立时间,英文全称setup time。它是指在有效的时钟边沿信号到来之前,端口D上数据持续稳定不变的时间,如上图中tsu所示。

建立时间要求

建立时间要求,指的就是要想寄存器能够如期的工作,在有效的时钟边沿信号到来之前,D端口上的数据至少需要持续保持稳定不变的时间,也就是寄存器能够正常工作所允许的最小tsu。注意,建立时间要求也可能为零甚至负数,它跟寄存器的类型和具体实现结构有关。

建立时间余量

建立时间余量 = tsu - 建立时间要求。如果建立时间余量大于等于0,则表示寄存器能够正常工作;否则,表示寄存器无法实现预期功能。

th

保持时间,英文全称hold time。与建立时间相对应,保持时间是指在有效的时钟边沿信号到来之后,端口D上数据持续稳定不变的时间,如上图中th所示。

保持时间要求

保持时间要求,指的就是要想寄存器能够如期的工作,在有效的时钟边沿信号到来之后,D端口上的数据至少仍需要持续保持稳定不变的时间,也就是寄存器能够正常工作所允许的最小th。注意,建立时间要求也可能为零甚至负数,它跟寄存器的类型和具体实现结构有关。

保持时间余量

保持时间余量 = th - 保持时间要求。如果保持时间余量大于等于0,则表示寄存器能够正常工作;否则,表示寄存器无法实现预期功能。

tco

时钟至输出延迟,英文全称clock to output delay。当寄存器clk端口的时钟信号与D端口的数据信号的时序关系满足建立时间和保持时间要求时,tco指的就是从时钟有效边沿到达寄存器时开始,到端口Q上稳定得到D端口采样的时间,如上图中tco所示。

Maximum frequency (or Minimum period)

最大时钟频率(或最小时钟周期)。它指的是在确保FPGA设计能够正确实现其功能的前提下,时钟信号所能允许的最大频率(或最小周期)。

线延迟与门延迟

通过【知己知彼篇->组合逻辑电路与时序逻辑电路】、【程序设计篇->编程思路->编写纯净的组合或时序逻辑】等相关章节的介绍,我们了解到,时序逻辑分为以寄存器为代表的存储功能部分和纯组合逻辑部分。其实,时序分析的目的,就是要确保时序逻辑的存储功能部分能够正确的储存我们想要它存储的数据,因此在上一章节中,我们围绕着寄存器,介绍了时序分析相关的一些重要参数。但是,同样的FPGA芯片、同样的寄存器,为什么有时候就能够正确实现数据寄存功能?有时候就不行呢?原因就在于不同时序逻辑中的纯组合逻辑部分大不相同。不同功能或不同实现的组合逻辑,其对应的时间延迟是不同的,因此,组合逻辑的延迟时间求解是时序分析中的重头戏。那么,本章节就来简单介绍一下与组合逻辑相关的时间延迟。
简单来说,组合逻辑的延迟主要取决于两个方面——线延迟和门延迟(其实寄存器等存储单元的相关时间参数和延迟特性,其本质也是线延迟和门延迟,只不过一旦FPGA芯片的具体封装、型号、速度等级确定后,类似寄存器这样存储单元的各项延迟特性就不再改变,因此我们用建立时间要求、保持时间要求、tco等参数来进行总结,并且可以简化其在时序分析时的复杂度)。其中,线延迟指的是连线对电信号造成的传输延迟,这跟连线的阻抗模型、分段寄生电容、电感以及连线长度等等都有很大关系,它取决于FPGA设计最终在芯片内的布局布线情况。而门延迟指的是组合逻辑中所使用的具体门单元电路在进行电信号处理时所带来的延迟,例如,对于下图所示的非门来说,

如果输入端A发生了变化,那么输出端F得到稳定的对应于A端新值的输出所需要的时间便是这个非门的门延迟。FPGA芯片中的各类门延迟跟其底层硬件实现息息相关,而一段组合逻辑的总体门延迟则取决于其设计、综合、转换、映射等环节的工作。
由于线延迟的相关信息要等布局布线工作完成后才能进行评估,而门延迟的相关信息则可以在映射工作完成后得到,因此,就像【开发流程篇->FPGA设计的时序分析】章节中所说的,时序分析可以在两个不同的时间点以不同的方式介入,分别被称为映射后时序分析与布局布线后时序分析。而本章,我们主要关注的则是可信度更高的布局布线后时序分析。

影响延迟的因素

不得不非常遗憾地说一句,即便是布局布线全部完成,我们的FPGA设计已经由确定的FPGA芯片、确定的门电路和确定的物理连线所实现,线延迟、门延迟仍然存在着变数,因为物理电路的特性会受很多因素的影响,而其中最主要的就是温度和电压。

温度与电压

基本RC电路的特性
我们先来分析一下如下基本RC电路的充、放电特性:

当Uout初始为逻辑0时,Uin从逻辑0顺便为逻辑1,此时,围绕着电容C展开充电过程。通过模拟电路的一些先验知识,我们可以知道,Uout的增长速度是与电容、电阻的乘积RC成类似反比关系的,即RC越大,Uout的增长速度越慢;反之越快。
而当Uout初始为逻辑1时,Uin从逻辑1瞬变为逻辑0,此时,围绕着电容C展开放电过程。基于同样的先验知识,我们可以知道,Uout的减少速度也是与电容、电阻的乘积RC成类似反比关系的,即RC越大,Uout的减少速度越慢;反之越快。
若RC固定不变,那么,当上述电路充电时,无论Uin的实际电压是多少,Uout从0V增长到kUin(k为大于0小于1的系数)的时间都是一样的;类似的,当上述电路放电时,无论Uout的实际电压是多少,Uout从Uout减少到kUout(k为大于0小于1的系数)的时间也都是一样的。
以上便是RC电路的一些基本特性。之所以要介绍RC电路,是因为如果考虑到FPGA内部电路的寄生电容和电阻的话,在忽略掉一些不重要参数后,以反相器为例,在考虑到输入连线的情况下,其对应的CMOS原理电路可近似看成如下所示:

可以看出,该反相器的输入端此时就相当于一个RC电路,而其主要功能是由一个PMOS和一个NMOS串联而成,下面,便以此电路为例,简要介绍温度、电压对延迟的影响。

温度对延迟的影响

简单来说,温度越高,分子的热运动就会越剧烈,从而更容易阻碍电子在导体、半导体内部的运动,而其最显著的影响就是使得电阻变大。对应到上一小节中的反相器电路,最显著的就是Rg变大,从而RgCg变大。那么,在假设Vdd此时保持不变的前提下,进行分析如下:
让我们先来分析一下温度增加前后,以Uin从逻辑0翻转到逻辑1开始,到Uout从逻辑1变为逻辑0结束的时间长度变化。首先,Uout从逻辑1变为逻辑0的响应速度,主要取决于电路下方NMOS导通的快慢,而NMOS导通的条件是Ug≥V_TN。由于温度升高后,RgCg变大,从而Ug从0V增加到V_TN所需的时间变长,因此也会最终导致Uout经过较长时间才能变为逻辑0。
采用类似的分析思路,对Uin从逻辑1翻转到逻辑0开始,到Uout从逻辑0变为逻辑1结束的时间长度变化进行分析。首先,Uout从逻辑0变为逻辑1的响应速度,主要取决于电路上方PMOS导通的快慢,而PMOS的导通条件是Ug≤〖Vdd-V〗_TP。由于温度升高后,RgCg变大,从而Ug从Vdd减少到〖Vdd-V〗_TP所需的时间变长,因此也会最终导致Uout经过较长时间才能变为逻辑1。
经过以上粗略的分析,可以推出一个结论,温度越高各类延迟也就越大(事实上是随着温度的升高,延迟至少不会减少)。因此,我们要尽可能的抑制FPGA芯片在工作时候的温度升高,最显著的手段就是为FPGA芯片增加散热片。

电压对延迟的影响

仍以【基本RC电路的特性】小节中的反相器电路为例,来简单分析一下电压的升高对延迟的影响,此时,假设温度一直保持不变,从而Rg不变,RgCg不变,分析如下:
让我们先来分析一下Vdd增加前后,以Uin从逻辑0翻转到逻辑1开始,到Uout从逻辑1变为逻辑0结束的时间长度变化。首先,Uout从逻辑1变为逻辑0的响应速度,主要取决于电路下方NMOS导通的快慢,而NMOS导通的条件是Ug≥V_TN。由于Vdd升高后,对电容Cg充电的电流也等比变大,从而Ug从0V增加到V_TN所需的时间变短,因此也会最终导致Uout经过较短的时间就能变为逻辑0。
采用类似的分析思路,对Uin从逻辑1翻转到逻辑0开始,到Uout从逻辑0变为逻辑1结束的时间长度变化进行分析。首先,Uout从逻辑0变为逻辑1的响应速度,主要取决于电路上方PMOS导通的快慢,而PMOS的导通条件是Ug≤〖Vdd-V〗_TP。无论Vdd为何值,电容Cg的放电量都只需达到CgV_TP即可保证PMOS导通,由于Vdd升高后会导致Ug升高,故电容的放电电流也会等比增加,所以Ug从Vdd减少到〖Vdd-V〗_TP所需的时间变短,因此也会最终导致Uout经过较短时间就能变为逻辑1。
经过以上粗略的分析,可以推出一个结论,电压越高各类延迟会变得越小(事实上是随着电压的升高,延迟至少不会增加)。不过,我们并不推荐让Vdd取到允许范围内的最大值,因为电压越高,功耗越大,从而也会引起温度的升高,并且电压太高也会让器件承担过重,减少器件的寿命,所以电压方面通常就是按照手册上推荐的供电取值即可。

三种工况

基于【温度与电压】章节中的讨论,针对FPGA的时序分析通常会针对三种不同的温度、电压组合情况来展开,而这三种不同的组合情况又称为时序分析时的三种工况,即——最大工况、最小工况和典型工况。
其中,最大工况是温度取允许范围内的最大值、电压取允许范围内的最小值,编译器以此条件为依据,给出布局布线后的各个门延迟和线延迟参数,供时序分析工具进行分析。由于此时为延迟最大的极限情况,故最大工况主要关注FPGA设计在实现时,各个寄存器的建立时间是否满足极限要求,从而可以确定出各个时钟信号所能够允许的最大工作频率。
最小工况的情况则是温度取允许范围内的最小值、电压取允许范围内的最大值。由于此时为延迟最小的极限情况,故最小工况主要是关注各个寄存器的保持时间是否满足极限要求。
而典型工况的情况则是温度取常温(通常为25摄氏度)、电压取手册推荐值。此时对建立和保持时间的要求都比较适中,是较为常见的工作情况,主要用于分析普通情况下寄存器是否能够正常工作。

时钟信号的偏差描述

一个理想的时钟应该具有一个稳定的周期T(稳定的频率f),但是,现实中的时钟信号都不可能是十分理想的,它总存在着或多或少的偏差,而这些偏差也对时序分析有着非常重要的影响。因此,本章节我们就来简单了解一下几个常见的跟时钟信号偏差相关的概念。

时钟精度

如果我们需要一个频率为f0的时钟信号,可是实际中电路给出的是一个频率为f1的时钟信号,那么∆f=|f0 -f1|,就是理想和实际的误差,而∆f与f0的比值,则可以用来表示时钟信号的精确程度。

时钟漂移

如果我们需要一个频率为f0的时钟信号,但实际中电路给出的是一个频率围绕f0不断变化的时钟信号,例如,fl < f0 < fh,实际电路所给出的时钟信号频率总是在f1与f2之间过渡变化。这种时钟信号频率的长期可观测变化就叫做时钟漂移。

jitter

jitter是时钟抖动的意思,它指的是相比时钟漂移更短期的时钟抖动。如果我们的时序逻辑是由时钟信号的上升沿驱动的,那么我们所关注的jitter就是针对上升沿来说的,如下图所示:

可见,jitter描述了时钟信号有效边沿到来的一种周期内不确定性,即,如果时钟信号的周期为T,0时刻对应第一个上升沿,那么当时钟信号非常理想的时候,其上升沿应该依次出现在T、2T、3T、……、NT、……时刻。可是,由于电路各部分器件的热噪声、晶振本身的抖动等等原因,现实中时钟上升沿的到来时刻往往会和整数倍T时刻有一定偏差,但是只要第N+1个上升沿总是会在NT时刻的附近到来,并且其与NT时刻的偏差总是存在着一定随机性,那么这种偏差就叫时钟的jitter。

skew

skew是时钟歪斜,也叫时钟脉冲相位差。它指的是由于时钟信号到达各个寄存器的路径不同,因此对于同一个时钟有效边沿,有的寄存器处到来的早,而有的寄存器处到来的晚,这样一来,同一个时钟信号到达各个寄存器的时间便不一致。那么,这种时间上的偏差就叫做clock skew。

slew rate

slew rate,简写为SR,是电压转换速率的意思,简称压摆率,其常用单位有V/s,V/ms,V/us和V/ns四种。可见,压摆率越大,时钟信号完成0、1转换的速度也就越快,转换斜率也就越大。下图形象的描述了低压摆率与高压摆率的时钟信号区别:

显然,我们更希望能够得到压摆率更高的时钟信号,不过压摆率越高,时钟信号的频谱也就越宽,受限于实际的传输介质,高频一些的时钟信号往往都程现出正弦波形的特性。

FPGA之道(75)静态时序分析(一)基本概念介绍相关推荐

  1. FPGA经验谈系列文章——静态时序分析(二)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 FPGA经验谈系列文章--静态时序分析(二) 四种时序路径 时序路径段 接上一篇,上一篇是一个ALTERA的培训PPT,这一篇是有一个 ...

  2. FPGA之道(52)状态机的概念

    文章目录 前言 状态机的概念 状态机简介 状态机的组成六要素 状态集合 初态 终态 输入符号集 输出符号集 状态转移函数 状态机的工作四要素 现态 输入 输出 次态 前言 本文摘选自<FPGA之 ...

  3. FPGA之道(47)时钟及时钟域

    文章目录 前言 时钟及时钟域 时钟,时序逻辑的心跳 时钟信号基本特征 时钟信号基本特征参数介绍 如何区分时钟和数据 时钟信号的分类 按来源分 外部时钟 再生时钟 门控时钟 行波时钟 按波形分 连续时钟 ...

  4. FPGA之道(81)静态时序分析(七)根据时序报告修改设计(基于ISE的UCF文件语法)

    文章目录 前言 根据时序报告修改设计 时序分析报告示例 待分析设计 时序约束文件 时序报告简介 报告综述 内部时钟报告 输入接口报告 输出接口报告 输出数据延迟报告 输出时钟延迟报告 同步输出综合报告 ...

  5. FPGA之道(80)静态时序分析(六)常用时序约束介绍(基于ISE的UCF文件语法)

    文章目录 前言 常用时序约束介绍 时序环境约束 分组时序约束 TNM TNM_NET TIMEGRP 常用时序约束 周期约束 输入时钟周期约束 内部时钟周期约束 关联时钟周期约束 差分时钟周期约束 输 ...

  6. FPGA之道(79)静态时序分析(五)外部接口的相关时序分析

    文章目录 前言 外部接口相关时序分析 功能仿真对接口分析的帮助 纯输入接口 纯时钟输入接口 纯同步输入接口 纯异步输入接口 同步输入异步采集 纯输出接口 纯时钟输出接口 纯同步输出接口 纯异步输出接口 ...

  7. FPGA之道(78)静态时序分析(四)内部时钟相关时序分析

    文章目录 前言 内部时钟相关时序分析 单时钟域时序分析 多时钟域时序分析 同源时钟的时序分析 PLL.DCM的时序分析 相关时钟的时序分析 数据用作时钟的时序分析 异步逻辑时序分析 多时钟驱动同一时钟 ...

  8. FPGA之道(77)静态时序分析(三)同步时序逻辑的分析原理

    文章目录 前言 同步时序逻辑的分析原理 逻辑锥的概念 逻辑锥的划分 逻辑锥的求解 建立时间求解原理 保持时间求解原理 一般逻辑锥的求解 一般建立时间求解 一般保持时间求解 前言 本文来自于<FP ...

  9. FPGA之道(76)静态时序分析(二)一道时序分析的例题

    文章目录 前言 一道时序分析的例题 解答一:能否正确工作分析 解答二:最大时钟速率分析 延伸二:最小时钟速率? 解答三:保持时间不足情形分析 前言 本文来自于<FPGA 之道>,在正式讲解 ...

最新文章

  1. SQL 语句中 left join 后用 on 还是 where,区别大了!
  2. nacative mysql_MySQL索引优化
  3. 【基环树DP】[NOI2012]迷失游乐园
  4. 区分主机 cpu 计算机及计算机系统,小学计算机教案(二)
  5. 如何给你的为知笔记添加一个漂亮的导航目录
  6. 12 款 Linux 终端推荐
  7. Android 编译环境的依赖库安装
  8. QuickStart系列:docker部署之MariaDB
  9. Oracle SQL Developer 添加SQLServer 和Sybase 连接 .
  10. sqlalchemy limit_SQLAlchemy 数据库方言(dialect)是什么?
  11. 从Unity3D编译器升级聊起Mono
  12. linux安装常用命令工具包wget,cmake等
  13. 重新梳理下js中的深拷贝和浅拷贝
  14. 多项目Node版本控制
  15. python的基础网络编程是下列_python基础 - 网络编程
  16. js实现跟浏览器 ctrl+f 一样的效果
  17. 企业微信通讯录可以导出吗?如何导出?
  18. git cherry-pick的使用
  19. php 孤儿进程组,孤儿进程组(Orphaned Process Groups) APUE2学习笔记
  20. Icpc 焦作站现场赛 E 题解

热门文章

  1. Ubuntu系统(一)-安装篇
  2. 小谈多生成树协议--MSTP
  3. Android数据存储——2.文件存储_B_资源文件
  4. 网络营销之微微博营销
  5. __init__在python中的用法知乎_python使用selenium爬虫知乎的方法示例
  6. 2003系统服务器,雨林木风 windows server 2003企业版服务器系统
  7. 一加7充电_夜话丨一加7超级快充明天见
  8. mysql导入数据权限_mysql5.7导入数据的权限问题
  9. Python中读取ZIP文件
  10. 2020秋季学期教学委员会第一次全体会议