一种定点原码一位乘法器的设计与实现

计算机原理 专栏收录该内容
4 篇文章 0 订阅

【摘要】基于计算机组成原理课程实践环节的建设,以提高学生实践技能为目的,总结教学经验,应用数字电路设计方法与技巧,考虑可行性,设计一种定点原码一位乘法器的实现方案,包含初始化数据,启动、停止运算,显示运算过程等功能,用以指导教学实践。

关键词乘法器、定点原码一位乘法、计算机组成原理、计算机组成与结构

一、引言

在计算机组成原理知识教学过程中,关于二进制乘法运算是一个较难理解的环节,其中又以“定点原码一位乘法算法”是最基础的,针对这一算法设计实验方案,为学员提供实践环境,对深入理解这一问题、以及进一步的学习其他乘法乃至除法算法都十分重要。

二、定点原码一位乘法算法

两个原码数相乘,其乘积的符号为相乘两数符号的异或值,数值则为两数绝对值之积。例如:

[X]=X0X1X2…XnX0为符号

[Y]=Y0Y1Y2…YnY0为符号

[X·Y]=X0⊕Y0|X1X2…Xn·Y1Y2…Yn),符号“|”表示把符号和数值邻接起来。

在计算时,符号位和数值位分别进行计算。对于数值位,逐次按乘数每一位(从低位到高位)上的值是1还是0,决定一个相加数或者是被乘数或者是0,并向左偏移一位去加上次计算得到的和(它又被称为部分积,其初值为0),如此进行乘数位数次,最终得到乘积。在此需要注意的是:“相加数向左偏移一位后求和”和“上次计算得到的和向右偏移一位后求和”两种求和的方法是等效的,设计乘法器时采用后一种方法,其目的是寻求部份积与乘数移位方向的一致性。

例如X的值为1101Y的数值为1011,求X·Y数值的过程如下:http://download1.csdn.net/down3/20070610/10014047167.JPG

三、定点原码一位乘法器的逻辑结构

根据以上算法,设计定点原码一位乘法器的逻辑结构如下图所示:http://download1.csdn.net/down3/20070610/10014204349.JPG

其中n位寄存器S1n称为部分积寄存器,初值为0,计算结束时寄存乘积高位;一位寄存器S0用以寄存乘积符号;n+1位寄存器Y0n称为被乘数寄存器;n位寄存器X1n称为乘数寄存器,初值为乘数,计算结束时寄存乘积低位;一位寄存器X0用以寄存乘数符号。

控制信号Scr用于S1n清零,低电平有效;Scp用于S1n的触发,上升沿有效;S0cp用于S0的触发,上升沿有效,X0cp用于X0的触发,上升沿有效,并且乘法器运行时,要求先产生X0cp,然后再产生S0cp,所以这两个信号正好应用一个正脉冲的两个边沿;Xcp用于X1n的触发,上升沿有效;Ycp用于Y0n的触发,上升沿有效;Isc用于控制X1n是选择开关组值作输入还是选择移位的部分积作输入。

另外,寄存器X1n的最低位Xn采用“与”运算用于控制输入加法器一端的是被乘数还是0,所以为了防止发生不可预期的连加,ScpXcp必须是单稳态边沿触发信号。

应用该电路实现定点原码一位乘法的计算过程如下:

1)         利用n+1位开关组使用Ycp初始化被乘数寄存器Y0n为被乘数Y

2)         利用n+1位开关组使用X0cpXcp始化乘数寄存器X0X1n为乘数X

3)         使用S0cpS0保存结果符号。

4)         使用Scr把部分积寄存器S1n清零。

5)         同时发送ScpXcp信号n次后得到计算结果。

6)         停止。

开关组K0…KnLED组伴随计算的进行分别用以输入被乘数、乘数以及显示部分积的变化情况以及最终结果。

四、定点原码一位乘法器的控制电路

由于以上乘法器电路较复杂,使用过程中所需控制信号较多,操作控制较麻烦的特点,另外设计专门的控制电路为进一步验证其功能带来方便,同时也使这一设计方案自成体系,构成一个完整的应用系统。http://download1.csdn.net/down3/20070610/10014306849.JPG

该控制电路的输出自然是乘法器所需控制信号YcpXcpS0cpX0cpScpScrIsc,考虑到这些控制信号具体应用的时态有所不同,并且有的是边沿有效,有的是电平有效,所以设计单稳态触发按钮B和开关组Kc1Kc2Kc3作为控制电路的输入,开关组的不同组合值可以标识计算过程进行的步骤。据此就可以得到如下控制电路的输入与输出信号的真值表。http://download1.csdn.net/down3/20070610/10014334305.JPG

