《数字逻辑设计与计算机组成》一3.5 2的补码加法/减法器

3.5 2的补码加法/减法器

对于带符号的算术运算,它们的数值可以表示成正数或者负数的2的补码。两个n位数字(A)2s和(B)2s的减法可以表示成(A)2s和(- B)2s的加法,如下所示,这里(B)1s表示简单地对B的每一位进行取反,即B的反码。
2的补码减法算法

图3-11展示了2的补码减法算法过程。“+ 1”用一位进位输入来实现。


类似地,下列算法描述了n位2的补码加法。在这个例子中,输入B没有变化且进位输入设为0。
2的补码加法算法

2的补码算术产生n位2的补码输出,进位输出被忽略且不被计算到最后结果中。然而,结果还是有可能会溢出。例如,考虑用1减最小的n位二进制补码负数,或者1加上最大的n位2的补码正数。在两个例子中,结果差值和和值都会超过n位负数和n位正数2的补码表示的范围。
当A和B都是2的补码正数时,它们的符号位为0。在这个例子中,为了保证A + B不会溢出,加到符号位的进位必须为0。这样会产生0作为进位输出;不然就会产生溢出。例如,考虑图3-12中的例子a和c。在例子a中,A = (0111)2s = 7且B = (0001)2s = 1都是2的补码正数,此外,A是最大的4位正数。如图中所示,当B = 1与A = 7相加,结果为(1000)2s = - 8,一个负数,这就意味着溢出。在这个例子中,c3 = 1,且当其与都为0的符号位相加的时候,这就让符号位之和变为1(负数)且c4 = 0≠c3 = 1。要使溢出情况不会出现,当两个2的补码正数相加时,c3和c4都必须为0。
在例子c中,当两个负数A = - 1和B = - 2相加,符号位都为1,如果c3 = 1产生c4 = 1
则A + B不会溢出。否则,结果就会溢出,生成一个正数为结果。从例子a和例子c中得到的结论是当c3 = c4时,结果不会溢出,不论A和B是正数还是负数的2的补码形式。
例子b和d展示了减法。在这个例子中,等式A - B就是在计算A + (B)1s + 1。在例子b中,当B = 1(正数)去减A = - 8时(最小的4位2的补码负数),c3为0,加到符号位(都为1)上时,产生7为结果(不正确的结果)。注意,c4 = 1≠c3 = 0。在例子d中,A = - 1和B = - 2都为2的补码负数,且当相减时,结果不会溢出。注意到在这个例子中,c3 = 1与c4 = 1(c3 = c4)值相等。两个正数相减也不会产生溢出的情况。
表3-2为n位2的补码加法器/减法器溢出信号ovf的真值表。进位cn - 2与符号位相加产生最终进位cn - 1。公式(3-14)定义了溢出信号:

图3-13展示了两个框图:a)2的补码加法器和b)2的补码加法器。两个框图只有输入(B)2s和处理进位不相同。在图3-13a中,输入B与A相加,并没有改变表示形式。在图3-13b中,输入B在与A相加之前,经过了按位非运算。这样,我们可以只有一个加法器模块来组合两个电路框图实现一个加法器/减法器模块。可以用反相器模块来转换结果,当加法时输出B,当减法时输出B的非,当运算减法时,E = en - 1…e1e0等于B的反码或者表示为(B)1s。模式信号m用来表示运算模式,当m = 0(进位输入为0)时,运行加法,当m = 1(进位输入为1),运行减法。

表3-3为一位反相器片的真值表。最后组合设计如图3-14所示,信号m也被用于最初的进位输入值。注意到有信号m的模块与进位输入连接不能用于这几位串行的大型加法器/减法器电路。如果需要设计位串行电路,必须用分开的进位输入作为输入。

时间: 2024-10-25 06:47:07

《数字逻辑设计与计算机组成》一3.5 2的补码加法/减法器的相关文章

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

前 言 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章介绍的设计电路方法来说,这个数目特别巨大.再有,大型电路肯定会遇到设计扇入和扇出的需求.这就要求一种自顶