在 组合逻辑电路中,多路信号的输入使各信号在同时变化时很容易产生 竞争冒险,从而导致输出结果和预期不相符。
一、毛刺产生原因(竞争与冒险)
1.1 竞争
有两种情况会产生竞争:门电路两个输入信号同时向相反的逻辑电平跳变或同一信号经不同路径到达终点的时间有先有后的现象。
例1:信号 A、B 不可能突变,需要经历一段极短的过渡时间。而门电路的传输时间也各不相同,故当A、B同时改变状态时可能在输出端产生虚假信号。
例2:同一信号经不同路径到达终点的时间有先后(或者两个不同信号变化不同步)
结果,在t1-t2 时间内,电路输出端产生了Y=1的尖峰脉冲,不符合静态下,Y恒为0的逻辑关系:
1.2 竞争-冒险
根据上面举的两个例子,由于竞争而在电路输出端可能产生尖峰脉冲的现象就成为竞争-冒险。
组合逻辑电路的竞争-冒险现象会导致输出结果难以预料,因此要采取措施消除这种现象。
二、如何消除组合逻辑电路的毛刺
消除毛刺,通常有两种办法:第一种是硬件解决办法,即在输出信号端并联一个电容;
另一种办法是软件解决办法,也就是引入时序逻辑,如上图所示。同步时序逻辑由于用上一个时钟的跳变沿时刻(置寄存器作为组合逻辑的输入)来为下一个时钟的跳变沿时刻的置数(置下一级寄存器作为该组合逻辑的输出)做准备,只要时钟周期足够长,就可以在下一个时钟的跳变沿时刻得到稳定的置数条件,从而在寄存器组中存入可靠的数据。简单来讲,就是在原组合逻辑的基础上,添加一个寄存器用于锁存输出信号。
*"FPGA Zone" 专注 FPGA 知识学习与工程应用,欢迎 FPGA 爱好者关注公众号,领取 200G+ FPGA 相关学习资料!