逻辑部件

来源:互联网 发布:手机淘宝怎么登陆 编辑:程序博客网 时间:2024/04/27 22:56
下载
第8章逻辑部件
现代数字网络是由成百万逻辑门构成的非常复杂的系统。大型复杂数字系统的设计大多
采用层次式( hierarchical approach)设计方法,即将复杂的数字网络分解为实现一定功能的
各逻辑部件,各逻辑部件是系统的基本组成部件,而它本身可由功能部件或简单的逻辑门构
成。本章介绍数字系统设计中常用的几种逻辑部件。
8.1 数字部件的概念
前面几章重点研究了基本逻辑函数“与”、“或”、“非”及用这些逻辑函数构造复杂逻辑
网络的方法。对计算机系统这样的复杂数字系统设计而言,设计中需要使用成千上万、甚至
成百万个逻辑门,难于对设计中所使用的各逻辑门作深入细致的研究。为克服这一困难,采
用层次式设计方式,将复杂的数字网络(系统)分解为实现一定功能的逻辑部件。具有一定
功能的逻辑部件通常称为数字部件、数字单元或模块(m o d u l e),其本身即是由逻辑部件或简
单逻辑门构成的能实现相应功能的复杂逻辑结构。一般说来,数字部件具有相应的输入、输
出端口,有些数字部件包括一些控制信号端口,这些端口不是数据流的一部分但控制数字部
件的操作。
如图8 - 1所示的数字部件,其输入为a、b、c、d,输出为f,s 1、s 2为控制位。数字部件的
控制位用于选取输出相对于输入的函数值。图8 - 1的数字部件有二个控制位,其输出f 相对与
其输入信号具有22 = 4种函数,具体表示为:
(8 - 1)
式(8 - 1)表明数字网络用控制位s1s0的值选择其输出函数的方式。
人们用数字部件进行数字系统设计时主要关心各部件的行为功能。虽然各数字部件内部
包含一些基本的逻辑门,但实际应用中通常忽略其内部逻辑细节,主要研究如何用数字部件
构造大型的数字网络和系统。本章的讨论方式与第
2章讨论基本逻辑操作与逻辑符号的方式相同,讨
论时不考虑数字部件的细节逻辑结构,该方式有助
于设计者在较高层次上理解数字系统设计。在现实
世界中,你也许采用预先设计好的数字部件设计更
大的系统而不太关心部件的内部细节,或是用基本
的逻辑门设计数字部件。不过,重要的是:对层次
式设计方式而言,数字部件是设计大型、复杂数字
如果
如果
如果
如果
图8-1 数字部件的基本概念
功能
控制
输入输出
S1S0
第8章逻辑部件205
下载
系统的基本构件。
8.2 相等比较器
设有两个4位二进制数:
(8 - 2)
需进行比较,欲设计一个逻辑部件以检测这两个二
进制数是否逐位相同。引入输出函数f并将所要设计
的逻辑部件的行为功能描述如下:
显然, a=b与an=bn(n= 0 , 1 , 2 , 3)等价。图8 - 2为该部
件的外部视图,图中只标明其输入、输出端口名称,
图中所标明的“相等”说明该部件的操作类型。下
面介绍采用基本逻辑门设计该部件的详细逻辑结构
的方法。
首先,异或非(X N O R)函数也称作相等函数,因为
(8 - 3)
异或非( X N O R)函数的特征如图8 - 3所示。欲设计全等比较器,首先要构造出比较器的
逻辑函数f如下:
( 8 - 4 )
当所有的异或非操作结果都为1时, f的值为1。根据逻辑表达式中项( t e r m)与逻辑门
一一对应方式构造出的相等比较器的详细逻辑框图如图8 - 4所示,其逻辑操作的正确性很容
易验证。重要的是我们从输入输出信号的行为描述构造出了新的逻辑部件—相等比较器,
一旦逻辑部件的行为功能确定,设计中即无须关心其内部的详细逻辑结构,可直接用这些
立即部件构造复杂的设计。本例说明了可从简单的逻辑门到复杂的逻辑网络增加设计的层
次。
图8-3 相等函数
图8-2 相等比较器逻辑部件
; 相等
图8-4 相等比较器的内部逻辑电路
8.3 有效B C D码检测部件
十进制数的数字0~9可表示为4位二进制数A B C D的B C D(Binary-Coded Decimal)码形
式,其对应的编码表如图8 - 5所示。由于4 位二进制数A B C D 24 = 16有种组合,故其中有6种编
码方式未被使用,这些未被使用的编码方式所对应的十进制数字在图8 - 5中用“X”标识。
图8-5 BCD码到十进制数字的转换表
下面介绍有效B C D码检测部件的设计方式。部件的输入为B C D码A B C D,输出为F,F的
值定义如下:
若(A B C D为有效的B C D码)则
F = 0 ;
否则,若( A B C D不是有效的B C D码)则
F = 1。
F用作标志位,F=0表示输入的A B C D为有效的B C D码;而F=1则向系统警告输入的A B C D不
是有效的B C D码。标志位F通常用作数字网络异常信号,报告部件输入的数据无意义。我们将
检测B C D码有效性的部件称为有效B C D码检测部件,其对应的符号如图8 - 6所示,该部件在当
前数据层次上完全由上面描述的行为功能确定。
206 数字系统设计基础教程
下载
相等
十进制数十进制数
图8-6 有效BCD码检测部件的逻辑功能
有效B C D码检测部件的内部逻辑由无定义的输入组合确定,无定义的输入组合如下:
A B C D=1 0 1 0,1 0 11,11 0 0,11 0 1,111 0,1111
上面的输入组合的任意一组出现,标志位F=1。可由图8 - 7的4布尔变量卡诺图求出F的化简函
数,卡诺图中的1对应无定义的输入组合。化简的函数为:
F = A·B + A·C= A·(B + C) (8 - 5)
对应的部件逻辑结构如图8 - 8所示,其中部件的输入D未被使用。通过检查无定义的输入组合
即可验证图8 - 8的逻辑正确性。再次提醒读者注意:该部件在大型数字系统设计中可作为基本
部件使用,使用时不必关心部件内部的逻辑结构,部件的操作由其逻辑功能确定。
图8-7 无定义的输入组合对应的卡诺图图8-8 有效BCD码检测部件的完整设计
8.4 译码器
译码器是一种常见的组合逻辑电路,它通过控制字的组合来“激活”特定的输出线。图
8 - 9 a就是一种常见的线译码器。S1,S0是2位选择字,D0,D1,D2和D3是4条输出线。由于这种
译码器有2位选择字和4条输出线,所以被称为2到4或2 / 4译码器。一般来说, X/Y译码器有X个
选择位和Y= 2X个输出。
图8 - 9 b给出了2 / 4译码器的功能表,当S1,S0的组合对应十进制数n时,输出线Dn被激活。
这时Dn为逻辑“1”而其它输出仍保持为逻辑“0”。这种译码器也被称为“置高”(a c t i v e - h i g h)
译码器。例如,选择字S1S0= 1 0对应十进制数2,则置D2= 1,而D0= 0 =D1=D3。这种逻辑网络能
以激活相应输出的方法将二进制编码S1S0解释成十进制数值,所以将其命名为译码器。
图8-9 2/4置高译码器及其操作
第8章逻辑部件207
下载
有效BCD码
检测部件
有效BCD检测
部件
选择字
输出
a) 2/4译码器b) 功能表
下面讨论应用基本逻辑门构造2 / 4译码器的方法。观察图8 - 9 b中的功能表的每一列,对于
某一个给定的输出Dn,在相应列是只有一项为“ 1”。由此,可以写出每个输出的表达式:
(8 - 6)
图中8 - 1 0中的译码器是一个基于与门的逻辑网络。每个输出Di 通过特定的选择字相与产
生,由此直接形成了译码器网络。
图8-10 2/4译码器的内部电路
置低(active low)译码器的操作与置高译码器恰恰相反:选择字组合确定的输出将被置
为逻辑“ 0”,而其它输出保持为逻辑“ 1”。图8 - 11显示的是一个置低译码器的逻辑符号。显
然,与图8 - 1 0相比只是在输出取反而已。图8 - 1 2是这种译码器的内部逻辑图。注意右边输出
的变化(在符号图上加个圆圈),这意味着要把将“与”门替换成“与非”门。同样,可以直
接写出输出表达式:
(8 - 7)
上式可利用德摩根律化简
(8 - 8)
208 数字系统设计基础教程
下载
2/4译码器
图8-11 2/4置低译码器的内部电路
图8-12 2/4置低码译器的内部电路
化简结果说明“或”门与“与非”门是可以互相替换的。不考虑内部结构,电路功能是
不变的。
8.5 多路复用器
多路复用器(简写为M U X)也是一种常见的逻辑网络,它有多个输入但只有一个输出。
M U X能从多个输入中选择一个做为输出,这通过一个控制字实现。控制字可以确定哪个输入
被连到输出。图8 - 1 3是一个4选1的多路复用器,通常也称其为4:1 MUX。P0,P1,P2,P3是输
入路径,输出为F。如功能表所示,选择字S1S0的值可以选择输入。比如, S1S0= 0 0对应十进制
数0,所以P0被选取中了。同样地, S1S0= 11对应十进制数3,所以F=P3。我们可以把M U X形象
地看作是一个由选择字控制的四路开关。应用第4章的知识,可以直接写出它的S O P逻辑表达

