《数字逻辑设计与计算机组成》一3.3 加法器

3.3 加法器

n位整数加法器输入两个n位数值和一个可选的输入进位(cin)来产生一个n位的和及最后进位输出(cout)。如图3-3所示,从右(例如最低有效位)开始,两位和先前的进位相加产生一个和及一个进位(0或1)来进行下两位相加。在图中,初始的cin假设为0。算法重复直到最后两位相加并产生最后的和及最后的进位输出cout停止。

在图中,最先的两位(都为1)和cin = 0相加得到0且进位为1。下一个两位,也都为1,且先前进位为1,相加得到和及进位都为1。其他位也进行类似的加法操作。这个简单的加法算法可以看成是多个1位加法步骤,每一个都是一个全加器FA,如图3-4中第i步所示。在算法的每个步骤中,两个1位输入ai和bi和先前进位ci - 1相加产生和si和下一个进位ci。对于n位数,这个过程需要重复n次及i = 0,1,…,n - 1,c- 1 = cin,cout = cn - 1。

3.3.1 进位传输加法器

在图3-4中实现简单加法算法的n位加法器使用n个FA片串联而成的,如图3-5所示。从最低有效位进位开始,进位c0到cn - 1在每一步中产生一个,类似于手工加法运算。这种加法器又叫进位传输加法器(CPA),因为进位是从一个FA片到下一个FA片一个一个产生的。当进位在电路中波纹传输,就像在进位链中进位反馈给下一个FA片时,这种加法器叫行波进位加法器(RCA)。
进位传输加法器是加法器中最简单的电路,但有正比于进位数量的最长传输延迟。每一个进位信号都依赖于先前的进位信号;c1依赖于c0,c2依赖于c1等(原书有误——译者注)。公式(3-1)用于估计n位CPA的传输延迟,ΔCPA (n)表示n位CPA的传输延迟,ΔFAc和ΔFAs分别表示FA中进位及和的传输延迟。

公式(3-2)表示在与非门延迟ΔNAND = 0.1ns和如第2章公式(2-8)SOP表达式中,FA的进位及和延迟分别为ΔFAc = 0.2ns及ΔFAs = 0.3ns的n位CPA传输延迟的计算过程。当n = 8时,ΔCPA (8) = 1.7ns。

3.3.2 先行进位加法器

当n很大时,CPA的传输延迟可以变得过大。电路会产生一个非常长的进位产生链。然而,我们也可以用更多的独立逻辑门来在更少的时间内并行产生进位。为了说明这点,我们将定义两个变量传输(p)和产生(g),如下所示,其中i为数位位置,i = 0, 1, 2, …, n - 1。

如果每一个依次的进位可以代入后来的进位表达式中,那么就可以并行地产生c1、c2等进位。进位c1和c2的产生过程展示如下:

c1和c2最后的表达式都依赖于c- 1,这样它们就可以并行地产生了。然而相比于公式(3-6),每一个扩展表达式都需要更多的硬件去实现,包括逻辑门、更大的扇入和扇出需求。
p和g位信号是用于定义快速在大量输入中计算进位的模式。图3-6中的例子展示了用3位输入A = a2a1a0和B = b2b1b0的计算过程。在实例a中,p2、p1和p0都为1;这样,进位输入为1(c-1 = 1)将传输输出为c2 = 1,因为在公式(3-7)中p2p1p0c-1 = 1。在实例b中,p2 = 1,p1 = 1且g0 = 1;这样,进位输入为0(例如a0 = 1、b0 = 1,这样g0 = 1)则产生输出c2 = 1,因为p2p1p0 = 1。其他的实例展示了其他情况,使得c2为1。在实例c中,p2g1 = 1,所以c2 = 1,在实例d中,g2 = 1,所以c2 = 1。


当进位求出来以后,和值s0、s1和s2也可以并行地生成,由如下等式确定。

