算术运算是数字系统的基本功能是计算机不可缺少的组成部分本节介绍加法和减法的逻辑电路。
一.半加法器和全加器
1 .半加成
半加法器和全加法器是算术运算电路的基本单元,是完成一位二进制加法的组合逻辑电路。 两个一进制数的加法如下表所示。 其中,s表示和c表示进位数。 从表中的逻辑关系可以看出,这个加法运算只考虑了2个加法本身,没有考虑从低位开始的进位,所以称为半加法。 半加法器是实现以下真值表关系的电路。
从真值表中得到逻辑表达式
使用逻辑代数,可以把上式转换成非形式
从这两个公式中可以得到由与非门组成的半加法器。
由于半加和是异或,所以半加法器也可以利用一个集成的异或门和与门来实现。
图中右侧是半加成的代表性符号。
2 .全加法器
全加法器将加法运算、被加数和来自低位的进位信号相加,可以根据加法运算结果给出该进位信号。
根据全加法器的功能,可以列举其真值表。
这里,Ai和Bi分别是被加数和加数,Ci-1是来自相邻低位的进制数,Si是本位和数(称为全加和)。 以及Ci是向邻接的上位的进位。
为了求出Si和Ci的逻辑表达式,首先分别绘制Si和Ci的kanojo :
为了相对容易地获得除-或-以外的表达式,请使用包围0的方法进行简化。
由此,能够描绘1比特全加法器的逻辑图:
二.多位加法器
1 .串行进位加法器
有多位加法时,可以用并行加法串行进位方式进行。 例如,将两个4位二进制A3A2A1A0和B3B2B1B0相加可以由包含两个全加法器的集成电路或包含四个全加法器的集成电路组成。 其原理图如下图所示。
从图中可以看出,每1位的进位信号作为输入信号发送到下一位。 因此,任何1位的加法必须在低位1位的运算完成后进行。 这种进位方式称为串行进位。 该加法器的逻辑电路比较简单,但运算速度不高。 为了克服这一缺点,可以采用进位先行等方式。
2 .进位提前角集成4位加法器74LS283
由于串行进位加法器的速度受到进位信号的限制,设计了进行进位的多位加法逻辑电路,进位只由加法和被加数决定,而与低位的进位无关。 现在,我将介绍进位的概念。
从全加法器的真值表中可以得到Si和Ci的逻辑表达式:
定义两个中间变量Gi和Pi。
当Ai=Bi=1时,根据Gi=1、Ci的公式产生Ci=1、即进位,因此将Gi称为产生量。 假设Pi=1,当bi=0、Ci=Ci-1,即Pi=1时,低位的进位被传递到高位的进位输出,所以Pi被称为传递变量,任何变量都与进位信号无关。
将Gi和Pi代入Si和Ci :
进而,得到各进位信号的罗列表现如下。
由上式可知,进位信号只与变量Gi、Pi和C-1有关,但C-1是向最低位的进位信号,其值为0,因此,各位的进位信号均与2个加法运算有关,可以并行生成。 基于超前进位概念构成的综合4位加法器74LS283的逻辑图如下所示。
3 .提前进位发生器74182
多位超前进位加法器的进位并行发生,大大提高了计算速度。 但是,随着位数的增加,进位逻辑电路越来越复杂。 为了解决这一矛盾,设计了专用的超前进位生成器,通过多个超前进位生成器进行连接,可以在不使逻辑电路复杂的情况下扩展位数。 集成超前进位生成器74182的逻辑图和引脚图分别如下图所示。
以下说明74182的端子信号。
74182的输入输出信号有进位输入端子Cn、进位输出端子Cn x、Cn y
、Cn z、进位发生输出端FG (低电平有效)、进位传送输出端FP )、进位发生输入端G0~G3 )、进位传送输入端P0~P3 )、低电平有效)。 74182的逻辑功能如下表所示。
74182FG输出菜单
74182FP输出菜单
74182Cn x输出菜单
74182 Cn y输出菜单
74182 Cn z输出菜单
根据这些菜单,可以执行以下操作:
16位全位超前进位算术/逻辑运算电路图如下。
三.减法
和加法运算一样,减法运算可以使用减法器来实现。 减半器和全减器的设计方法和步骤与加法器的设计相同。 在实用上,为了简化系统结构
中选择所需的墙类型。 通常,减法器不是单独设计的,而是将减法转换为加法进行处理,使运算器同时实现加法和减法。 一般用补数代替减法运算的方法,首先介绍这种方法的原理。
1 .反码和补码
这里仅讨论数值代码,即数字中不包含编码位。 以前应用的自然二进制代码称为原代码,反码是指原代码中所有的0都变成1,所有的1都变成0的代码。 观察以下源代码与反转代码的关系。
很明显,各组的反转代码是从1111中减去原代码后的结果,因此得到n反转=(2n-1 )-N原这样的反转代码和原代码的一般关系式
这里,n等于数字的位数。
补数定义为n补=2n-N原
于是,得到了n补=N反1的补数和反转数的关系式
从以上的分析可以看出,一个数量的
反码可将原码经反相器获得,而由反码加1就可得到补码。2.由加补码完成减法运算
由反码与原码的一般关系式可得两数A、B相减的表达式:
上式表明A减B可由A加B的补码并减2n完成。
下图为4位减法运算电路图:
由4个反相器将B的各位反相(求反),并将进位输入端C-1接逻辑1以实现加1,由此求得B的补码。显然,只能由高位的进位信号与2n相减。当最高位的进位信号为1(2n)时,它们的差为0;最高位的进位信号为0时,它与2n相减所得的差为1,同时还应发出借位信号。因此,只要将最高位的进位信号反相即实现了减2n的运算,反相器的输出V为1时需要借位,故V为借位信号。下面分两种情况分析减法运算过程。
(1)A-B≥0的情况。
设A=0101,B=0001。
求补相加演算过程如下:
直接作减法演算,则有
比较两种运算结果,它们完全相同。在A-B≥0时,所得的差就是差的原码,借位信号为0。
(2)A-B<0的情况。
设A=0001,B=0101。
求补相加演算过程如下:
直接作减法运算,则有:
比较两种运算结果可知,前者正好是后者的绝对值的补码,借位信号V为1时表示差为负数,V为0时差为正数。若要求差值以原码形式输出,则还需进行变换。由补码的定义式可知,即将补码再求补得原码。这时的求补逻辑电路如下图所示:
结合4位减法运算逻辑电路和这个求补逻辑电路可组成输出为原码的完整的4位减法运算电路。求补相加而得的差输入到不同的异或门的一个输入端,而另一输入端由借位信号V控制。当V=1时,D3~D0反相,加法器也不实现加1运算,维持原码。
四、集成算术/逻辑单元举例
集成算术/逻辑单元(ALU)能够完成一系列的算术运算和逻辑运算。74LS381是比较简单的双极型ALU,它的功能如下表所示:
引脚图如下图所示:
该算术/逻辑单元可以对两个4位数据A和B进行6种算术或逻辑运算,并有清零和预置功能。
所谓清零是使各数据输出端的状态为0。
预置是使数据输出端处于预定的状态。
输入信号S2~S0选择8种不同的运算功能。
进行算术运算时,其输出F3F2F1F0为二进制数;
进行逻辑运算时,则为含一定意义的代码;
进行预置操作时,预定的状态从A3A2A1A0端输入。
可以根据需要把若干片4位ALU与超前进位产生器连接,扩展ALU的位数。下图就是一种16位的ALU的连接方法 。这种运算电路从最低位到最高位都是超前进位,常称为全超前进位电路。