竞争-冒险

竞争(Competition): 在组合逻辑电路中,某个输入变量通过两条或两条以上的途径传到输出端,由于每条途径延迟时间不同,到达输出门的时间就有先有后,这种现象称为竞争。
冒险(risk):多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为"毛刺"。如果一个组合逻辑电路中有"毛刺"出现,就说明该电路存在冒险。
竞争冒险(Competition risk)产生原因:由于延迟时间的存在,当一个输入信号经过多条路径传送后又重新会合到某个门上,由于不同路径上门的级数不同,或者门电路延迟时间的差异,导致到达会合点的时间有先有后,从而产生瞬间的错误输出。
解决竞争冒险通常有两种途径,1)从根源上解决问题;2)尽量去避免竞争冒险引起的毛刺对后续电路造成影响。
1)从根源上解决问题:竞争和冒险产生的根本原因是由于,同一时刻可能有多个信号发生变化。
a. 保证同一时刻只允许单个输入变量发生变化,即可避免产生毛刺。比如对数据进行格雷码编码,即可以解决这个问题。
b. 通过时钟对输出结果进行采样,当输出保持稳定时再将结果输出给后续模块。
2)避免竞争冒险引起的毛刺对后续电路造成影响
a. 在毛刺进入到下一个模块之前,通过滤波电路将毛刺滤除。毛刺一般是非常窄的脉冲,可以在输出端接一个几百微法的电容将其滤出掉。
b. 在下一级模块中,对输入信号进行采样,当信号保持稳定后,再进行操作。

在组合逻辑电路中我们将门电路两个输入信号同时向相反的逻辑电平跳变(一个从1变为0,另一个从0变为1)的现象称为竞争。由于竞争而在电路输出端可能产生尖峰脉冲的现象就称为竞争-冒险。通俗的理解就是组合逻辑电路中会在两个输入变化的地方产生干扰即毛刺,电路中的毛刺是我们不希望产生的,会使我们设计的电路产生不稳定因素,非常危险。
在这里插入图片描述
  竞争冒险例子:
always@(*)out_always_comb=a^b;
在这里插入图片描述
  毛刺的产生对于数字系统设计的有效性和可靠性有严重的影响, 因此我们在设计数字电路时应该尽量避免毛刺的产生,而时序逻辑可以很好的消除毛刺,如图 2 所示,当我们使用时序逻辑时, c 的产生不仅跟 a 和 b 有关,还与clk 的沿有关系, 当 clk 的沿采集不到该毛刺时,则可以消掉该毛刺,而 clk 的沿采集到毛刺的概率极小。
在这里插入图片描述
               图 2 时序逻辑消除毛刺
其他消除竞争冒险的方法:
1)输出端接入滤波电容
在这里插入图片描述
2)上,采用时序电路
 3)修改逻辑设计,增加冗余项

我们从布尔方程式的角度进行逻辑优化,将原逻辑表达式D = AB + A’C,添加冗余逻辑后变为D = AB + A’C + BC,这样当B = C = 1时就不会产生竞争-冒险现象。

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值