图3-7展示了3位先行进位(CLA)加法器电路。p和g位用三个异或门和三个与门在0.3ns内并行生成,这里最大值ΔXOR = 0.3ns、ΔAND = 0.2ns,假设与非门有0.1ns延迟。这个电路也称为PG单元(PGU)。p和g位和最初进位输入c-1被送入进位生成单元(CGU)。CGU中的三个进位电路是独立的且可以在0.2ns内并行产生所有的进位c0、c1和c2,假设电路用与非门实现。使用另一套异或门,最后和值也可以用p和进位为输入并行生成。这些异或门可以组合成一个称为和单元(SU)的模块。


有进位c0~c7的8位CLA仍然比较小,设计不会违反逻辑门扇入和扇出的限制。在这个例子中,进位ci的电路用扇入≤i + 2的逻辑门实现。CLA(8)的延迟为0.8ns,如公式(3-8)所示,假设与非门有0.1ns延迟。CLA(8)比CPA(8)运行速度要快两倍以上;然而,需要更多的硬件去实现其电路。

另一种CLA可以用与门实现g位、用或门实现p位及用FA输出和值[1]。
1.大型CLA加法器
对于很大的n值(例如n > 8),将进位表达式连续代入后边的进位表达式中,如公式(3-7)中的进位c1和c2,最后将产生一个非常长的进位表达式,这样对应的电路会需要很多有大量扇入数量的逻辑门。此外,一些逻辑门,比如产生p信号的异或门需要大量的扇出值,这样p才能作为多个CGU中的进位生成电路的输入去生成其他的进位信号,SU中的和值电路也是如此。这样,当n是一个非常大的数(例如32位或者64位)时,需要另一种方法来限制每一个电路模块的扇入和扇出需求。
在这个实例中,进位表达式被分成不同的集合以便使在对应电路中的逻辑门的最大扇入和扇出可以控制在一个可接受的范围内。简单举例,当n = 8时的情况如下。CLA(8)的进位表达式分成三个集合,如公式(3-9)所示。每一个集合中的表达式都有少于三个逻辑项和少于三个的变量。则对应电路的扇入≤3且扇出≤2。例如,集合1中的c1,根据信号p0,电路有最大扇入= 3和最大扇出= 2。每一个集合中的进位表达式都是数据独立的;这样进位可以在输入可用时立即生成。对于集合1中的表达式,c-1是进位输入;在集合2中,进位输入为c2;在集合3中,进位输入为c5。

在进位输入信号c-1、c2和c5中,进位输入c-1是最初的输入值,而其他两个进位输入必须由其他信号生成。它们由公式(3-10)决定并分为集合4。

考虑到当c2和c5表达式表示成p和g信号表达的形式时都是数据独立的。p和g信号也是数据独立的,且由p和g信号决定。也就是说,c2和c5最终的表达式也和集合1~集合3中的表达式类似,除了这些表达式要求以p和g信号作为输入。p中的号表示比特组中的进位传播。类似地,g中的号表示比特组中的进位生成和传播。当p = 1时,意味着1作为进位进入到块中将被传播为生成进位的1。类似地,当g = 1时,意味着在块中生成的进位1将被传输为进位输出。
集合1中的进位依赖于进位c-1以及p和g信号;这样,它们可以在p和g信号生成之后立即并行地生成。考虑到因为所有p和g信号都可以在同一时间生成,和当c0和c1生成时,它们将被移动到集合1~集合3,如公式(3-11)所示:

8位CLA的详细电路图如图3-8所示。所有8个进位c0~c7都在三步中产生,如下:
1)集合1中的进位c0和c1和所有在集合1、2和3中的p和g信号首先生成;
2)下一步,生成集合4中的进位c2和c5;
3)最后,生成集合2和集合3中的c3、c4、c6和c7。

实现集合1~集合3中每一个表达式的电路都称为块进位生成单元(BCGU)。实现集合4中表达式的电路依旧为CGU。当所有进位都生成之后,c-1~c6和p0~p7都被送进SU以便并行生成所有的和值位s0~s7。
对于很大值的n(例如n = 32或者n = 64)来说,CLA(n)电路和图3-8中所示的CLA(8)电路是一样的。除了当n很大时,进位必须被分成更多的集合以避免BCGU或者CGU的扇入和扇出问题。以图3-8中的电路设计为基础,公式(3-12)估算了CLA(n)的传输延迟,假设与非门的延迟为0.1ns。