(8 - 9)
通过S O P逻辑表达式可以直接构成电路,如图8 - 1 4所示。由此也能证明,“与—或”结构的
S O P表达式能直接构成电路。
第8章逻辑部件209
下载
选择字
输入
输出
a) 符号图b) 功能表
2/4译码器
图8-13 4选1多路开关
图8-14 4 :1 MUX内部电路
图8 - 1 5是4 : 1 M U X的I E E E标准符号图。如
图所示,选择位S1、S0旁边的标号“ G”(Gd
e p e n d e n c e)表示输入路径Pd和选择字S1S0要
“与”起来。也就是说,首先把S1S0解释为十
进制数d,然后将输入Pd和选择字“与”起来
即可得到输出。这样也就得出了4:1 MUX的逻
辑表达式。
使用这种方式可以构成更大规模的多路复
用器。对应n个输入的M U X,它的选择字位数
y应该满足n= 2y。例如,8:1 MUX需要3位选择
字,这样通过S2S1S0可以选择p0,p1,. . . . . .p7任意一个输入做为输出。8:1 MUX的逻辑表达式为:
(8 - 1 0)
210 数字系统设计基础教程
下载
选择字
输入输出
a) 4选1开关操作b) 功能表
图8-15 4 :1 MUX的IEEE符号图
选择字
输入
输出
可以看出, M U X通过控制字的十进制值选择输入。当然,以类似的方式完全可以设计出1 6 : 1
或3 2 : 1这样的更大的M U X。它们在系统设计中的用处非常大。但从硬件观点来看,用2 : 1或
4:1 MUX做为部件来设计多个输入的M U X更为简单。
例8 - 1
8:1 MUX的I E E E符号如下所示。它与4:1 MUX符号的不同之处就是输入数和控制字位数,
8:1 MUX的选择字S2S1S0控制了P0到P7共8个输入。
8 :1 MUX符号图
例8 - 2
下面讨论怎样用2个4:1 MUX和1个2:1 MUX构成一个8:1 MUX。S2S1S0选择字要被分为两
组:S1S0控制4:1 MUX,S2控制2:1 MUX。下图给出了一种直接实现8:1 MUX的方法。
8 :1 MUX的一种实现方法
第8章逻辑部件211
下载
一个8 :1MUX
M U X-1和M U X-2产生两个输出信号X0,X2,它们的表达式
而M U X - 3产生的输出是
把上式中X1和X2替换掉,就可以看出,输出与式8 - 1 0完全一样。
8.5.1 作为逻辑单元的多路复用器
考虑重写过的4:1 MUX的输出表达式:
(8 - 11)
用变量x和y变量将式8 - 9中的选择位S1、S0分别替换掉,即可等到上式。式中包括了x y的所有可
能组合,所以可以用它来创建一个2变量S O P等式,式中的P0,P1,P2,P3分别用1(该项将加
到式中)或0(消除该项)代替。
将图8 - 1 6 a中的M U X输入的值代入式中,示例中电路的输出为:
(8 - 1 2)
尽管上式看起来已经很简单了,但仍然可以利用卡诺图将其化简。图8 - 1 6 b是卡诺图。最
后的化简结果是一个简单的或函数
(8 - 1 3)
同样,还可以利用M U X获得其它函数。图8 - 1 7 a中的M U X的输出是异或函数。
(8 - 1 4)
如果将图8 - 1 7 a的输入取反,那么就可以得到同或函数,如图8 - 1 7 b所示。
图8-16 用一个4:1 MUX实现逻辑或操作
(8 - 1 5)
212 数字系统设计基础教程
下载
输出
输入
a) 逻辑电路b) 卡诺图化简
图8-17 用MUX实现异或功能
采用类似的方式,也可以设计出大型多路
复用器。图8 - 1 8中是用8:1 MUX产生的函数,
它的输入变量是A,B,C,输出是f。将输入
为“1”的项累加起来,可以得到:
(8 - 1 6)
式8 - 1 6中的各项分别对应为“ 1”的输入: 1,
3,4和7。一旦得到S O P形式的多项式,就可
以根据需要利用标准技术化简。
8.5.2 VHDL描述
下面讨论如何写出图8 - 1 3中的4:1 MUX的V H D L描述。为写出M U X的描述,首先定义一
个实体语句。
它定义了4条输入线d0~d3,2位选择字s和输出线f。与大多数逻辑单元一样, 4:1 MUX可
以用多种方式描述。例如可以用并发语句这样描述:
也可以用顺序进程语句写出一个等价的描述。
第8章逻辑部件213
下载
输出输出
a) XOR功能b) XNOR功能
图8-18 用一个8:1MUX产生一个SOP输出
一般情况下,描述时设计人员可以选择最熟悉的指令,或者选择能为其他逻辑网络提供
合适接口的结构。
8.6 多路输出选择器
多路输出选择器( D E M U X)的功能与多路复用器恰恰相反。它有一个输入,多个输出。
图8 - 1 9是1个1:4 DEMUX。2位选择字S1S0确定把输入变量x被送到哪个输出上。由于有4个输出,
所以D E M U X单元的逻辑描述要为每个输出写出相应的表达式。如下所示:
(8 - 1 7)
图8-19 一种DEMUX网络的操作示意图
因为输出线在操作时各自独立,互不依赖,所以通常情况下,可以利用门单元直接构成逻辑
电路。由此得到了图8 - 2 0中的逻辑网络。注意, 1:4 DEMUX和4:1 MUX在逻辑上有很多相似
之处。这应该归因于它们在功能上的互逆性。
214 数字系统设计基础教程
下载
输入
选择字
输出
a) 1:4DEMUX的操作b) 功能表
图8-20 一种DEMUX网络的内部逻辑
8.6.1 VHDL描述
因为D E M U X的逻辑非常简单,所以可以直接写出它的V H D L描述。一种方法是列出所有
的可能情况。
第8章逻辑部件215
下载
另一种方法是写出向量或基于单个逻辑门的V H D L编码。在描述逻辑行为时,只有顶层函
数才是最重要的。
8.6.2 多路传输系统
多路传输系统允许多个信号源共享一条传输线而又能维持独立的数据流。它在实践中应
用很广,因为它可以减少传输线的空闲时间,而且它还可以减少系统的硬件开销。
图8 - 2 1是一个1 6线多路传输系统的例子。16:1 MUX作为输入端提供1 6个独立的输入P0,⋯
⋯,P1 5,它构成了传送器( t r a n s m i t t e r)网络,也就是传输系统的输入部分。4位选择字S3S2S1S0
用来选择传到传输线上的输入信号。传输系统的接收器(r e c e i v e r)通过同样的选择字来确定
D E M U X的输入被送到D0,⋯⋯,D1 5中的哪个输出通道。例如,如果S3S2S1S0= 0 0 0 1,那么P1被选
作输入,数据将沿着传输线传到接收器,然后传给D1输出。如果S3S2S1S0= 0 0 1 0,则系统接受P2
端的输入,并将其传到D2。对多路传输系统来说,是否能够利用一根传输线同时传输到1 6个
通道的数据是最让人感兴趣的问题。
图8-21 多路传输系统
下面以图8 - 2 2中数据为例讨论一下如何解决上述问题。图中的P0,P1,P2和P3分别代表一
个4线M U X / D E M U X系统的输入。由于是串行数据通道,所以在特定时刻通道上的信号( 0或
1)是一定的。上图中引入了一个位时间( bit time)tb i t的概念,它用来定义一位所需的时间。
换句话说,tb i t就是一个逻辑状态持续的时间,不能更短,也不能更长了。过了tb i t时间后,数据
将变成下一个值。例如,图中P0的位序是1 0 1 0 0 1 0 1 0,而P1的是0 11 0 1 0 0 11。为了能够在一条
传输线上传输多个通路的数据,必须周期性地对每条线采样( s a m p l e)。图中每条垂直的虚线
216 数字系统设计基础教程
下载
单个传输线
数据流
表示一个采样事件,每个事件经历的时间为采样时间( Sampling time)ts a m p l e。对4通道系统来
说,数据采样的顺序是P0,P1,P2,P3,P0,P1,P2,⋯⋯,依此顺序循环往复。在M U X中,
这意味着选择字的值在每个ts a m p l e间隔里递增一下。
图8-22 4通道系统的数据采样图
如果采样时间ts a m p l e比位时间tb i t小得多的话,那么就有可能在tb i t时间内对每个通道都采样
一次并把数据不失真地传到每个通道。从图中可以看出,采样的频率比数据变化频率高很多。
这种技术叫做时分复用(time-division multiplexing),它的基础是数字信号处理领域的采样
理论(Sampling theorem)。只要满足下面的条件,这种技术可以用于控制大量线路上的数
据流。
(8 - 1 8)
事实上,这一理论构成了电话网络这样的通用传输系统的基础。
8.7 二进制加法器
像加、减这样的十进制算术函数可以用二进制加法实现。这种类型的操作构成了计算机
的基础。
二进制加法遵守下面的法则,符号“ +”表示加操作
进位为1
(8 - 1 9)
如果不考虑进位,那么加法操作与异或( X O R)操作的结果是一样的。计算1加1时,产
生进位位(carry bit)。如果研究一下2位二进制加法和对应的十进制加法,或许可以更好地理
解这个概念。首先计算两个十进制数字的和11 0+ 11 0= 21 0;下面是对应的二进制加法操作
进位

