FPGA知识汇集-FPGA时序基础理论

news2024/9/27 12:14:41

对于系统设计工程师来说,时序问题在设计中是至关重要的,尤其是随着时钟频率的提高,留给数据传输的有效读写窗口越来越小,要想在很短的时间限制里,让数据信号从驱动端完整地传送到接收端,就必须进行精确的时序计算和分析。同时,时序和信号完整性也是密不可分的,良好的信号质量是确保稳定的时序的关键,由于反射,串扰造成的信号质量问题都很可能带来时序的偏移和紊乱。因此,对于一个信号完整性工程师来说,如果不懂得系统时序的理论,那肯定是不称职的。本章我们就普通时序(共同时钟)和源同步系统时序等方面对系统时序的基础知识作一些简单的介绍。

普通时序系统(共同时钟系统)

所谓普通时序系统就是指驱动端和接收端的同步时钟信号都是由一个系统时钟发生器提供。下图就是一个典型的普通时钟系统的示意图,表示的是计算机系统的前端总线的时序结构,即处理器(CPU)和芯片组(Chipset)之间的连接。

在这个例子中,驱动端(处理器)向接收端(芯片组)传送数据,我们可以将整个数据传送的过程考虑为三个步骤:

1.核心处理器提供数据;

2.在第一个系统时钟的上升沿到达时,处理器将数据Dp锁存至Qp输出;

3.Qp沿传输线传送到接收端触发器的Dc,并在第二个时钟上升沿到达时,将数据传送到芯片组内部。一般来说,标准普通时钟系统的时钟信号到各个模块是同步的,即图中的Tflt clka和Tflt clkb延时相同。通过分析不难看出,整个数据从发送到接收的过程需要经历连续的两个时钟沿,也就是说,如果要使系统能正常工作,就必须在一个时钟周期内让信号从发送端传输到接收端。如果信号的传输延迟大于一个时钟周期,那么当接收端的第二个时钟沿触发时,就会造成数据的错误读取,因为正确的数据还在传输的过程中,这就是建立时间不足带来的时序问题。

    目前普通时序系统的频率无法得到进一步提升的原因就在于此,频率越高,时钟周期越短,允许在传输线上的延时也就越小,200-300MHz已经几乎成为普通时序系统的频率极限。那么,是不是传输延时保持越小就越好呢?当然也不是的,因为它还必须要满足一定的保持时间。在接下来几节里,我们就建立和保持时间来分析一下时序设计需要考虑的一些问题以及正确的系统时序所必须满足的条件。

1

时序参数的确定

对于时序问题的分析,我们首先要清楚地理解相关的一些时序参数的具体含义,比如Tco,缓冲延时,传播延迟,最大/小飞行时间,建立时间,保持时间,建立时间裕量,保持时间裕量,时钟抖动,时钟偏移等等,如果对这些参数的概念理解不深刻,就很容易造成时序设计上的失误。

首先要阐明的是Tco和缓冲延时(buffer delay)的区别。从定义上来说,Tco是指时钟触发开始到有效数据输出的器件内部所有延时的总和;而缓冲延时是指信号经过缓冲器达到有效的电压输出所需要的时间。可以看出,Tco除了包含缓冲延时,还包括逻辑延时。通常,确定Tco的方法是在缓冲输出的末端直接相连一个测量负载,最常见的是50欧姆的电阻或者30pF的电容,然后测量负载上的信号电压达到一定电平的时间,这个电平称为测量电压(Vms),一般是信号高电平的一半。如Tco和缓冲延时的确定如下图所示:

信号从缓冲器出来之后,就要经过传输线到接收终端,信号在传输线上的传输的延时我们称为传播延迟(propagationdelay),它只和信号的传播速度和线长有关。然而我们在大多数时序设计里面,最关键的却不是传播延迟这个参数,而是飞行时间(Flight Time)参数,包括最大飞行时间(Max Flight Time)和最小飞行时间(Min Flight Time)。飞行时间包含了传播延迟和信号上升沿变化这两部分因素,从下图中可以很容易看出两者的区别。

在较轻的负载(如单负载)情况下,驱动端的上升沿几乎和接收端的信号的上升沿平行,所以这时候平均飞行时间和传播延迟相差不大;但如果在重负载(如多负载)的情况下,接收信号的上升沿明显变缓,这时候平均飞行时间就会远远大于信号的传播延迟。这里说的平均飞行时间是指Buffer波形的Vms到接收端波形Vms之间的延时,这个参数只能用于时序的估算,准确的时序分析一定要通过仿真测量最大/最小飞行时间来计算。

上面只是对信号上升沿的分析,对于下降沿来说,同样存在着最大/最小飞行时间的参数,如下图。在时序计算时我们实际取的最大飞行时间是在上升沿和下降沿中取最长的那个飞行时间,而最小飞行时间则是取上升和下降沿中最短的那个飞行时间。

也有些时候,人们对信号的最大/最小飞行时间还有其它称谓,比如在Cadence软件中,就将最大飞行时间称为最终稳定延时(Final Settle Delay),而将最小飞行时间称为最早开关延时

