冒险 (数字电路)
产生原因
数字电路中,输入的数字信号改变或进行一些逻辑运算(如非、与、或等)时,输出信号没有能完全同步改变,从而引发短暂时间内的错误信号脉冲输出,这种错误信号的脉冲很窄,被称作“毛刺”(英語:glitch)[1]。
分类
最常见的三种冒险现象分别是静态冒险、动态冒险和功能冒险。
- 静态冒险(static hazard):输入信号的改变只引起一个错误信号脉冲
- 动态冒险(dynamic hazard):输入信号的改变引起多个错误信号脉冲
- 功能冒险(function hazard):多个输入信号变化不同步产生的错误信号
输出信号毛刺为负向脉冲的为0型冒险,通常在与或、与非、与或非型电路中出现;输出信号为正向脉冲的为1型冒险,通常在或与、或非型电路中出现。[2]:95頁
危害
冒险现象持续的时间很短暂,但是危害却不小。特别是在时序逻辑电路中,如果冒险发生在时间边沿时,输出信号的冒险会造成严重的后果。
消除方法
冒险现象是一种临时性的问题,因为电路最终会稳定在所需要的功能信号上。尽管这样,消除冒险还是十分必要,特别是当信号需要接入下一级系统裡时。
设计无冒险的电路
设计一个不发生冒险的数字电路是消除冒险的最理想的办法。但是,这种方式对于一些复杂的电路来说,设计出的电路会比较复杂,使电路变得更为复杂,甚至导致成本的上升。简单电路的静态冒险则可以应用这个方法。
卡诺图
在卡诺图中圈选“1”或“0”的时候,如果可以避免某一个所选区域与另一个区域相切,即可避免冒险现象的发生。不过,这种卡诺图圈选方式虽然可以消除因逻辑设计产生的冒险,以上圈选方式得到的最小项积之和式或最大项和之积式很可能不是最简与或式或最简或与式,即产生了冗余项。[2]:96頁
选通法
冒险通常是在输入信号改变后的较短时间内发生,如果在错误信号的脉冲消退后再进行读值,也能避免错误信号造成的危害。实际可以使用选通电路来实现此功能。
使用滤波电路
采用额外的滤波电路也可以缓解错误信号的脉冲。通常,错误信号脉冲都是高频信号,和正常的、所需要的信号频率差别较大,可以通过滤波电路进行消除。这种方式的缺点则在于,错误信号虽然被消除了,但是输出信号的上升沿和下降沿也随之被破坏。[2]:94頁
参考文献
- ^ 刘宝琴、王德生、罗嵘. 逻辑设计与数字系统. 北京: 清华大学出版社. : 111页. ISBN 978-7-302-09320-6 (中文(中国大陆)).
- ^ 2.0 2.1 2.2 邓元庆、关宇、贾鹏、石会. 数字设计基础与应用. 北京: 清华大学出版社. ISBN 978-7-302-21406-9 (中文(中国大陆)).