以上真值表第二步“初始化乘数”的同时,也初始化了部分积,这时部分积寄存器S1n虽然会变成不可预期的结果,但是因其无关性并不至于导致错误。因为第四步“清部分积寄存器”又使它改变为正确的初始化值。

根据以上真值表反映的逻辑关系得到控制电路的如下逻辑电路图:

在该控制电路中,三八译码器使用Kc1Kc2Kc3作由高到低的三路输入,输出信号 正好用以标识计算过程中的前五个步骤,而当Kc1输入高电平时,不论Kc2Kc3为何值, 都会失效,自然会使乘法器陷入停止态。

另外,判n电路会因为计数器出现n值产生低电平,一方面禁止产生计算时的寄存器移位触发信号ScpXcp,从而停止计算;另一方面又禁止“加1计数器”继续计数,使乘法器可靠的停在结果保持态。

五、定点原码一位乘法器的物理实现

根据定点原码一位乘法器的逻辑结构和控制电路,可以选择目前电子市场上常见的74LS18174LS27374LS7474LS16174LS0474LS3774LS5174LS138等集成电路芯片,绘制物理布线图,并借助数字电路实验仪器或面包板连接实验电路,成功地进行4位、8位、12位、……定点原码一位乘法器的功能验证。

六、总结

以上遵循分析、设计、实现的思路,环环相扣地设计了一种定点原码一位乘法器的实现方案,包含了完善的功能,且自成体系,特别是其中关于无关项或无关操作应用、单稳态触发应用、结果保持、运算停止等实现细节上的方法、技巧的描述,对于指导学习或者改进算法开发更高性能的乘法器和其他相关器件都具有积极的指导意义。

此文发表于:<<电脑知识与技术>>(学术交流) 2007年08期

  • 1
    点赞
  • 0
    评论
  • 7
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

(1)用[X]补×[Y]补直接求[X×Y]补 讨论当相乘的两个数中有一个或二个为负数的情况,在讨论补码乘法运算时,对被乘数或部分积的处理上原码乘法有某些类似,差别仅表现在被乘数和部分积的符号位要和数值一起参加运算。 若[Y]补=Y0Y1Y2…Yn 当Y0为1时,则有Y=-1+Yi×2-i 故有 X×Y=X×Yi×2-1-X当Y为负值时,用补码乘计算[X×Y]补,是用[X]补乘上[Y]补的数值位,而不理[Y]补符号位上的1,乘完之后,在所得的乘积中再减X,即加-[X]补。实现补码乘法的另一个方案是比较法,是由BOOTH最早提出的,这一方法的出发点是避免区分乘数符号的正负,而且让乘数符号位也参加运算。技巧上表现在分解乘数的每一位上的1为高一位的一个+1和本位上的一个-1:X×Y=X×(-1+Yi×2i) (逐项展开则得)=X×[-Y0+Y1×2-1+Y2×2-2+…+Yn×2-n]=X×[-Y0+(Y1-Y1×2-1)+(Y2×2-1-Y2×2-2)+…+(Yn×2-(n-1)-Yn×2-n)](合并相同幂次项得) =X×[(Y1-Y0)+(Y2-Y1) ×2-1+…+(Yn-Yn-1) ×2-(n-1)+(0-Yn) ×2-n]=X×(Yi+1-Yi)×2-i(写成累加求和的形式,得到实现补码乘运算的算法)将上述公式展开,则每一次的部分积为: P1=[2-1(Yn+1-Yn) ×X]补 P2=[2-1(P1+(Yn-Yn-1) ×X)]补 … Pi=[2-1(Pn-i+(Yn-I+2-Yn-I+1) ×X)]补 … Pn=[2-1(Pn-1+(Y2-Y1) ×X)]补 Pn+1=[ (Pn+(Y1-Y0) ×X)]补 则最终补码乘积为[X*Y]补=[Pn+1]补 由上述公式可以看出,比较法是用乘数中每相邻的两位判断如何求得每次的相加数。每两位Yi和Yi+1的取值有00,01,10,11四种组合,则它们的差值分别为0,1,-1和0,非最后一次的部分积,分别为上一次部分积的1/2(右移一位)的值Rj,Rj+[X]补,Rj-[X]补(即Rj+[-X]补)和Rj,但一定要注意:最后一次求出的部分积即为最终乘积,不执行右移操作。用此法计算乘积,需要乘数寄存器的最低一位之后再补充一位Yn+1,并使其初值为0,再增加对Yn和Yn+1两位进行译码的线路,以区分出Yn+1-Yn 4种不同的差值。对N位的数(不含符号位)相乘,要计算N+1次部分积,并且不对最后一次部分积执行右移操作。此时的加法器最好采用双符号位方案。
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值