【数字IC基础】竞争与冒险

竞争-冒险

  • 1. 基本概念
  • 2. 冒险的分类
  • 3. 静态冒险产生的判断
  • 4. 毛刺的消除
    • 使用同步电路
    • 使用格雷码
    • 增加滤波电容
    • 增加冗余项,消除逻辑冒险
    • 引入选通脉冲

1. 基本概念

示例一

在这里插入图片描述
如上图所示的这个电路,使用了两个逻辑门,一个非门和一个与门,本来在理想情况下,gate2的输入端口同时变化, 输出 F 应该是一直稳定为 0 ,但是实际上每个门电路从输入到输出是一定会有时间延迟的,而且信号在互连线的传播也是有延时的,所以就会出现如下情况:
在这里插入图片描述
可以看到,输出端 F 出现了短暂的高电平,也就是说会输出端口会出现错误的的输出。

示例二

在图4.9.1(a)所示的与门电路中,稳态下无论 A=1,B=0 还是 A=0,B=1,输出皆为 Y=0。但是在输入信号A从 1 跳变为 0 时,如果B从0跳变为1,而且 B 首先上升到VIL(输入低电平)以上,这样在极短的时间内将出现A、B同时高于VIL的状态,于是便在门电路的输出端产生了极窄的Y=1 的尖峰脉冲,或称为电压毛刺,如图中所示(在画波形时考虑了门电路的传输延迟时间)。显然,这个尖峰脉冲不符合门电路稳态下的逻辑功能,因而它是系统内部的一种噪声

在这里插入图片描述
同样,在图4.9.1(b)所示的或门电路中,如果 A 从 1 变成 0 的时刻和 B 从 0 变成 1 的时刻略有差异,而且在 A 下降到 VIH (输入高电平)时,B 尚未上升到 VIH ,则在暂短的t时间内将出现 A 、B 同时低于 VIH 的状态,使输出端产生极窄的Y=0的尖峰脉冲。这个尖峰脉冲同样也是违背稳态下逻辑关系的噪声。

根据上述示例,将门电路两个输入信号同时向相反方向的逻辑电平跳变(一个从 1 变为 0,另一个从 0 变为 1 )的现象称为竞争

由于竞争往往会出现一些不正确的尖峰信号,这些尖峰信号称为“毛刺”。 如果一个组合逻辑电路中有“毛刺”出现,就说明该电路存在“冒险

由于竞争而在电路输出端可能产生尖峰脉冲的现象就称为竞争-冒险

需要注意的是,竞争不一会都会产生毛刺。例如,在图4.9.1(a)中所示的与门电路,如果在 B 上升到 VIL 之前,A 已经降到了 VIL 以下(图中的虚线),这时,电路的输出端时不会产生毛刺的。同理,对于或门电路,如果 A 下降到 VIH 之前,B已经上升到 VIH 以上(图中虚线部分),输出端也不会产生毛刺(逻辑门的控制值后变化,这样就不会产生毛刺)。

如果图4.9.1所示的与门和或门是复杂数字系统中的两个门电路,而且 A, B 又是经过不同的传输途径到达的,那么在设计时往往难于准确知道A, B到达次序的先后,以及它们在上升时间和下降时间上的细微差异。因此,我们只能说只要存在竞争现象,输出就有可能出现违背稳态下逻辑关系的尖峰脉冲(毛刺)。

示例三

对于下图的译码器电路,同样也会存在竞争冒险。由于G4和G5的传输延时不相同,信号到达G0的时间有所差异,这样就会倒是Y0出现毛刺。
如果译码器的负载是一个对尖峰脉冲敏感的电路(如触发器),那么就可能是的负载电路发生错误动作。
在这里插入图片描述

2. 冒险的分类

冒险按产生形式的不同可以分为静态冒险和动态冒险。

  • 静态冒险:输入有变化,而输出不应变化是产生的单个窄脉冲
  • 动态冒险:输入有变化时,输出也应该变化时产生的冒险
    动态冒险是由静态冒险引起的,所以存在动态冒险的电路也存在静态冒险。