(8 - 2 0)
第8章逻辑部件217
下载
采样事件
第一步计算右边一列的和1 + 1 = 0,进位为1。然后进位被加到了左边一列上1 + 0 + 0 = 1,最后得
到的结果1 02= 21 0。
8.7.1 全加器
下面研究一下带低位进位的全加器的操作。全加器有3个输入位: an,bn是数据位, cn是低
位的进位输入。它产生两个输出位:全加和sn,进位输出cn+ 1。图8 - 2 3中的功能表是利用加法
法则计算得出的。算一算表中每一行的结果以保证你真正理解了全加器操作。
从功能表中可以推出两个表达式,一个是关于全加和sn的,另一个是关于进位输出的cn + 1
的。首先推导一下sn的表达式。sn所在列上有4行为“1”(第2,3,5,8行),列出标准的S O P
格式的表达式:
(8 - 2 1)
利用布尔代数将其化简
(8 - 2 2)
图8-23 全加器特征
化简过程中使用了两个公式(异或、同或)。
(8 - 2 3)
因为如果输入中有奇数个1的话,那么结果为逻辑1;如果有偶数个1的话,那么结果为逻辑0,
所以双异或函数(anÅbnÅcn)也被称为奇函数(odd function)。
同样,可以推导出cn+ 1的表达式。功能表中有4行为1,由此可得
(8 - 2 4)
上式中也给出了cn+ 1的化简表达式。注意,这两个公式同样也可以利用卡诺图得到。
218 数字系统设计基础教程
下载
a) 模块图b) 功能表
输入数据
进位输出进位输入

