问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

计算机组成原理:无符号数与有符号数乘法器详解

创作时间:
作者:
@小白创作中心

计算机组成原理:无符号数与有符号数乘法器详解

引用
CSDN
1.
https://blog.csdn.net/baidu_33836580/article/details/144704508

在计算机组成原理中,乘法器的设计是一个重要的课题。本文将详细介绍无符号数和有符号数的乘法器电路,以及如何实现一个通用的乘法器。

二进制乘法器的发展

在早期计算机中,为了简化硬件结构,采用串行的1位乘法方案,即多次执行“加法-移位”操作来实现。这种乘法器称为串行乘法器。然而,这种方法速度太慢,不能满足科学技术对高速乘法所提出的要求。

自从大规模集成电路问世以来,高速的单元阵列乘法器应运而生。出现了各种形式的流水式阵列乘法器,它们属于并行乘法器。鉴于串行乘法器已被淘汰,下面只介绍并行乘法器。

无符号数乘法器

白中英主编的《计算机组成原理》中介绍的全加器阵列乘法器,虽然仅仅是给出了“逻辑电路图”,但已经走向了正确的方向。这些内容在许多教材中被用于考研教学。

下面是用于“不带符号数”(即无符号数)相乘的乘法器逻辑电路图:


图1:无符号数乘法器逻辑电路图

有符号数乘法器

为了实现“有符号数”的乘法运算,白老师给出了一个“对2求补器”的电路,可将“补码转换成原码”,同时,该电路也能把“原码转换成补码”。先后两次应用“对2求补器”电路,即可将补码转成无符号数,以无符号数相乘之后,再转成补码进行保存。

但是,这种方法在实际应用中存在一些问题。在“无符号数”的乘法器的前后,安装上这三套求补器,不但整个电路的规模不可忽视,而且,安上之后,它也不能简单的移除。因为白老师并没有给出移除的方法。因此,按照这个方法加以改造,虽然能够实现“有符号数”的乘法运算,但是,却难以恢复为原来的“无符号数”乘法运算功能。

无符号数乘法器电路

下面是一个“无符号数”相乘的计算方法:


图2:无符号数乘法计算方法

图中,用拨动开关输入的两个乘数,分别是:A = 1101、B = 1011。经过本电路进行“无符号数”乘法运算,在图中输出了乘积:1000 1111。计算完全正确。

图中,四个与门一组,共有四组。每一组,都是用于完成:Bi × A 的操作。图中,有三个加法器芯片(75LS283),它们是完成四项部份积(Bi × A)相加的工作。

观察各个加法器输入引脚的连线,可看到:各项部份积之间有明显的“错位”。按照这种“错位”的连线方法,就完成了部份积的移位工作。因此,就不要再讨论什么“数据移位”的操作了。按照这种连线方法,整个乘法器,就是以“芯片级”的速度工作了。这就要比“来一个脉冲移动一位”,快上百倍千倍甚至上万倍。

有符号数乘法器电路

下面是“有符号数”相乘的计算方法:


图3:有符号数乘法计算方法

图中“有符号数”相乘的计算方法,使用的是:补码一位乘(校正法)。与“无符号数”的乘法比较,差异,还不算太大吧?哦,有两个地方不同。

首先,符号位需要扩充,在原有符号位的基础上,至少要增加一位(可见图中的几个1)。

第二,由于补码的最高位(即B3)是一个负数,所以,最后一项部份积,与前面几项相比,就是一个“负数”。针对该项,应该采用“减法运算”,这就是所谓的“校正”。

原先,四位无符号数,乘以,四位无符号数,使用四位的加法器,就够用了。现在为了进行补码运算,就多了一个符号位的事,加法器,就必须增加一位数。(这就是用补码运算的缺点之一。)做实验时,增加一位,不现实。为了增加一位,就只能再增加一块加法器芯片(74LS283)。

为了在最后一项的实现减法运算(即所谓的校正),可以采用以前讲过的“取反加一”电路。乘数A有四位数,那么,就用四个异或门,再由B3进行控制,即可。

用补码一位乘(校正法)完成“有符号数”乘法运算的电路如下所示:


图4:有符号数乘法器电路图

由图可见,使用了两片加法器芯片,扩充了运算位数,满足了增加符号位的位数需求。

在图中左下部,增加了四个异或门,由B3进行控制。

当B3为1时,异或门就会输出A的非,即为对A取反。同时B3的这个1,又加到了U7的进位输入端。于是,A就被“取反加一”了。乘数A,就以-A的形式进入了加法器,这就实现了-A的运算。(采用异或门,实现取反加一,即可完成减法运算。这个原理,可在以前的博文中找到。)

当B3为0时,异或门后面的四个与门和B3相与,与门的输出,就是0了。

在图中,输入的补码是:A = 1101、B = 1011。

本电路,输出的补码是:0000 1111。

这些补码,对应的数值运算,则是:(-3) × (-5) = +15。运算正确。

感兴趣的读者,可以利用PROTEUS软件,仿照上面两个电路图,自己绘出电路,并进行仿真测试,你可随便输入任何值,即可测试出:给出的电路,输出,都是正确无误的。

通用乘法器

把上面两个电路,结合起来,就可以构成一个:通用的乘法器。这个通用的电路,留待后续讨论。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号