(First SwitchDelay),如下图。

信号经过传输线到达接收端之后,就牵涉到建立时间和保持时间这两个时序参数,它们是接收器本身的特性,表征了时钟边沿触发时数据需要在锁存器的输入端持续的时间。通俗地说,时钟信号来的时候,要求数据必须已经存在一段时间,这就是器件需要的建立时间(Setup Time);而时钟边沿触发之后,数据还必须要继续保持一段时间,以便能稳定的读取,这就是器件需要的保持时间(Hold Time)。如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。见下图,其中还考虑了时钟误差的因素。

每个器件的建立和保持时间参数,一般都可以在相应的DataSheet查到,对于设计者来说最大的目的是提高时序的裕量,这样即使信号完整性上出现一点问题,或者外界环境发生一定的变化,系统仍然能正常工作,这就是一个设计优良的系统应该体现出的超强的稳定性。

系统时序设计中对时钟信号的要求是非常严格的,因为我们所有的时序计算都是以恒定的时钟信号为基准。但实际中时钟信号往往不可能总是那么完美,会出现抖动(Jitter)和偏移(Skew)问题。所谓抖动,就是指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响,如下图。除此之外,还有一种由于周期内信号的占空比发生变化而引起的抖动,称之为半周期抖动。总的来说,jitter可以认为在时钟信号本身在传输过程中的一些偶然和不定的变化之总和。

时钟偏移(skew)是指两个相同的系统时钟之间的偏移。它表现的形式是多种多样的,既包含了时钟驱动器的多个输出之间的偏移,也包含了由于PCB走线误差造成的接收端和驱动端时钟信号之间的偏移,比如在下图中所示,CLKA和CLKB之间的差异,CLKC和CLKP之间的差异均为时钟偏移,这些偏移量在时序计算中需要全部考虑。

除了上面提到的这些概念,还有一点要注意的是,时刻不能忽略信号完整性对时序的影响,比如串扰会影响微带线传播延迟;反射会造成数据信号在逻辑门限附近波动,从而影响最大/最小飞行时间;时钟走线的干扰会造成一定的时钟偏移。有些误差或不确定因素是仿真中无法预见的,设计者只有通过周密的思考和实际经验的积累来逐步提高系统设计的水平。

更多有趣的话题请看链接:

FPGA知识汇集-FPGA项目开发包含那些任务?

FPGA知识汇集--FPGA结构(1)

FPGA的应用

FPGA知识汇集-在命令行模式下使用Xilinx工具

FPGA知识汇集-ISE的这些有用的工具您知道吗?

FPGA知识汇集-FPGA设计开发需要熟悉哪些EDA工具呢?

FPGA知识汇集-值得收藏的FPGA代码命名规范?

FPGA 知识汇集--Linux下ISE的环境变量设置

FPGA知识汇集-值得收藏的Verilog代码风格1

FPGA知识汇集-值得收藏的Verilog代码风格2

FPGA知识汇集-编写可综合代码(RTL)需要注意的规则总结

FPGA知识汇集-Verilog和VHDL的混合使用

FPGA知识汇集-关于Xilinx 工具报告

FPGA知识汇集-例化与推译

硬件仿真加速器与原型验证平台

      FPGA知识汇集-ASIC向FPGA的移植

      FPGA知识汇集-时钟系统的移植

      FPGA知识汇集-FPGA的低功耗设计方法总结

      FPGA知识汇集-了解FPGA比特流结构

      FPGA知识汇集-串行 RapidIO: 高性能嵌入式互连技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/129649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes:minikube操作总结

Kubernetes:minikube操作总结minikube statusminikube nodeminikube status 查询集群状态 $ minikube statusminikube node 新增节点 注意:minikube 仅仅是基于本地 standalone 部署一款简易 k8s 集群,因此添加节点,也仅仅是本…

【多尺度条形池化与通道注意力的图像语义分割】论文精讲

论文:论文链接 出处:中国图象图形学报 目录 1.摘要 2.网络结构 2. 1 改进的条形池化技术 2.2 二阶通道注意力机制 3.结果 1.摘要 目的 针对自然场景下图像语义分割易受物体自身形状多样性、距离和光照等因素影响的问题,本文提出 一种新的基于条形池…

windows搭建gitblit服务器

使用Gitblit搭建属于局域网的Git服务器,方便程序代码的联合开发及程序代码版本管理。 环境:1、Windows 64位操作系统。 2、jdk1.8.0(需要java环境,已安装请忽略) 3、Git-2.24.1.2-64-bit(git工具&#x…

linux系统编程:暂停函数pause

pause函数 该函数功能主要是暂停进程,它的返回值总是-1。 使用方式: (1)首先使用signal函数提前注册一个中断函数,该函数用于将函数指针和信号做一个绑定; (2)当程序进行执行pause&#xff0…

【Bp2Lua】深入理解蓝图

【Bp2Lua】深入理解蓝图 做 Bp2Lua 过程中的副产物,蓝图在连连看背后隐含的操作 有几点想说明的 蓝图会隐含一些操作,前端节点图是看不出来的,但是后端字节码会一览无余Bp2Lua 本质是 字节码 ToLua,其实 Bp2Lua 根本不关心也不…

策略模式(strategy pattern)

背景 一、一个具体实现范例的逐步重构 补血道具(药品):a) 补血丹:补充200点生命值;b) 大还丹:补充300点生命值;c) 守护丹:补充500点生命值将Fighter,F_Warrior,F_Mage 单独写在一个文件中。 Fighter.h …