大型CLA加法器比等价的CPA加法器要快得多,但是需要更多的硬件来实现。或者,我们可以设计一个一部分是CLA一部分是CPA的混合加法器。混合加法器比CPA要快,但是比CLA要慢。例如,16位的混合加法器可以用两个CLA(8)片设计,第一片中的进位c7传送到第二片中。这个16位混合加法器要比CPA(16)快,但是要比CLA(16)慢,并且需要的硬件比CLA(16)要少一些。
2.?HDL模块
例3-1~例3-6展示了用一个PGU、三个BCGU、一个CGU和一个SU设计的8位CLA Verilog描述。行为和结构模型都用于设计加法器。
例3-1? 8位CLA加法器的结构化描述:

例3-2? 用BCGU和CGU实现的8位进位生成模块的结构化描述:

例3-3? 3位BCGU的行为描述:

例3-4? 2位CGU的行为描述:

例3-5? 8位PGU的行为描述:

例3-6? n位SU的行为描述:

时间: 2024-11-03 22:12:46

《数字逻辑设计与计算机组成》一3.3 加法器的相关文章

《数字逻辑设计与计算机组成》一 导读

前 言 Digital Logic Design and Computer Organization with Computer Architecture for Security 编写本书的目的是让读者通过一本教科书全面理解数字逻辑设计和计算机组成.此外,本书还有独立的一章介绍安全的计算机体系结构. 本书涵盖数字逻辑设计的基本原理和Verilog硬件描述语言设计.各个章节分别讨论简单和复杂的组合电路和时序电路的设计方法.本书概述了电路设计的现代工具和方法,而Verilog实例仅用于展示该语言的

《数字逻辑设计与计算机组成》一 第1章 1.1 简介

第1章 Digital Logic Design and Computer Organization with Computer Architecture for Security 导 论 1.1 简介 计算机.iPad.手机等设备已经引起了一场改变我们生活方方面面的数字革命.所有的数据形式,从数字和文本到音频.图像和视频,都能被表示为由一系列0和1组成的序列.数字系统已经改变了我们的沟通.工作.娱乐乃至购物的方式,并被大量应用于我们所见和所用的一事一物之上.它们也存在于汽车.杂货店结账设备.电

《数字逻辑设计与计算机组成》一 1.2 逻辑设计

1.2 逻辑设计 数字电路即逻辑电路,可以实现一个或多个布尔表达式,而每个布尔表达式均定义了一个或多个输入与单一输出之间的逻辑关系.输入和输出都由布尔变量命名,称为信号,每个信号的值或者为真(T)或者为假(F).公式(1-2)定义了有a.b.c三个输入信号和一个输出信号f的逻辑电路布尔(逻辑)表达式.图1-3a显示了该电路的方框图. 表达式中的AND.OR和NOT为布尔逻辑运算符.晶体管构成的逻辑门用于实现每一种布尔运算符.现代集成电路使用数百万个逻辑门实现处理器这类复杂的逻辑电路.当两个输入都

《数字逻辑设计与计算机组成》一2.9 实现

2.9 实现 现代数字电路设计师依靠CAD工具来将设计模型翻译成实现数据.数字设计CAD工具将数字电路的描述综合(翻译)成优化过和对技术依赖的门级描述,称为网表.特定用途的集成芯片(ASIC)和FPGA都是非定制IC技术的例子.处理器芯片是典型的定制IC技术的例子.电路可以用框图表示,也可以用HDL语言描述,或者同时使用这两种方法描述.然而,现代CAD工具需要将电路描述成HDL语言. 2.9.1 可编程逻辑器件 可编程逻辑器件(PLD)是预制的,即不包含任何制造缺陷的封闭现成设备.它们可以被编程

