一、 建立时间和保持时间
建立时间(Setup Time):在时钟跳变前数据必须保持稳定的时间。
保持时间(Hold Time):在时钟跳变后数据必须保持稳定的时间。
如果建立时间或保持时间不满足,数据将不能进入触发器。
二、冒险现象
2.1 竞争冒险现象
当一个门的输入有两个或两个以上的信号发生改变时,由于这些信号是经过不同路径产生的,使得他们状态改变的时刻不同步,这种时差引起的现象称为竞争(Race)。
竞争的结果若是导致冒险或者险象(Hazard)发生(例如毛刺),并造成错误的后果,那么就称这种竞争为临界竞争。若竞争的结果没有导致冒险发生,或虽有冒险发生,但不影响系统的工作,那么就称这种竞争为非临界竞争。
组合逻辑电路的险象仅在信号状态改变的时刻出现毛刺,这种冒险是过度性的,它不会使稳态值偏离正常值,但在时序电路中,冒险可导致电路的输出值永远偏离正常值或者发生振荡。
组合逻辑电路的冒险是过渡性冒险,从冒险的波形上,可分为静态冒险和动态冒险。输入信号变化前后,输出的稳态值是一样的,但在输入信号变化时,输出信号产生了毛刺,这种冒险是静态冒险。若输出的稳态值为0,出现了正的尖脉冲毛刺,称为静态0冒险。若输出稳态值为1,出现了负的见脉冲毛刺,则称为静态1冒险。输入信号变化前后,输出的稳态值不同,并在边沿处出现了毛刺,称为动态险象(冒险)。
2.2 冒险险象产生的原因
竞争冒险主要是由于信号在FPGA原件内部通过连线和逻辑单元时,都有一定的延时。多路信号的电平值发生变化时,这些延时使得电路信号到达门时存在一个时间差,在信号变化的瞬间,组合逻辑的输出状态不确定,往往会出现一些不正确的尖峰信号,这些尖峰信号称之为“毛刺”。导致延时的因素有很多,如连线的长短、逻辑单元的数目、元件的制造工艺以及工作电压和温度等。不仅是这些固定的物理因素,一些信号的高低电平转换也需要一定时间。
2.3 竞争冒险的判断
1.逻辑代数法
如果输出端门电路的两个输入信号
A
A
A和
A
‾
\overline{A}
A是输人变量A经过两个不同的传输路径而来,那么当输入变量A的状态突变时,输出端必然存在竞争冒险现象。所以,只要输出端的逻辑函数在一定的条件下能简化为
L
=
A
十
A
ˉ
‾
L=\overline{A十\bar{A}}
L=A十Aˉ或者
L
=
A
A
ˉ
‾
L=\overline{A\bar{A}}
L=AAˉ,那么,输出端也必然存在竞争冒险现象。
2. 卡诺图法
在组合逻辑电路的输入变量为多个变量的情况下,可利用卡诺图法来判断当两个以上的变量同时改变状态时,电路是否存在竞争冒险现象。
考虑到代数法的原理是只要出现
L
=
A
十
A
ˉ
‾
L=\overline{A十\bar{A}}
L=A十Aˉ或者
L
=
A
A
ˉ
‾
L=\overline{A\bar{A}}
L=AAˉ就存在音争冒险,那么自然想到,把它推广到卡诺图上就是:只要卡诺图上有两个卡诺圈单独相切,此逻辑电路就必然存在竞争冒险。
(1) 某函数L的卡诺图上,只要有两个卡诺圈单独相切,此逻辑电路必然存在竞争冒险。
例如下图,由于卡诺图上的两个卡诺图圈相切,故其表示的逻辑函数
L
=
A
ˉ
B
ˉ
+
A
C
L=\bar{A}\bar{B}+AC
L=AˉBˉ+AC存在冒险。
(2)对角相邻的卡诺图不算相切。但是最左与最右相邻,最上与最下行相邻。
3.逻辑模拟法
用计算机辅助分析的手段来分析组合逻辑电路。通过在计算机上运行数字电路的模拟程序,能够迅速判断出电路是否出现竞争冒险现象而输出尖峰脉冲。
4.实验观察法
将组合逻辑电路输入端的信号应包含的所有可能的输入状态的变化都输入到示波器,用示波器来观察电路的输出端是否存在竞争冒险现象而产生的尖峰脉冲。
2.4如何消除冒险现象
消除险象的思路有两种,一种是后向消除,一种是前向消除。
所谓后向消除,其大体思路就是保持组合逻辑原有的情况不变,根据险象的特征,对组合逻辑的输出做特定的处理,从而消除其中的险象。
所谓的前向消除,其大体思路就是从组合逻辑本身出发,通过适当的修改,让其不会发生险象。
对于险象来说,前向消除难度难度大于后向消除,后向消除几乎是万能的。前向消除所能解决的问题比较有限,并且解决思路比较复杂。
- 修改逻辑设计
(1)使用格雷码代替普通二进制计数
可以通过改变设计,破环毛刺产生的条件,来减少毛刺的发生。在数字电路设计中,常常采用格雷码器取代普通的二进制计数器,这是因为格雷码计数器的输出每次只有一位跳变,从而消除竞争冒险的发生条件,避免了毛刺的产生。
(2)消除互补变量
如逻辑函数表达式为 L = ( A + B ) ( A ˉ + C ) L = (A+B)(\bar{A}+C) L=(A+B)(Aˉ+C),当B=C=0时, L = A A ˉ L = A\bar{A} L=AAˉ,如果直接根据此逻辑表达式组成逻辑电路,则有可能会出现竞争冒险现象。但若将其改为 L = A C 十 A ˉ B + B C L=AC十\bar{A}B+BC L=AC十AˉB+BC ,其逻辑功能不变,而 A ˉ A \bar{A}A AˉA项已不存在。这样,当B=C=0时,无论A如何变化,此逻辑表达式组成的逻辑电路均不会出现竞争冒险现象。
(3)增加冗余项
如逻辑函数表达式为
L
=
A
C
十
A
ˉ
B
L=AC十\bar{A}{B}
L=AC十AˉB,当B=C=1时,A 的状态改恋时会出现竞争冒险现象,但若将逻辑函数表达式改为
L
=
A
C
+
A
ˉ
B
+
B
C
L=AC+\bar{A}B+BC
L=AC+AˉB+BC,即地加BC 项后,当B=C=1时,无论A如何变化,电路输出端均不会出现竞争冒险现象。
2.引入采样脉冲
一般来说,冒险出现在信号发生电平转换的时刻,在输出信号的建立时间内会发生冒险,而在输出信号的保持时间内不会出现毛刺,这样就可以在电路的输入端引人一个采样脉冲,由干采样脉冲的作用时间取在电路达到新的稳定状态之后,使电路的输出端不会出现尖峰脉冲,这样就可以消除毛刺信号的影响。
有两种基本的采样方法:一种方法是在输出信号的保持时间内,用一定宽度的高电平脉冲与输出信号做逻辑“与”运算,由此获取输出信号的电平值。
另一种方法是利用D触发器的D输入端对毛刺信号不敏感的特点,在输出信号的保持时间内,用触发器读取组合逻辑的输出信号。
D触发器无须再由外部单独输入一个“采样”信号,相比于与门采样电路,具有更加简便和更容易实现的优点,D触发器消除毛刺的可靠性也更高。
- 输出端加入RC滤波电路
对于速度较慢的组合逻辑电路,由于竞争冒险而产生的尖峰脉冲一般情况下很窄,所以可采用在电路输出端并联电容的方法消除尖峰脉冲,因竞争冒险而产生的尖峰脉冲的宽度与门电路的传输时间属于同一量级。因此,在TTL门电路中,只要适当地选择电容器的容量(几百皮法以下),即可将尖峰脉冲的幅度降至门电路的阈值电平以下,从而消除电路中的竞争冒险现象。文章来源:https://www.toymoban.com/news/detail-759629.html
如果想要达到更好的滤波效果,还可以采用RC组成的低通滤波电路。同时由于同步电路对毛刺不敏感,因此尽可能使用同步电路。文章来源地址https://www.toymoban.com/news/detail-759629.html
到了这里,关于FPGA | 组合逻辑中的竞争与险象问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!