8.7.2 半加器
半加器(h a l f - a d d e r)是cn= 0的全加器,它是全加器的一个特例,如图8 - 2 4所示。半加器
只有2个输入an、bn。输出包括和sn,以及进位输出cn+ 1。下面是sn和cn+ 1的简化公式
(8 - 2 5)
上式可利用功能表得到验证。
图8-24 半加器电路
图8-25 半加器内部逻辑
8.7.3 加法器电路
导出逻辑表达式后,就可以利用门单元来构造加法器电路。图8 - 2 5是半加器的逻辑图,
它利用异或门作为基本部件来产生和。增加进位输入和一些额外逻辑门以后,可以把它扩展
为全加器,如图8 - 2 6所示。
为提高逻辑网络的性能,工程师在设计高效数字逻辑电路时经常会避而不用那些简单的、
直接的设计。尽管上面的加法器电路是有效设计,但是也有可能变换表达式而获得与直接表
达式等价的,以不同形式实现的逻辑。能够根据需要变换逻辑表达式的形式是一个优秀的设
计人员不可或缺的本领。
考虑全加器的进位输出:
第8章逻辑部件219
下载
输入数据
进位输出
a) 模块图b) 功能表

进位输出
图8-26 全加器内部逻辑
(8 - 2 6)
根据前面的讨论可知,只有在an=bn= 1时,an+bn=anÅbn才不成立。而当an=bn= 1时,anbn= 1,
所以上式允许用( an+bn)替换( anÅbn)。假设我们把cn+ 1当作输入,重新写出功能表,如图8 - 7
所示。列出sn= 1的项,能得到一个S O P形式的表达式
(8 - 2 7)
图8-27 和表达式功能表
从功能表中可知,当cn+ 1= 0时,只有( an+bn+cn)= 1时,才有sn= 1;当cn+ 1= 1时,只有
(anbncn)= 1时,才有sn= 1。因此,可以将上式化简
(8 - 2 8)
式8 - 2 8可以作为全加和sn的另一个表达式。它的优点在于逻辑式的结构非常简单: sn和cn+ 1
都能用与或非(A N D - O R - I n v e r t)门实现,逻辑如图8 - 2 8所示。
220 数字系统设计基础教程
下载
进位输出进位输入
图8-28 与或非门全加器逻辑
8.7.4 VHDL描述
利用上面的加法器网络可以直接写出V H D L描述。
首先考虑图8 - 2 5中的半加器。可以根据逻辑图用并发语句写出部件的描述。
也可以用其它方法写出V H D L描述,比如数据流方法。但并发语句写出的描述是最简练的。
根据图8 - 2 6中逻辑,也能用并发语句描述一个全加器。可以这样描述
第8章逻辑部件221
下载
AOI门1
AOI门2
(a_n x o r b _ n ) ) ;
另外,也可以根据图8 - 2 8中A O I逻辑写出描述。
8.7.5 并行加法器
半加器和全加器都只能计算一位加法。当需要执行多位二进制加法时,它们就无能为力
了。比如,假设需要计算2个4位字的和
(8 - 2 9)
并行加法器(parallel adder)允许同时输入两个多位二进制字并计算它们的和。为将这个
问题解释清楚,下面列出计算过程
进位位
(8 - 3 0)
从式8 - 3 0可以看出,每一列都要使用一个1位加法器,而且要把每位的进位输出传到左边的相
邻列上。另外,因为结果可能超过4位,所以要提供一个溢出位c0来表示结果是否溢出。c0= 0
表示结果能用4位二进制数表示,而c0= 1表示结果超过4位。
例8 - 3
计算0 1 0 1与0 111的和,注意进位位的变化
进位位
(8 - 3 1)
和11 0 0只有4位。
例8 - 4
接下来,计算11 0 1与111 0和
进位位
(8 - 3 2)
222 数字系统设计基础教程
下载
因为结果(十进制数2 7)大于4位二进制所能表示的最大数( 1 5),所以需要用5位表示。
图8 - 2 9中是一个4位并行加法器,它采用行波进位(r i p p l e - c a r r y)机制传送进位。行波
进位的特点是直接把第n位的进位输出作为第n+ 1位的进位输入,这与算法是一致的。由于
进位像波浪一样从右到左依次产生,所以导致输出像图8 - 3 0 a那样依次有效。图中的时序关
系是在假设输入在t= 0时有效,并且进位输出比和的计算时间要长的情况下得出的。加法器
工作时,首先计算出s0,而下一个位结果s1必须在c1有效之后才能计算出来,所以计算过程
中有一些延迟。同样地,直到c2有效之后s2才能计算出来,以此类推。进位沿着时间轴像波
浪一样依次有效。4位加法器的输出直到t4 b时刻才会得出。图8 - 3 0 b里,假设全加器在得出sn
以前就得出cn+ 1。
图8-29 4位行波进位加法器
图8-30 有效输出的时序关系
注意,4位全加器的第0位计算(a0+b0)也是用ci n= 0的全加器(FA)实现的。尽管完全可
以用半加器代替,但为保证单元的一致性,所以选择了FA。另外,选择FA还能允许设计人员
扩展部件功能,这将在下文中进行讨论。
下面讨论如何设计实现8位加法器。有两种实现方法。一种是选择FA做基本单元,将8个
FA首尾依次连起来即可,如图8 - 3 1所示。也就是4位加法器的扩展。另外一种方法在层次上有
所改变。这种方法不把FA做为基本单元,而把4位加法器作为单元,图8 - 3 2是逻辑图。除了使
用了更为复杂的部件之外,它与上一种电路是完全一样的。当然,在操作上两种方案的加法
器也是完全一致的。
第8章逻辑部件223
下载
a) 先计算和的FA
b) 先计算进位输出的FA
图8-31 8位行波进位加法器
图8-32 用2个4位加法器构造的8位加法器
图8 - 3 3是4位加法器的I E E E符号。P、Q为输入,输出和为Σ,方框上方的希腊字母
Σ表示这是一个加法器部件。进位输入,进位输出分别为C I和C O。尽管示例是4位加法
器的符号,但很容易将它扩展为其他特定字长的加法器。注意,没有一个4位加法器的符
号图会给出明确的关于内部逻辑或电路的信息。在这一层设计中,只有顶层功能是重要
的。这样在系统级,设计人员只需把注意力放在需要使用加法器的地方,而不必考虑内
部操作。
8.7.6 加法器C M O S电路
加法器C M O S电路能用A O I表达式直接设计实现。
(8 - 3 3)
C M O S串、并联逻辑门与A O I类型的逻辑门是一一对应的,因此可以直接实现,如图8 - 3 4
所示。为设计一个全加器电路,需要应用第6章介绍的逻辑实现的知识来为sn和cn+ 1设计2个独
立电路,如图8 - 3 5所示。图8 - 3 5 a中的进位输出电路的输出为— cn+ 1,它又做为图8 - 3 5(b)中全
加和电路的输入,和电路的输出为—sn。将两个输出反相即可得到sn和cn+ 1。
224 数字系统设计基础教程
下载
图8-33 4位加法器的IEEE符号图图8-34 用来设计CMOS电路的与或非门逻辑图
图8-35 CMOS AOI全加器电路
8.8 减法
因为需要把“借位”这一概念引入二进制系统,所以减法比加法更为复杂。当被减数大
于或等于减数时,减法遵循下面的法则:
第8章逻辑部件225
下载
a) 进位输出电路b) 和电路
AOI门1
AOI门2
(8 - 3 4)
然而,剩下的一种情况( 0 - 1)也需要规则,通常写作
0-1 =1(向左边一列借1位) (8 - 3 5)
例如,假设计算两个十进制数2和1的差(2 - 1 = 1)。用二进制数表示计算过程
(8 - 3 6)
如果从左边借位,那么右边等于0 - 1 = 1。这也可以通过二进制加法进行验证
(8 - 3 7)
计算过程中,左边列的进位加到了右边的列上。尽管根据减法法则完全可以设计出减法
器,但减法运算在手算时(在纸上演算)可能会出现错误,并且逻辑实现也过于复杂。因此
最好选择其它的方式来实现减法器。
下面从减法的基本概念开始讨论。假设有两个数X、Y,计算它们的差D
(8 - 3 8)
上式等价于
(8 - 3 9)
对于数字( -Y),下式成立
(8 - 4 0)
假设Y=y3y2y1y0,(-Y)=w3w2w1w0,下面求wn的值
(8 - 4 1)
如果令wn=—y
n,也就是
(8 - 4 2)
那么每列的和都等于( 1 + 0)= 1,即
(8 - 4 3)
再加1,结果为
(8 - 4 4)
226 数字系统设计基础教程
下载
则得到的4位和为0 0 0 0,第5位溢出为1。对Y的每一位求反相当于求Y的二进制反码,

