上篇博文:组合逻辑中的竞争与险象问题(四)说到了险象的分类,通过险象的分类,我们同时也明白了什么样的竞争会引起什么样的险象。

这篇博文来分析,险象对数字电路的影响以及如何消除险象?

险象对数字电路的影响

如果组合逻辑是同步电路中的组合成分,那么其输入是直接由寄存器驱动的,而其输出也是直接输送给寄存器的。因此,无论该组合逻辑是否会产生险象,我们都需要在时序分析中确保延迟最大的那条路径在下一次时钟有效沿到来之前就已经给出了稳定的值。所以,只需要通过时序分析,就可以有效遏制险象对后续电路的危害。

不过对于异步电路来说,险象的危害就凸显出来了。这种危害与比寄存器输出的不稳定态影响更加恶劣,因为即使每次只改变单个输入的值,也会造成输出不稳定的现象。(寄存器输出的不稳定态可以通过每次只改变单个输入来解决)。而如果该组合逻辑的输出是用于产生其他逻辑的时钟、异步复位信号等控制信号,则必然会导致后续的电路行为出现问题。因此对于异步电路来说,险象的危害相当之大。

消除险象的方法

险象是数字电路的一个隐患,因为对于任何FPGA设计来说,组合逻辑几乎必不可少。可以说,任何一个FPGA设计中几乎都充斥着各种各样的险象,但是我们依然可以做出稳定的FPGA设计,这说明对于险象,我们还是有着一些不错的应对策略的。

消除险象的思路有两种,一种是后向消除,一种是前向消除。

所谓后向消除,其大体思路就是保持组合逻辑原有的情况不变,根据险象的特征,对组合逻辑的输出做特定的处理,从而消除其中的险象。

所谓的前向消除,其大体思路就是从组合逻辑本身出发,通过适当的修改,让其不会发生险象。

对于险象来说,前向消除难度难度大于后向消除,后向消除几乎是万能的。前向消除所能解决的问题比较有限,并且解决思路比较复杂。

下面先谈谈后向消除:

时序采样法

后向消除中最具有代表性的方法就是时序采样法,在消除险象的各种方法中,时序采样法的使用最为广泛。可以说,只要你描述的是一个时序逻辑,你就已经有意或无意的使用了时序采样法来消除险象。

时序采样法几乎是万能的,因为对于任何一个组合逻辑来说,其输入与输出之间总存在一个最大延迟的路径。设这个最大的路径延迟为T,如果其输入在0时刻变化一次后就保持不变,那么T时刻后,其输出肯定会稳定到新输入应该对应的输出上,而在0到T时刻之间,该组合逻辑的输出可能会出现一系列不稳定现象。

因此,如果该组合逻辑是同步逻辑的一部分,那么我们只需要适当选择周期大于T的信号作为时钟就可以绕过0到T这段有问题的时刻,而采样到T时刻以后的稳定且正确的输出。并且由于每次组合逻辑的输入改变后都会在接下来至少T时刻以上的时间保持不变,因此也能保证输出具有足够的时间达到稳定。

由此可见,时序采样法的最大优点就是根本不关心组合逻辑的内容,因此适用面非常广。

至于前向消除法,暂时就不提了。不过是修改逻辑电路,例如逻辑冗余法是最具有代表性的方法。

