零基础学FPGA设计:理解硬件编程思想
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 组合逻辑电路基础

1.3.1 组合逻辑电路的表示方法

组合逻辑电路有三种表示方法:结构化(门级)原理图、真值表、布尔方程式。IEEE推荐的门级电路符号如表1-3所示。

表1-3 门级电路符号对照表

表1-3中列出了9种常用的逻辑门电路符号。大部分逻辑门电路的意义非常明确。接下来我们用一个半加器的例子来说明结构化原理图、真值表、布尔方程式这三种不同的组合逻辑电路表示方法。

半加器有两个输入数据位(全加器还包括一个进位输入位,共3个输入位),一个输出位和一个进位输出位。半加器的真值表和逻辑结构原理图如图1-4所示。

图1-4 半加器的真值表及逻辑结构原理图

由半加器的真值表可得出其布尔方程为

SUM=AB+AB'=AB

C_OUT=A·B

1.3.2 为什么会产生竞争冒险

竞争:在组合逻辑电路中,某个输入变量通过两条或两条以上的途径传到输出端,由于每条途径延迟时间不同,到达输出门的时间就有先有后,这种现象称为竞争。把不会产生错误输出的竞争现象称为非临界竞争。把产生暂时性或永久性错误输出的竞争现象称为临界竞争。

冒险:信号在器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号电平值变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化的,往往会出现一些不正确的尖峰信号,这些尖峰信号称为毛刺。如果一个组合逻辑电路中有毛刺出现,就说明该电路存在冒险。

由于组合逻辑电路中的竞争与冒险现象常常同时发生,因此一般将竞争和冒险统称为竞争冒险。显然,竞争冒险产生的原因主要是延迟时间的存在,当一个输入信号经过多条路径传送后又重新会合到某个门上,由于不同路径上门的级数不同,或者门电路延迟时间的差异,到达会合点的时间有先有后,从而产生瞬间的错误输出。

为更好地理解竞争冒险的概念,我们来分析图1-5所示电路的工作情况。在图1-5(a)所示的逻辑电路中,与门G 2的输入是AA'两个互补信号。由于非门G1延迟,A'的下降沿要滞后于A的上升沿,因此在很短的时间间隔内,G 2的两个输入端都会出现高电平,致使它的输出出现一个高电平窄脉冲(它是逻辑设计要求不应出现的干扰脉冲),如图1-5(b)所示。与门G 2的2个输入信号分别经由G1和A端两条路径在不同的时刻到达的现象就是竞争现象,由此产生的输出干扰脉冲的现象就称为冒险。

图1-5 产生正跳变脉冲的竞争冒险

再如,图1-6(a)所示的电路,其工作波形如图1-6(b)所示。它的输出逻辑表达式为L=AC+BC'。由此式可知,当AB都为1时,与C的状态无关。但是,由图1-6(b)可以看出,当C由1变0时,C'由0变1有一定的延迟时间。在这个时间间隔内,G2和G3的输出ACBC'不同时为0,而使输出出现一负跳变的窄脉冲,即冒险现象。这只是产生竞争冒险的原因之一,其他原因不再详述。

图1-6 产生负跳变脉冲的竞争冒险

分析图1-5、图1-6所示电路产生竞争冒险的原因,可归结为电路中存在由反相器产生的互补信号,且在互补信号的状态发生变化时可能出现竞争冒险现象。

在不改变组合逻辑电路基本结构的前提下,根据竞争冒险产生的原因,消除的方法主要有三种:发现并消掉互补变量、增加乘积项、输出端并联电容。而最为有效的方法是采用时序逻辑设计,使电路的变化只发生在某个时刻(时钟的上升沿或下降沿),而不是随着输入信号的变化而变化。