静态冒险根据产生条件的不同,又可以分为功能冒险和逻辑冒险。
功能冒险:两个或两个以上输入信号同时变化时,在输出端口产生毛刺
逻辑冒险:只有一个比那辆产生变化时出现的冒险

3. 静态冒险产生的判断

在输入变量每次只有一个改变状态的简单情况下,可以通过逻辑函数表达式判断组合逻辑电路中是否存在竞争-冒险。

如果一个组合逻辑函数表达式 F,在某些条件下能化简成 F = A + A'F = A'A 的形式,在 A 产生变化时,就可能产生静态逻辑冒险。(其实就是输出端连接的是一个与门或者是或门,然后输入信号A沿着不同的路径,经过不同的延时之后,到达了该逻辑门的输入端口,这样就有可能产生毛刺。)

示例:

在这里插入图片描述
在这里插入图片描述

4. 毛刺的消除

首先确定竞争和冒险是否影响系统,毛刺并不是对所有的输入都有危害,例如 D 触发器的D 输入端,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,就不会对系统造成危害,我们可以说D 触发器的 D 输入端对毛刺不敏感。

使用同步电路

根据这个特性,我们应当在系统中尽可能采用同步电路,这是因为同步电路信号的变化都发生在时钟沿,只要毛刺不出现在时钟的沿口并且满足数据的建立和保持时间,就不会对系统造成危害。(由于毛刺很短,多为几纳秒,基本上都不可能满足数据的建立和保持时间)因此我们可以通过改变设计,破坏毛刺产生的条件,来减少毛刺的发生。

使用格雷码

例如,在数字电路设计中,常常采用格雷码计数器取代普通的二进制计数器,这是因为格雷码计数器的输出每次只有一位跳变,消除了竞争冒险的发生条件,避免了毛刺的产生。

增加滤波电容

在输出端并接一个很小的滤波电容。
简单易行,但是同时会增加输出电压波形的上升时间和下降时间,使波形变坏。

增加冗余项,消除逻辑冒险

在这里插入图片描述

引入选通脉冲

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mybatis-spring