《数字逻辑设计与计算机组成》一 1.3 计算机组成

1.3 计算机组成 逻辑设计要解决的是关于电路描述.综合.最小化和仿真的相关问题,而计算机组成则研究电路部件及其物理关系,这些部件构成处理核心(CPU).处理器.存储器.I/O设备控制器和接口,这些模块相互连接就构成计算机.例如,图1-1中的寄存器文件.加法器.乘法器和选择器组成一个数据通路.控制单元和数据通路(通过一系列控制信号)组合成所需的运算单元,可以产生两数之和或其乘积.两个内部组织不相同的CPU可以执行同一指令系统的指令.例 如,32位Intel和AMD处理器可以执行同一指令系统的指令

《数字逻辑设计与计算机组成》一 2.5 逻辑化简算法

2.5 逻辑化简算法 K图化简是一种图形的方式,只能适用于很小数目的变量,例如4个变量的表达式中.当变量数大于4时,在20世纪50年代中期发明的叫作奎因-麦克拉斯基算法的数学方式更合适于表达式化简.这个算法使用比K图更少的步骤来寻找最小逻辑表达式.最小项被划分成不同的集合,每一个集合都只包含一个在二进制表达中有特殊个1的个数的最小项.考虑例2-5中的表达式f (w, x, y, z) = Σ (0, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13).在二进制中,最小项为0000,

《数字逻辑设计与计算机组成》一2.7 其他逻辑门

2.7 其他逻辑门 作为对之前标准逻辑门的补充,这节里将介绍一些其他对设计数字系统来说必需的其他逻辑门.这些逻辑门有缓存.集电极开路(OC)缓冲区和三态缓存. 2.7.1 缓存 缓存的符号和真值表如图2-22a所示.一个缓存不会改变其输入信号:只是简单地放大它.假设与门的扇出为5,缓存可以增加与门的扇出至5-9,如图2-22b所示. 2.7.2 集电极开路缓冲区 OC缓冲区和缓存门类似,除了当其输入为逻辑1时,其输出变为高阻抗,如Z(图2-23a)所示.高阻抗信号既不是逻辑0也不是逻辑1,而是显

《数字逻辑设计与计算机组成》一 第2章 2.1 简介

第2章 Digital Logic Design and Computer Organization with Computer Architecture for Security组合电路:小型设计 2.1 简介 第1章中简单介绍了组合电路以及它们在数字系统中的应用.在这一章里,我们将涉及小的组合电路设计方法,但这些方法与设计大的组合电路用到的方法有所不同.而且,当我们手动进行最小化设计时,我们将会限制输入引脚的个数为4个,对于一些输入个数虽然超出了4但不是很大的情况(比如5个或6个),我们也会

《数字逻辑设计与计算机组成》一 第3章 3.1 简介

第3章 Digital Logic Design and Computer Organization with Computer Architecture for Security组合电路:大型设计 3.1 简介 在前一章中介绍的设计技术只适用于很少输入数目的组合电路.有很多输入的组合电路必须以不同的方式设计.例如,考虑有n = 32个输入的组合电路.其真值表可能会有超过40亿行--对于第2章介绍的设计电路方法来说,这个数目特别巨大.再有,大型电路肯定会遇到设计扇入和扇出的需求.这就要求一种自顶

《数字逻辑设计与计算机组成》一 2.8 设计实例

2.8 设计实例 在第1章中讨论过,一个数据通路包括许多电路模块.本节我们将讨论一些常见的但是比较小型的组合电路模块.在第1章中图1-1中所示的"选择器"模块也被叫作多路转换器.其他将讨论的实例包括简单的加法器.译码器和编码器模块.1位加法器,也叫作全加器(FA),产生两个1位输入的和,并输出一个0或1的传位进位.译码模块将数字A(0.1.2等)转换成对应的输出信号(例如,f0.f1.f2等).任何时候都只有一个输出f0.f1等是有效的.另一方面,编码器所做的工作是译码器的逆向工作,将