【 FPGA 】组合逻辑中的竞争与险象问题(五)相关推荐

  1. 【 FPGA 】组合逻辑中的竞争与险象问题(四)

    上篇博文:组合逻辑中的竞争与险象问题(三)讲解了险象的定义,即竞争引起的非预期输出,同时给出了分析,对什么样的竞争会引起险象. 这篇博文继续讲解险象问题,重要突出险象的分类. 上篇博文最后提出了化简后 ...

  2. 【 FPGA 】组合逻辑中的竞争与险象问题(三)

    上篇博文:组合逻辑中的竞争与险象问题(二)讲了半开关的相关知识,更确切的说是竞争的根源问题.这篇博文将险象问题. 险象的定义 有竞争引起的非预期行为就叫做险象. 可见,竞争是险象的前提.但是竞争就一前 ...

  3. 【 FPGA 】组合逻辑中的竞争与险象问题(二)

    竞争与险象的讨论前提 当多个输入发生变化时,由于变化时刻以及延迟的影响,组合逻辑的输出中必然存在着不稳定态.但是通过上篇博文的分析:组合逻辑中的竞争与险象问题(一),我们发现即使仅有一个输入发生变化时 ...

  4. 【 FPGA 】组合逻辑中的竞争与险象问题(一)

    针对单输出的组合逻辑进行简单分析,而多输出的组合逻辑可分解为多个但输出的组合逻辑. 单输入的组合逻辑 对于一个简单的非门电路,它的输出将永远跟随输入变化,即使考虑到门延迟.线延迟的影响,输出波形最多也 ...

  5. 组合逻辑中的 竞争冒险问题

    目录 1. 竞争 逻辑冒险 功能冒险 1.1. 数字电路的 竞争问题 功能冒险 逻辑冒险 1.2. 测试仿真的 竞争问题 放大delta cycle 2. 判断冒险 2.1. 判断 功能冒险 2.2. ...

  6. 组合逻辑中的竞争与冒险

    1.概念 竞争(competition): 说法一:在组合逻辑中,信号由于经由不同路径达到输出端,由于每条途径延迟时间不同,达到输出门的时间就有先有后,这种现象就称之为竞争. 说法二:门电路的两个输入 ...

  7. 组合逻辑中的竞争与冒险现象

    实际的信号有一个上升和下降的过程 由于信号在变化过程中,不会瞬间立刻发生变化,要经过一个过渡过程 当输入的A的信号已经到达高电平,可是我们发现B的信号还没有降到低电平,在这一段时间内,输出还是为高电平 ...

  8. 【数字逻辑】学习笔记 第四章 Part2 常用组合逻辑电路与竞争、险象

    文章目录 一.常用组合逻辑电路 1. 译码器 (1) 二进制译码器 74LS138(3/8译码器) a. 一般符号和图形符号 b. 74LS138功能表 c. 两片 `74LS138` 构成 `4-1 ...

  9. FPGA中的竞争冒险消除

    目录 竞争冒险消除 1.竞争与冒险 1.1 竞争 1.2 冒险 1.3 竞争与冒险的关系 1.4 检查竞争冒险的方法 1.5 消除竞争冒险的措施 2.毛刺 2.1 毛刺产生的原因 2.2 毛刺产生的条 ...

最新文章

  1. 设计RPC接口时,你有考虑过这些吗?
  2. 转:典型开源3D引擎分类比较
  3. UAVStack的慢SQL数据库监控功能及其实现
  4. css php html介绍,对CSS知识的简单介绍
  5. DEDECMS整合DISCUZ的方法
  6. Java-Web Response响应和Request请求
  7. 可逆神经网络(Invertible Neural Networks)详细解析:让神经网络更加轻量化
  8. 对PASCAL VOC 数据集进行数据增强
  9. java ftp上传文件 linux_Java实现把文件上传至ftp服务器
  10. 源码varnish安装
  11. HDU 5842—— Lweb and String CCPC 网络赛 1011
  12. Spark SQL join的三种实现方式
  13. 黄河计算机学校,黄河(数学与计算机学院)老师 - 重庆三峡学院 - 院校大全
  14. java jstl标签库_JSTL标签库
  15. mysql碎片data free_浅析MySQL数据碎片的产生(data free)
  16. QTP自动例子的源码分析--OpenOrder
  17. Java本地缓存技术选型(Guava Cache、Caffeine、Encache)
  18. 2021-10-24 #1024 程序员的节日
  19. linux free空闲内存用尽,Linux中显示空闲内存空间的free命令的基本用法
  20. python文件双击闪退_解决python文件双击运行秒退的问题

热门文章

  1. 为运维人员插上腾飞更远的翅膀!
  2. java的线程管理器,QuickThread - Java线程池管理器
  3. linux学习治疗,这时代,医生都用VR帮你看病了!
  4. egret发布的HTML5项目怎么打开,Egret引擎开发指南之发布项目
  5. php mysql百万级数据_php+mysql百万级数据怎么排序_PHP教程
  6. pringboot 单元测试 空指针_单元测试中的 FIRST 原则
  7. mysql5.6 icp mrr bak_【mysql】关于ICP、MRR、BKA等特性
  8. 有关计算机组装的书,计算机组装实习报告书.doc
  9. 在哪里能找到最后的版本的示例程序? AI Studio-MNIST
  10. 在MM32F3273上运行MicroPython,对于性能进行测试