FPGA时序分析与约束(1)——组合电路时序

news2024/9/22 1:09:36

写在最前面:

        关于时序分析和约束的学习似乎是学习FPGA的一道分水岭,似乎只有理解了时序约束才能算是真正入门了FPGA,对于FPGA从业者或者未来想要从事FPGA开发的工程师来说,时序约束可以说是一道躲不过去的坎,所以从这篇文章开始,我们来正式进行FPGA时序分析与约束的学习。

        我们在设计FPGA的时候往往是进行多方面性能的权衡来实现设计的最优化,在可实现的情况下,我们一般会期望处理速率越快越好,但是与理论不同,在实际的硬件设计的时候,一个逻辑上正确的设计仍然会因为现实世界中的实现问题而失败!

一、组合电路的时序

1、组合电路的真实时延

        在讨论数字电路层面的时候,我们采用的是一种抽象化模型的方式,这里我们以一个反相器为例:

        上图就是一个反相器抽象模型的例子,可以看到,当输入信号A发生变化时,输出信号Y立即发生变化,没有任何时延,这是我们抽象化模型的理想情况。

        但是在真实的硬件电路中,输出会相对于输入有一个时间延迟(晶体管需要变化的时间),如下图:

        根据数据测定,一个真实的反相器的延迟情况如下:

        这样的一个电路延迟根本上来自于:

        (1)在一个电路中的电容和电阻

        (2)光速是有限的(在纳秒尺度上不是那么快,也就不能被认定为无穷大)

        任何影响这些数量的因素都可能改变延迟:

        (1)上升rising(即0 -> 1)与下降falling(即1 -> 0)的输入

        (2)不同的输入有不同的延迟

        (3)环境(如温度等)

        (4)电路老化问题

        我们从输入到输出都有一系列可能的延迟 。

2、从输入到输出Y的时延

        这里首先我们来设定两个基本概念:

Contamination delay (tcd) : 直到输出Y开始变化的时延
Propagation delay     (tpd) : 直到输出Y结束变化的时延
        对于一个组合电路来说,tcd作为输出开始变化的时延,其含义就是输入传播到输出的最短路径( Shortest Path),相应的,tpd就是输入传播到输出的最长路径( Longest Path)。而我们又把最长路径称之为关键路径( Critical Path)。
        我们举个例子来帮助大家进行理解(我们考虑不同门之间的时延是基本一致的):
        但是在我们实际设计的复杂电路中,显然是不可能这么容易就最短/最长路径的计算:
(1)一方面是并非所有的输入转换都会影响输出;
(2)另一方面我们可能从一个输入到另一个输出有多个不同的路径。
        在现实中我们的元器件也不是完全一样的,首先制造上就不可能保证完全的一致,然后又受限于多方面因素(如环境,元器件老化等)的影响,我们显然不可能要求每个元件参数都与其产品说明标准值一模一样。只能给定一个大致的标准范围。
        因此,对于设计者来说,应该假设“最坏情况”条件来完成自己的世界,然后运行许多统计模拟来平衡产量/性能。

3、组合逻辑时序总结

        真实的组合逻辑电路与我们抽象的数字电路是不一样的,真实的电路在输出相对于输入会有一定的延迟,我们规定了:

  • Contamination delay (tcd) : 直到输出Y开始变化的时延,最小的可能时延
  • Propagation delay     (tpd) : 直到输出Y结束变化的时延,最大的可能时延
        对于设计者来说,应该假设“最坏情况”条件,并运行许多统计模拟来平衡产量/性能。

二、输出毛刺(Output Glitches)

        在考虑到输出相对于输入存在时延的情况,那我们就不得不注意毛刺的发生,可以说毛刺对于组合电路的设计来说是一个严峻的挑战。

        毛刺Glitches : 一个输入的改变可能会引起多个输出的改变

        我们以上图为例, B处数据从1变到0,n2首先发生改变,这个结果通过最快路径先被传递到了输出Y,导致输出变化,等到n1变化的结果通过慢路径被传递到输出Y,结果再次变化,这里就形成了一个毛刺,最终输出Y会呈现一个短暂的0状态。

        我们在数电中学过通过卡诺图的方式来优化电路,消除毛刺,这里不做展开。在这里我们考虑以下问题:我们是不是每次都必须消除毛刺?

        考虑这个问题的原因在于消除毛刺意味着更大的资源和功率消耗,同时也增加了设计者的设计难度,无论有无小故障,该电路最终都能保证收敛到正确的值。

        答案是否定的,我们并不是每一次都需要完全消除毛刺的存在。

        (1)如果说我们只关心长期的稳态输出,我们可以安全地忽略毛刺;

        (2)应该由设计者来决定毛刺在他们自己的应用程序中是否重要。