一步一步学爬虫(4)数据存储之文本存储

一步一步学爬虫(4)数据存储之文本存储4.1 TXT纯文本文件存储4.1.1 本节目标4.1.2 基本实例4.1.3 打开方式4.1.4 简化写法4.1 TXT纯文本文件存储 将数据保存到 TXT 文本的操作非常简单,而且 TXT 文本几乎兼容任何平台,但是这有个缺…

Spark环境搭建(Hadoop YARN模式)

前言 按照前面环境部署中所学习的,如果我们想要一个稳定的生产Spark环境,那么最优的选择就是构建:HA StandAlone集 群。 不过在企业中, 服务器的资源总是紧张的,许多企业不管做什么业务,都基本上会有Hadoo…

AD软件绘制不规则焊盘的器件封装

网上有很多关于AD软件绘制不规则焊盘的帖子,搜了一些帖子看了一下,感觉不太对。严格意义上AD软件是不能绘制不规则的焊盘的,至少目前用的AD软件不支持。为什么这么说呢? 我提一个需求:假如我在PCB文件中需要随意的添加…

企业选择SOP作业指导书系统的目的和意义

SOP是将作业指导流程予以说明规范,让作业人员有一个标准的作业准则,以达到作业的标准一致性。也是一种管理模式,通过对过程的标准化操作,减少和预防差错和不良后果的发生。通过动作的解析、比较、分析,循环作业分析等输…

MIT6.830-2022-lab4实验思路详细讲解

目录前言一、实验概览Exercise 1:Granting LocksExercise 2:Lock LifetimeExercise 3:Implementing NO STEALExercise 4:TransactionsExercise 5:Deadlocks and Aborts总结 && Debug记录前言 到lab4事务,这一块应该是数据库中概念比较多&#x…

2022/12/30总结

今日学习了二叉树有关知识。 二叉树 二叉树通俗来讲就是一个有俩个指针的链表。他们大多长这个样子: 这里还有俩个概念了,二叉树分为完全二叉树和满二叉树 上面所说的是满二叉树,顾名思义就是每个父节点都相应的有俩个指针,通常…

基于springboot+Vue的宿舍管理系统前后端分离(程序+详细文档+数据库)

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…

前端devops——利用gitlab实现CI/CD自动化部署

目录 前言 一、前期准备 1、开启虚拟服务 2、下载并安装docker 二、开始部署 1、安装gitlab 2、修改默认账号登录密码 3、修改项目clone地址 三、Gitlab CI/CD 1、安装并运行gitlab-runner 2、执行runner 3、将项目注册到gitlab-runner 1、获取token 2、执行注册 …

ETL数据清洗

大多数据仓库的数据架构可以概括为: 数据源-->ODS(操作型数据存储)-->DW-->DM(data mart) ETL贯穿其各个环节。 ​一、数据抽取: 可以理解为是把源数据的数据抽取到ODS或者DW中。 1. 源数据类型: 关系型数据库,如Or…

多模态串讲(上)

多模态的学习在最近几年异常火爆,除了普通的多模态学习,比如视觉问答,图文检索等,其实之前讲的所有这种Language Guided Detection,或者Language Guided Segmentation,这些任务都是多模态的,还有最近火的文…

SpringCloud之负载均衡Ribbon

1.Ribbon是什么? •Ribbon是 Netflix 提供的一个基于HTTP和TCP的客户端负载均衡工具。 •Ribbon主要有两个功能: 1.简化远程调用 2.提供客户端的软件负载均衡算法 Ribbon客户端组件提供一系列完善的配置项,如连接超时,重试等…

ERA5数据不同下载方法

ERA5数据不同下载方法1 ERA5简介2 ERA5下载的三种方法2.1 方法1:GEE下载2.2 方法2:官方网站下载2.3 方法3:通过Python脚本下载(以Linux系统为例)总结参考1 ERA5简介 ERA5是ECMWF对全球气候的第五代大气再分析。再分析…

ArcGIS基础实验操作100例--实验17按条件计算属性字段值

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 基础编辑篇--实验17 按条件计算属性字段值 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff0…

工业远程I/O模块CANopen I/O模块 安装接线说明

1)外观尺寸 DIN35mm Rail标准导轨支架外观与尺寸: 2)面板说明 指示灯说明运行指示灯 绿色预留预留错误指示灯 红色CANopen地址设置开关,CANopen 通讯速率设置开关,当 0表示通信速率为10Kbps 4表示通信速率为250Kbps 1表…