-Y =-y3
-y2
-y1
-y0被称为Y的反码;求Y的反码的过程,被称为“取反”。Y的反码加1后,可得到Y的
补码,表示为
Y的补码=
-
Y+ 1 (8 - 4 5)
然后,如果去掉溢出位,可得
Y + Y的补码= 0 (8 - 4 6)
现在,我们得出减法的一种新算法,可根据下式计算( X-Y)
(X - Y) = X + Y的补码(8 - 4 7)
如果计算n位减法,那么就去掉结果中第( n+ 1)位的1。
例8 - 5
假设X= 11 0 1,Y= 0 1 0 1,计算它们的差(X-Y)。首先对Y按位取反,得到Y的反码
Y的汉码=1 0 1 0 (8 - 4 8)
然后计算Y的补码
Y的补码=1 0 1 0 + 1 (8 - 4 9)
= 1 0 11
将X与Y的补码相加
(8 - 5 0)
去掉第5列上的值,可得
(X-Y) = 1000 (8 - 5 1)
用十进制数验证一下,X= 1 3,Y= 5,(X-Y)= 8,与二进制结果1 0 0 0相等。
补码减法的深入研究
下面从补码的定义开始证明这种减法算法的正确性。对于一个n位二进制数Y,Y≠0时,
补码定义为
Y的补码= 2n-Y (8 - 5 2)
在Y= 0的情况下,定义
0的补码= 0 (8 - 5 3)
这些等式中的数都是以二进制表示的。注意,补码的值与字长n是密切相关的。将等式0 = 1-1
加到式(8 - 5 2)的两边,并将右边各项重新组合,可得一个新的补码的定义
Y的补码=(2n-1)Y+ 1 (8 - 5 4)
式(2n-1)有一个有趣的特征,它是一个n位的全1的二进制数。下面验证一下n= 4的情况,用
十进制数字计算(24-1)= 1 6-1 = 1 5,再用二进制数表示
( 24 - 1) = 1111 (8 - 5 5)
类似地,如果n= 8,那么
( 28 - 1) = 11111111 (8 - 5 6)
当我们从( 2n-1)减去一个n位二进制数Y时,每一位的结果要么是( 1-0)= 1(如果Y的当前
位为0),要么是( 1-1)= 0(如果Y的当前位为1)。这与取反的过程是完全一致的。正式地说,
求得的结果被称为Y的反码
第8章逻辑部件227
下载
Y的补码=(2n-1)-Y (8 - 5 7)
因此
Y的补码=Y的反码+ 1 (8 - 5 8)
计算(X-Y)时,列出下式
X+Y的补码=X+ 2n-Y (8 - 5 9)
= 2n+(X-Y)
这样,因为2n是第n+ 1位为1,后面有n个0的n + 1位二进制数,所以( X-Y)的差可以通过X
加上Y的补码并去掉溢出位的方法获得。显然,这就是前面介绍的算法
(X-Y)=X+Y的补码(8 - 6 0)
这表明这种算法可通过原理证明。
例8 - 6
下面证明算法中字长的重要性。对十进制数A= 9,如果用4位二进制来表示,有
A= 1 0 0 1 (8 - 6 1)

A的补码= 011 0 + 1 (8 - 6 2)
= 0111
假设B= 1 5,利用补码算法计算(B-A)。B的二进制表示为B= 1111,则有
(B=A)= 1111 + 0 111 (8 - 6 3)
= 1 011 0
丢掉高位的1,得到结果
(B-A)= 011 0 (8 - 6 4)
= 61 0
假设B是8位字,计算两数差
(B-A)= 0 0 0 0 1111 + 0 111 (8 - 6 5)
= 0001011 0
= 221 0
明显不正确。那么错在哪里呢? A的补码是用4位二进制表示的。如果用8位表示
A的补码= 0000011 0 + 1 (8 - 6 6)
= 1111 0 111
那么,结果为
(B-A)= 00001111 + 1111 0 111 (8 - 6 7)
= 1 0000011 0
= 61 0
显然,结果是正确的。这个示例说明补码应该随原码字长的变化而变化,保持字长的一
致性在计算中是非常重要的。
8.8.1 减法逻辑电路
为了实现补码减法,需要创建一个以Y为输入,然后(
原创粉丝点击