三、总结

        本文中我们介绍了组合电路的时序问题,定义了tcd和tpd两个重要参数,明确了如何寻找一个组合逻辑电路的最短路径Shortest Path和最长路径Longest Path(更常规的叫法是关键路径Critical Path),然后我们分析了组合逻辑毛刺产生的原因及影响,我们可以通过卡诺图的相关方式来优化电路,消除毛刺,但是这取决于设计者是否需要消除毛刺。

        本文作为时序分析部分的第一篇文章,带领大家初步认识了时序在电路中的存在形式和潜在影响,接下来我们将针对时序逻辑电路的时序问题就行研究。

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

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

相关文章

一、安装GoLang环境和开发工具

一、安装GoLang环境 GoLang中国镜像站 下载后对应的环境包以后,一路下一步就好了,安装路径的话,尽量就安装到默认的文件目录下。 二、配置Go的环境变量 右击此电脑–>属性–>高级系统设置–>环境变量,打开环境变量设置…

微服务之架构演变

随着互联网的发展,网站应用规模不断扩大,网站架构随之不断演变,演变历史大致分为单体应用架构-垂直应用架构-分布式架构-SOA架构-微服务架构-云原生架构 架构演变 单体应用架构 以前网站流量小,只需要一个应用就可以把所有功能…

用python开发一个炸金花小游戏,注意别玩上瘾了~~(附完整源码)

