竞争与冒险
1、产生原因
根本原因在于信号传输与状态变换的延时问题,两根导线的信号到达同一门级电路的变化不可能完全同步,这一时间差就称为竞争。由于具有时间差,可能就会出现非理想输出,经过一小段时间输出才能平稳下来达到理想输出,这段非理想输出就是冒险。
竞争不一定有冒险,冒险一定有竞争。
举例:与门的两个输入端延时不同,输出就可能发生错误
2、判断方法
代数法
将其他元素固定为1,对某一元素进行逻辑化简。若逻辑化简后,表达式为A+A'或AA',则存在竞争与冒险。
卡诺图法
若相切的两个圈相切处没有圈,则可能出现竞争与冒险
计算机辅助分析+实验
3、消除方法
增加滤波电容,滤除窄带脉冲
具体操作是在输出端并联小电容,将尖峰脉冲幅度削弱到门电路阈值以下。但此操作会增加输出电压翻转时间。
增加冗余
对相切处的卡诺图加圈,增加冗余项
触发器打拍
因为对于触发器来说,它只在时钟上升沿进行采样,只要毛刺不刚好出现在时钟上升沿并且不满足建立时间和保持时间,触发器就采不到毛刺。
打两拍比较保险。
采用格雷码计数器
普通计数器,从5计到6真正的触发器变化可能是4‘b101 -> 4'b111 ->4'b110,如果刚好有assign cout =(count[3:0]==3'd7)就会出现短暂脉冲。如果采用格雷码计数器,因为相邻数之间单bit变化,就可以有效避免竞争冒险。
但由于一般计数器都是时钟同步的,所以因为触发器毛刺不敏感特性,所以普通二进制编码也影响不大。
另外格雷码可以用在高速时钟下减少信号翻转降低功耗的场景。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】