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

写在最前面:

        关于时序分析和约束的学习似乎是学习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.mzph.cn/news/62431.shtml

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

相关文章

CSS魔术师Houdini,用浏览器引擎实现高级CSS效果

开门见山,直接上货 🔍 CSS Houdini是什么? “Houdini”一词引用自“Harry Houdini”,他是一位20世纪的著名魔术师,亦被称为史上最伟大的魔术师、逃脱术师及特级表演者。 我们都知道,浏览器在渲染网页显示样…

异或和大小比较类问题——抓住最高位:CF1863F

https://codeforces.com/contest/1863/problem/F 因为有等于,所以考虑异或和为0的合法区间,它可以随意切现在考虑切开后左边大于右边,可以发现左右边最高位可以互相抵消,似乎不太可做?此时可以换个考虑,考…

抖音企业号无需API开发连接AI图像生成,打造AI智能绘图助手

1. 抖音用户使用场景: 作为抖音企业号的运营人员,我们一直在寻找新的方式来增强我们与用户之间的互动。最近,我们发现了AI绘图技术可以根据用户需求和指令自动创建图片,无需人为干预,这为我们节省了人力和时间。因此&a…

node 如何下载任意版本

开门见山啦 第一步:打开node官网 Node.js 第二步:点击下载 进入下面的页面,然后往下滑,点击 All download options 查看以往所有的版本号: 这样就可以按自己的需求下载对应的node版本啦 或者 : 最简单…

Elasticsearch:为什么从 Elasticsearch 7.0.0 及更高版本中删除了映射类型 type?

在 Elasticsearch 7.0.0 或更高版本中创建的索引不再接受 _default_ 映射。 在 6.x 中创建的索引将继续在 Elasticsearch 6.x 中像以前一样运行。 7.0 中的 API 中已弃用类型 type,并对索引创建、放置映射、获取映射、放置模板、获取模板和获取字段映射 API 进行了重…

c#事件(event)

概述: C#中的事件是一种特殊的委托,它用于实现观察者模式,允许对象在特定事件发生时通知其他对象。 以下是使用C#事件的示例: 首先,定义一个包含事件的类: public class EventPublisher {// 声明一个事…

海格里斯HEGERLS高密度料箱式四向穿梭车存储系统有哪些显著优势?

近些年仓储货架向着自动化、智能化发展,因此市面上出现很多不同类型的智能自动化仓储货架。其中,最受企业青睐的便是四向穿梭车货架。四向穿梭车货架根据其载重不同可分为托盘式和料箱式两大类。这两种不同类型的四向穿梭车货架在结构形式和控制方式上基…

git 提交错误,回滚到某一个版本

git log 查看版本号 commit 后面跟的就是版本号git reset --hard 版本号 (就可以回滚到你要去的版本)git push -f (因为本地回滚了,所以和远程会差几个版本。所以这时候只有强制推送,覆盖远程才可以)

Tauri打包windows应用配置中文界面

使用 Tauri Rust 开发桌面应用,在 windows 系统上,打包后安装包名称后缀、安装界面、相关说明默认都是英文的。如果要默认显示为中文,则需要在 tauri.conf.json 中配置相应参数。 前言 默认情况下,在 windows 系统打完的 mis 包…

一图胜千言!数据可视化多维讲解(Python)

数据聚合、汇总和可视化是支撑数据分析领域的三大支柱。长久以来,数据可视化都是一个强有力的工具,被业界广泛使用,却受限于 2 维。在本文中,作者将探索一些有效的多维数据可视化策略(范围从 1 维到 6 维)。…

手游排行前十名,手游排行榜2023前十名

今天为大家带来手游排行前十名,如今流行的手机游戏专注于在画面和游戏性方面为玩家提供更逼真、更流畅的游戏体验。在画面方面,手游开发商经常使用先进的游戏引擎和技术来提高游戏的图形质量和细节,以及增加游戏的动态照明和物理效果&#xf…

【论文阅读】自动驾驶中车道检测系统的物理后门攻击

文章目录 Abstract1.Introduction2.Background2.1.DNN-based Lane Detection2.2.Backdoor Attacks2.3.Threat Model2.4.Image Scaling 4.Evaluation4.1.Poison-Annotation Attack4.2.Clean-Annotation Attack4.3.Real-world Evaluation4.4.Bypassing Existing Defenses 论文题目…

C语言每日一练----Day(12)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:最大连续1的个数 完全数计算 💓博主csdn个人主页&#xff1…

Dolphin for Mac(Wii游戏模拟器)配置指南

Wii模拟器Dolphin Mac是款适合Mac电脑中的游戏玩家们使用的模拟器工具。Wii模拟器Dolphin Mac官方版支持直接运行游戏镜像文件,玩家可以将游戏ISO拷贝到某一个文件夹中统一进行管理。Wii模拟器Dolphin Mac除了键盘和鼠标外,还支持配合原版的Wii遥控器操作…

origin导出pdf曲线超出边框

软件版本 软件版本Word2021Origin2021Adobe Acrobat Pro2023 问题描述 Origin导出的emf格式矢量图片,插入到Word中,显示正常,但是在使用Word导出→创建Adobe PDF→创建Adobe PDF导出PDF文件后,图片曲线就会超出边框&#xff0c…

面试题——网络IO模型

一、socket socket是在应用层和传输层中间的抽象层,它把传输层(TCP/UDP)的复杂操作抽象成一些简单的接口,供应用层调用实现进程在网络中的通信。Socket起源于UNIX,在Unix一切皆文件的思想下,进程间通信就被…

[Mac软件]Adobe After Effects 2023 v23.5 中文苹果电脑版(支持M1)

After Effects是动画图形和视觉效果的行业标准。由运动设计师、平面设计师和视频编辑用于创建复杂的动画图形和视觉上吸引人的视频。 创建动画图形 使用预设样式为文本和图形添加动画效果,或逐帧调整它们。编辑、添加深度、制作动画或转换为可编辑的路径&#xff…

HCIP---BGP协议

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 根据AS自治系统可以将动态路由协议划分为IGP和EGP协议。IGP协议是应用在AS内部&#…

四旋翼飞行器基本模型(MatlabSimulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【Tkinter界面:练习-01】窗口-部件-布局

一、说明 python在用户界面开发中,其中有QT5,和Tkinter;对于实际项目,界面需要高大上,因此用QT5,对于开发人员的演示程序,或简单程序中,不建议QT5;用Tkinter已经足够。本…