炸(诈)金花又叫三张牌,是在全国广泛流传的一种民间多人纸牌游戏。游戏使用一副除去大小王的扑克牌,共 4 个花色 52 张牌,各个玩家从中抽取 3 张牌,比较大小。各种牌型的大小顺序如下(按照全排列…

解决uniapp手机真机调试时找不到手机问题

1、检查 USB 调试是否开启 2、检查是否有选择 文件 传输 选项 3、如果上述都做了还找不到,可以看看开发者选项中的【USB设置】,把模式改为 MIDI 模式

eclipse/STS(Spring Tool Suite)安装CDT环境(C/C++)

在线安装 help -> eclipse marketplace 可以发现,我所使用eclipse给我推荐安装的CDT是10.5版本 离线安装 下载离线安装包 下载地址:https://github.com/eclipse-cdt/cdt/blob/main/Downloads.md 可以看到利息安装包主要有如下四大类,…

iPhone 14四款机型电池容量详细参数揭秘

苹果推出的iPhone 14系列与2021系列的设计和外形尺寸相同(仅缩小了几分之一毫米),所以这并不奇怪,但电池容量也大致相同。 虽然可能不足以对电池寿命产生可衡量的影响,但也存在微小的差异。不同的是,现在有…

循环购:茶叶市场的新机遇和挑战

茶叶是中国的国饮,也是一种具有悠久历史和文化内涵的饮品。茶叶市场的发展,不仅需要保持传统的品质和风味,也需要与时俱进,创新营销模式,满足消费者的多样化需求。在互联网和新零售的浪潮下,一种新的营销模…

来看看入门级别的室内设计创意是怎么样构成的

在这个世界上,信息源源不断地输送给我们,数字通信成为常态,对话的艺术正在逐渐消失;衡量一个人社交成功与否的最佳标准变为点赞数、粉丝数和高参与率;Ai人工智能引发了更快节奏的工作流程,工作要求越来越高…

WEBGL(4):动态绘制点并根据详细自定义颜色

1 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, …

用友:繁荣开发者生态之树,结商业创新之果

《论诗》有云&#xff1a;满眼生机转化钧&#xff0c;天工人巧日争新。人类借助丰富的工具、先进的方法论&#xff0c;不断创新&#xff0c;推动时代“苟日新、日日新、又日新”。 在数智化发展的今天&#xff0c;创新逐步进入数字化、智能化技术双驱动的商业创新阶段。进程中&…

基于跳蛛算法优化的BP神经网络(预测应用) - 附代码

基于跳蛛算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于跳蛛算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.跳蛛优化BP神经网络2.1 BP神经网络参数设置2.2 跳蛛算法应用 4.测试结果&#xff1a;5.Matlab代码 摘要…

uniapp中UView中 u-form表单在v-for循环下如何进行表单校验

1、数据data格式 注&#xff1a;rule绑定的tableFromRule中要和表单tableFrom下面放置一个同名数组&#xff0c;确保u-form能找到 tableFrom: {tableData: [//数据详情列表]},tableFromRule: {//校验tableData: [//数据详情列表]},formRules:{localation:[{required: true,mes…

团队多人共用一个WhatsApp是如何做到的?

WhatsApp是如今许多跨境企业用来跟客户进行沟通的重要聊天工具&#xff0c;但是在使用WhatsApp时有一个问题是比较突出的&#xff0c;企业一般拥有的WhatsApp账户是有限的&#xff0c;当很多客户同时上门咨询的话&#xff0c;客服就很难应对。但是如果能够实现团队多人共用一个…

数据结构与算法基础-学习-31-交换排序之冒泡排序、快速排序

排序的其他相关知识点和源码分享可以参考之前的博客&#xff1a; 《数据结构与算法基础-学习-30-插入排序之直接插入排序、二分插入排序、希尔排序》 一、交换排序基本思想 两两比较&#xff0c;如果发生逆序则交换位置&#xff0c;直到所有数据记录都排好序为止。 二、冒…

Leetcode130. 被围绕的区域

Every day a Leetcode 题目来源&#xff1a;130. 被围绕的区域 本题给定的矩阵中有三种元素&#xff1a; 字母 X&#xff1b;被字母 X 包围的字母 O&#xff1b;没有被字母 X 包围的字母 O。 本题要求将所有被字母 X 包围的字母 O都变为字母 X &#xff0c;但很难判断哪些 …

文献阅读:Semantic Communications for Speech Signals

目录 论文简介动机&#xff1a;为什么作者想要解决这个问题&#xff1f;贡献&#xff1a;作者在这篇论文中完成了什么工作(创新点)&#xff1f;规划&#xff1a;他们如何完成工作&#xff1f;自己的看法(作者如何得到的创新思路) 论文简介 作者 Zhenzi Weng Zhijin Qin Geoffre…

网工知识角|掌握MPLS协议从这五个方面入手

今天IELAB李强伟老师(CCNA&HCIA DATACOM/ CCNP EI/ HCIP DATACOM课程讲师)给大家普及一下【MPLS协议的基本介绍】。 ​ 一、什么是MPLS VPN呢&#xff1f; MPLS VPN 是一种虚拟专用网络&#xff0c;它通过 MPLS 技术将不同位置的用户连接在一起&#xff0c;实现安全、高效…

Seata1.5.2+Nacos分布式事务环境搭建详解

文章目录 一、下载seata server二、配置application.yml三、初始Mysql数据库四、导入初始配置到nacos五、启动测试 本文以seata-server-1.5.2&#xff0c;以配置中心、注册中心使用Nacos&#xff0c;store.modedb&#xff08;mysql&#xff09;为例进行操作。 Seata简介及入门参…

掌握这个操作,数据中心才算入门!

在现代的信息技术&#xff08;IT&#xff09;领域&#xff0c;不间断电源&#xff08;UPS&#xff09;扮演着至关重要的角色&#xff0c;它们是保障数据中心、服务器以及其他关键设备持续高效运行的关键组件之一。 UPS系统的任务是在电力故障、电压波动或其他电力问题发生时&am…

如何判断自己的qt版本呢?

如何判断自己的qt版本呢? 前情提要很简单,按照如下图所示,即可查看当前打开的qtCreator的版本如何打开5.15.2版本的qtCreator呢?安装教程 前情提要 我的电脑已经安装了qt5.14.1,然后我又安装了qt5.15.2,我想尝试一下同一台电脑能否适应两个版本的qt? 当我安装完成qt5.15.2后…