简介 通过简化实现流程,把MyBatis的最核心的内容展示出 mybatis的加载过程 执行流程 类图 核心流程 public class ApiTest {Testpublic void test_queryUserInfoById() {String resource "mybatis-config-datasource.xml";Reader reader;try {reader…

工业平板电脑优化汽车工厂的生产流程

汽车行业一直是自动化机器人系统的早期应用领域之一。通过使用具有高负载能力和远程作用的大型机械臂,汽车装配工厂可以实现点焊、安装挡风玻璃、安装车轮等工作,而较小的机械手则用于焊接和安装子组件。使用机器人系统不仅提高了生产效率,还…

STM32+FPGA的导常振动信号采集存储系统

摘 要 : 针 对 工 厂 重 要 设 备 运 输 途 中 可 能 损 坏 的情 况 , 本 文 设计 了一 套 采 用 STM32F103+F&#xff3…

nginx mirror代码分析

实现方式 mirror逻辑的工作阶段: ngx在log phase之后(在ngx_http_free_request处调用)已完成向client端返回response,在log phase之后完成close connection(短链接),在该阶段处理mirror逻辑不…

Godot 4 源码分析 - 获取属性信息

在管道通信基础上,可进行宿主程序与Godot的双向通信。 先拿属性信息试试手。 DrGraph端 static UnicodeString command "Book.position"; if (InputQuery("输入窗口", "请输入待获取的属性信息", command)) {TDrStream_Get drGet…

Vue2.x和Vue3.x面试常问知识点-面试题

SPA单页面的理解,它的优缺点分别是什么? 是什么 SPA( single page application )仅在 Web 页面初始化时加载相应的 HTML、JavaScript 和 CSS。 一旦页面加载完成,SPA 不会因为用户的操作而进行页面的重新加载或跳转 而…

数据结构和算法——表排序(算法概述、物理排序、复杂度分析,包含详细清晰图示过程)

目录 算法概述 物理排序 复杂度分析 算法概述 表排序用于 待排元素都为一个庞大的结构,而不是一个简单的数字,例如:一本书,一部电影等等。 如果这些待排元素都用之前的排序方法,元素需要频繁互换,那么…

内网穿透远程查看内网监控摄像头

内网穿透远程查看内网监控摄像头 在现代社会中,大家总是奔波于家和公司之间。大部分时间用于工作中,也就很难及时知晓家中的动态情况,对于家中有老人、小孩或宠物的(甚至对居住环境安全不放心的),这已然是…

01)docker学习 centos7离线安装docker

docker学习 centos7离线安装docker 在实操前可以先看下docker教程,https://www.runoob.com/docker/docker-tutorial.html , 不过教程上都是在线安装方式,很方便,离线安装肯定比如在线麻烦点。 一、什么是Docker 在学习docker时,在网上看到一篇博文讲得很好,自己总结一下…

NAT协议(网络地址转换协议)详解

NAT协议(网络地址转换协议)详解 为什么需要NATNAT的实现方式静态NAT动态NATNAPT NAT技术的优缺点优点缺点 NAT协议是将IP数据报头中的IP地址转换为另外一个IP地址的过程,主要用于实现私有网络访问公有网络的功能。这种通过使用少量的IP地址代…

一百三十三、Hive——Hive外部表加载含有JSON格式字段的CSV文件数据

一、目标 在Hive的ODS层建外部表,然后加载HDFS中的CSV文件数据 注意:CSV文件中含有未解析的JSON格式的字段数据,并且JSON字段中还有逗号 二、第一次建外部表,直接以,分隔行字段,结果JSON数据只显示一部分…

(树) 剑指 Offer 07. 重建二叉树 ——【Leetcode每日一题】

❓剑指 Offer 07. 重建二叉树 难度:中等 输入某二叉树的 前序遍历 和 中序遍历 的结果,请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 示例 1: Input: preorder [3,9,20,15,7], inorder [9,3,15,20,7] …

[NLP]Huggingface模型/数据文件下载方法

问题描述 作为一名自然语言处理算法人员,hugging face开源的transformers包在日常的使用十分频繁。在使用过程中,每次使用新模型的时候都需要进行下载。如果训练用的服务器有网,那么可以通过调用from_pretrained方法直接下载模型。但是就本人…

5.2.tensorRT基础(2)-使用onnx解析器来读取onnx文件(源码编译)

目录 前言1. ONNX解析器2. libnvonnxparser.so3. 源代码编译4. 补充知识总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习 t…

已解决:多线程环境中,新线程在使用cout函数打印输出到显示器出现数据混乱的情况

错误展示错误原因解决办法1. 在本问题情况下:使用printf函数替代cout:2. 使用互斥锁使 cout函数线程保持原子状态 什么是原子操作? 错误展示 最近学习多线程的时候,创建了一堆线程,然后每个线程都运行这个方法&#x…

大数据Flink(五十二):Flink中的批和流以及性能比较

文章目录 Flink中的批和流以及性能比较 ​​​​​​​​​​​​​​一、Flink中的批和流

LeetCode 2500. Delete Greatest Value in Each Row【数组,排序】简单

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

基于深度学习的裂纹图像分类研究(Matlab代码实现)

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

消息队列(一)-- RabbitMQ入门(1)

初识 RabbitMQ 核心思想:接收并转发消息。可以把它想象成一个邮局。 producer:生产者 queue:队列 consumer:消费者什么是消息队列 MQ(Message Queue):本质是队列,FIFO先入先出&…

k8s集群环境的搭建

1.环境规划 1.1 集群类型 Kubernetes集群大致分为两类:一主多从和多主多从。 一主多从:一个Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境。 多主多从:多台Master和多台Node节点…