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.rhkb.cn/news/115008.html

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

相关文章

【字节跳动青训营】后端笔记整理-4 | Go框架三件套之GORM的使用

**本人是第六届字节跳动青训营(后端组)的成员。本文由博主本人整理自该营的日常学习实践,首发于稀土掘金。 我的go开发环境: *本地IDE:GoLand 2023.1.2 *go:1.20.6 *MySQL:8.0 本文介绍Go框架三…

HTTP协议概述

HTTP 协议定义 HTTP协议,直译为超文本传输协议,是一种用于分布式、协作、超媒体的信息系统的应用协议。HTTP协议是万维网数据通信的基础。HTTP协议在客户端-服务器计算模型中充当请求-响应协议。客户端向服务器提交HTTP请求消息。服务器提供HTML文件和其…

前端将UTC时间格式转化为本地时间格式~~uniapp写法

UTC时间格式是什么 首先我们先简单的了解一下:UTC时间(协调世界时,Coordinated Universal Time)使用24小时制,以小时、分钟、秒和毫秒来表示时间 HH:mm:ss.SSSHH 表示小时,取值范围为00到23。mm 表示分钟…

【C++】map/multimap容器

1.map基本概念 2.map构造和赋值 #include <iostream> using namespace std;//map容器 构造和赋值 #include<map>//遍历输出map容器 void printMap(const map<int, int>& m) {for (map<int, int>::const_iterator it m.begin(); it ! m.end(); it)…

PHP多语言代入电商平台api接口采集拼多多根据ID获取商品详情原数据示例

拼多多商品详情原数据API接口的作用是获取拼多多电商平台上某一商品的详细信息&#xff0c;包括商品的标题、价格、库存、图片、描述、包邮信息、销量、评价、优惠券等数据。通过该API接口可以获取到商品的原始数据&#xff0c;用于分析、筛选和展示商品信息。 pinduoduo.item…

Python飞机大战小游戏

游戏规则&#xff1a;键盘上下左右键控制飞机移动 游戏展示图片&#xff1a; 源码&#xff1a; 第一个py命名为&#xff1a;plane_main.py import pygamefrom plane_sprites import *class PlaneGame(object):# """飞机大战主游戏"""def __in…

Python爬取京东商品评论

寻找数据真实接口 打开京东商品网址查看商品评价。我们点击评论翻页&#xff0c;发现网址未发生变化&#xff0c;说明该网页是动态网页。 API名称&#xff1a;item_review-获得JD商品评论 公共参数 获取API测试key&secret 名称类型必须描述keyString是调用key&#xff…

JVM下篇知识

第01章&#xff1a;概述篇 第02章&#xff1a;JVM监控及诊断工具-命令行篇 第03章&#xff1a;JVM监控及诊断工具-GUI篇 第04章&#xff1a;JVM运行时参数 第05章&#xff1a;分析GC日志

Weblogic漏洞(一)之 Weblogic基本介绍

Weblogic基本介绍 WebLogic是美国Oracle公司出品的一个application server&#xff0c;确切的说是一个基于JAVAEE架构的中间件&#xff0c;WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise…

linuxdeploy安装CentOS7搭建django服务

目录 一、busybox安装 二、linuxdeploy安装 三、linuxdeploy软件设置及安装 四、CentOS基础环境配置 五、CentOS7 上安装Python3.8.10 六、systemctl的替代品 七、CentOS7 上安装mysql5.2.27数据库 八、CentOS7 上安装Nginx服务 九、Django项目应用部署 参考文献: 一…

【LeetCode】剑指 Offer <二刷>(3)

目录 题目&#xff1a;剑指 Offer 06. 从尾到头打印链表 - 力扣&#xff08;LeetCode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 07. 重建二叉树 - 力扣&#xf…

ssm农业视频实时发布管理系统源码

ssm农业视频实时发布管理系统源码108 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm package com.controller;import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; impo…

基于JAVA SpringBoot和HTML婴幼儿商品商城设计

摘要 随着网络技术的发展与普遍,人们的生活发生了日新月异的变化,特别是计算机的应用已经普及到经济和社会的各个领域.为了让消费者网上购物过程变得简单,方便,安全,快捷,网上商城购物成了一种新型而热门的购物方式。网上商城在商品销售的发展中占据了重要的地位,已成为商家展示…

VS插件DevExpress CodeRush v23.1 - 支持Visual Studio ARM

DevExpress CodeRush是一个强大的Visual Studio .NET 插件&#xff0c;它利用整合技术&#xff0c;通过促进开发者和团队效率来提升开发者体验。CodeRush能帮助你以极高的效率创建和维护源代码。Consume-first 申明&#xff0c;强大的模板&#xff0c;智能的选择工具&#xff0…

【IEEE会议】第五届信息与计算机前沿技术国际学术会议(ICFTIC 2023)

第五届信息与计算机前沿技术国际学术会议(ICFTIC 2023) 2023 5th International Conference on Frontiers Technology of Information and Computer 第五届信息与计算机前沿技术国际学术会议(ICFTIC 2023)将在中国青岛举行&#xff0c; 会期是2023年11月17-19日&#xff0c;…

关于亚马逊云科技云技能孵化营学习心得

1、活动介绍 本活动主要是面向想要全面了解亚马逊云科技 (Amazon Web Services) 云的个人&#xff0c;而不受特定技术角色的限制。内容包括亚马逊云科技云概念、亚马逊云科技服务、安全性、架构、定价和支持等等&#xff0c;此外还可以参加亚马逊的认证考试。 2、学习过程 该…

16.CSS菜单悬停特效

效果 源码 <!DOCTYPE html> <html> <head> <title>Creative Menu Item Hover Effects</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body><section><…

java八股文面试[多线程]——进程与线程的区别

定义 1、进程&#xff1a;进程是一个具有独立功能的程序关于某个数据集合的以此运行活动。 是系统进行资源分配和调度的独立单位&#xff0c;也是基本的执行单元。是一个动态的概念&#xff0c;是一个活动的实体。它不只是程序的代码&#xff0c;还包括当前的活动。 进程结构…

Discuz!论坛发帖标题字数限制80字符可以修改吗?修改发帖标题字数的方法

Discuz!论坛发帖标题字数限制80字符修改方法 1.数据库修改2.修改JS验证字符数文件3.修改模板中写死的字符限制数4.修改函数验证文件5.修改语言包文件6.更新缓存 Discuz X3.4论坛网站帖子标题字数限制80字符&#xff0c;当我们想使用长标题的时候就得一删再删&#xff0c;实在是…

kaggle新赛:谷歌AI模型运行时间预测赛题解析【数据挖掘】

赛题名称&#xff1a;Google - Fast or Slow? Predict AI Model Runtime 赛题链接&#xff1a;https://www.kaggle.com/competitions/predict-ai-model-runtime 赛题背景 Alice 是一名 AI 模型开发人员&#xff0c;但她的团队开发的一些模型运行速度非常慢。她最近发现了编…