文档库 最新最全的文档下载
当前位置:文档库 › 直接补码并行乘法

直接补码并行乘法

直接补码并行乘法
直接补码并行乘法

直接补码阵列乘法器的设计原理

* 李澄举

(嘉应学院计算机系,广东梅州514015)

[摘要]直接补码阵列乘法器的工作原理是《计算机组成原理》课程的难点。本文从组成阵列乘法器的四类全加器的工作原理分析开始,结合补码和真值的转换关系,通过和手工计算方法的对比,深入浅出地揭示了直接补码阵列乘法器的工作原理。

[关键词] 直接补码阵列乘法器,负权值,一般化全加器

一、引言

直接补码阵列乘法器可以直接求出两个补码的相乘积,由于符号位也参加运算,运算速度比起原码阵列乘法器快得多。5位乘5位的直接补码并行阵列乘法器的逻辑结构如图1所示。

与原码阵列乘法器不同的是,直接补码阵列乘法器除了采用0类全加器之外,还采用了1类和2类全加器,以对应于输入补码符号位的负的位权值;图1左下角的虚框是行波进位加法器,为了缩短加法时间,可以用先行进位加法器代替。

设被乘数和乘数(均为补码)分别为A=(a4)a3a2a1a0,B=(b4)b3b2b1b0,其中a4和b4是符号位,用括号括起来是表示这一位具有负的位权值。根据补码和真值的转换可以知道,补码A的真值a=a4×(-24)+a3×23+a2×22+a1×21+a0×20;

补码B的真值b=b4×(-24)+b3×23+b2×22+b1×21+b0×20;

即在将补码直接转换成真值时,符号位取负权值,其余位取正权值。

如设A=01101(+13),B=11011(-5),计算符号位参加运算A×B的竖式乘法如下:*【作者简介】李澄举(1949—),男,广东梅县人, 嘉应学院计算机系副教授

在这个竖式中,带括位的位具有负的位权值,即(1)=-1,(0)=0。原乘积最高两位0(1)

是带有负位权值的二进制数,相当于0×21+1×(-20) =-1,因(1)1相当于1×(-21)+1

×20 =-1,故0(1)可以写成(1)1,这扩充符号位(1)便是乘积的符号位。由此可见,在竖式乘法中,若乘积中间位有带负位权值的(1),可照此办法将(1)左移或消去,如果(1)能移到乘积最左边,则说明乘积为负,这(1)便是补码符号位;否则乘积为正,应在乘积最左边的1之左边加一个0作为补码符号位。

二、各类全加器的加法逻辑

要了解直接补码阵列乘法器的工作原理,首先要了解各类全加器的工作原理。

常规的一位全加器可假定它的3个输入和2个输出都是正权。这种加法器通过把正权

或负权加到

输入/输出端,

可以归纳出

四类加法单

元。如图2所

示各类全加

器的逻辑符

号,图中凡带有小圆圈的输入端都是负位权值的输

入端、带有小圆圈的输出端都是负位权值的输出

端。由图可见,0类全加器没有负权输入和负权输

出;1类全加器有1个负权输入和1个负权输出;2

类全加器有2个负权输入和1个负权输出;3类全

加器有3个负权输入和3个负权输出;各类全加器

就是按负权值输入的个数命名的。

1、0类全加器

由于0类全加器3个输入X 、Y 、Z 和2个输出

S (本位)和C (进位)都是正权,它的输出函数

表达式为我们所熟知:

ZX YZ XY C XYZ

Z Y X Z Y X Z Y X S 00++=+++=。

2、1类全加器

1类全加器只有1个负权输入和1个负权的本

位输出。对于负权输入,如竖式乘法可见,加法的

结果是正权的值的和与负权的值相减。但一位的减

法不同于做n 位定点整数的补码减法,1类全加器

须有如表1所示的真值表(表中带负权值的输入、输出变量前加符号“-”以标识),这种真值表表明了带权输入和带权输出之间的逻辑关系和数值关系:输入端X 、Y 带正权值,Z 带负权值,按手工加法,结果为X +Y +(-Z )的值。只是当结果为1时,应将1变换为进位C =1、本位S =(1),等效于1×21+1×(-20)=1,使本位保持负的位权值,即:

X +Y +(-Z )=C (-S ) =C ×21+S ×(-20)

X 、Y 、Z 的所有取值组合对应的输出结果如下:

0+0+(-0)=0(0)=0×21+0×(-20) =0;

0+0+(-1)=0(1)=0×21+1×(-20) =-1;

0+1+(-0)=1(1)=1×21+1×(-20) =1;

0+1+(-1)=0(0)=0×21+0×(-20) =0;

1+0+(-0)=1(1)=1×21+1×(-20) =1;

1+0+(-1)=0(0)=0×21+0×(-20) =0;

1+1+(-0)=1(0)=1×21+0×(-20) =2;

1+1+(-1)=1(1)=1×21+1×(-20) =1;

故其输出函数表达式为:

X Z Y Z XY C XYZ Z Y X Z Y X Z Y X S 11++=+++=

与0类全加器的输出函数比较,它们的本位函数相同但进位函数不同。若将带负权值的Z 取反后代入输出函数表达式,进位函数和0类全加器的一致,而本位函数1S 就是0类全加器本位输出的反,即01S S =。由此可见,要实现1类全加器的功能,带负权输入的Z 端须经一反相器输入到0类全加器与带正权输入的X 、Y 做一位的加法,然后本位端取反输出。本位1S 是取反后输出,表明本位输出带负的位权值。因此,1类全加器符号中的大圆

圈可以看成是0类全加器。

3、2类全加器

2类全加器有2个负权输入和1个负权的进位

输出,输入和输出之间的逻辑、数值关系为:

(-X )+ (-Y ) +Z =(-C )S =C ×(-21)+S ×20。

当数值运算的结果为-1时,应将它变换为

(1)1,等效于1×(-21) +1×20 =-2+1=-1,

使进位C 保持负的位权值。

X 、Y 、Z 的所有取值组合对应的输出结果如下:

(-0)+(-0)+0=(0)0=0×(-21)+0×20 =0;

(-0)+(-0)+1=(0)1=0×(-21)+1×20 =1;

(-0)+(-1)+0=(1)1=1×(-21)+1×20 =-1;

(-0)+(-1)+1=(0)0=0×(-21)+0×20 =0;

(-1)+(-0)+0=(1)1=1×(-21)+1×20 =-1;

(-1)+(-0)+1=(0)0=0×(-21)+0×20 =0;

(-1)+(-1)+0=(1)0=1×(-21)+0×20 =-2;

(-1)+(-1)+1=(1)1=1×(-21)+1×20 =-1;

故其输出函数表达式为:

X Z Y Z XY C XYZ

Z Y X Z Y X Z Y X S 22++=+++=

与0类全加器的输出函数比较,它们的本位函数相同但进位函数不同。若将带负权值的X 和Y 取反后代入输出函数表达式,本位函数和0类全加器的一致,而进位函数2C 就是0类全加器进位输出的反,即02C C =。由此可见,要实现2类全加器的功能,带负权输入的X 、Y 端须经反相器输入到0类全加器内与带正权输入的Z 做一位的加法,然后进位端取反输出。进位2C 是取反后输出,表明进位输出带负的位权值。2类全加器符号中的大圆圈也可以看成是0类全加器。

4、3类全加器

3类全加器有3个负权输入和2个负权的本位和进位输出,输入和输出之间的逻辑、数值关系为:(-X )+ (-Y ) +(-Z )=(-C ) (-S ) =C ×(-21)+S ×(-20)。

X 、Y 、Z 的所有取值组合对应的输出结果如下:

(-0)+(-0)+(-0)=(0) (0)=0×(-21)+0×(-20) =0;

(-0)+(-0)+(-1)=(0) (1)=0×(-21)+1×(-20) =-1;

(-0)+(-1)+(-0)=(0) (1)=0×(-21)+1×(-20) =-1;;

(-0)+(-1)+(-1)=(1) (0)=1×(-21)+0×(-20) =-2;

(-1)+(-0)+(-0)=(0) (1)=0×(-21)+1×(-20) =-1;

(-1)+(-0)+(-1)=(1) (0)=1×(-21)+0×(-20) =-2;

(-1)+(-1)+(-0)=(1) (0)=1×(-21)+0×(-20) =-2;

(-1)+(-1)+(-1)=(1) (1)=1×(-21)+1×(-20) =-3;;

数值运算的结果≤0,进位C 和本位S 始终保持负的位权值,其输出函数表达式为: ZX YZ XY C XYZ

Z Y X Z Y X Z Y X S 33++=+++=。

这与0类全加器的输出函数表达式相同。若将带负权值的X 、Y 和Z 取反后代入输出函数表达式,有03S S =和03C C =。由此可见,要实现3类全加器的功能,所有带负权输入的输入端都须经反相器输入到0类全加器内做一位的加法,然后本位端和进位端都取反输出。进位3C 和本位3S 都是取反后输出,表明本位和进位输出都带负的位权值。3类全加器符号中的大圆圈同样可以看成是0类全加器。

由此可见,这一般化的全加器可以实现二进制数的一位加法或减法的功能。

表2列出了以上四类一般化全加器的名称和逻辑符号及所对应的操作。

图1所示5位乘5位的直接补码阵列乘法器中用了0类、1类和2类的全加器,应该指出,只是为了画图的方便,图中1类和2类的全加器的带负权值的输出端都省略了标示取反的小圆圈,这是需要特别注意的。在下面举例说明这5位乘5位的直接补码阵列乘法器的工作原理。

三、直接补码阵列乘法器的工作原理

这里分别以被乘数和乘数的正负来说明直接补码阵列乘法器的工作原理。行波进位加法器的功能还可将乘积中间的带负权值的位进行处理,使它移到最高位(p9)作为符号位。图3右上角用六个0类全加器,它的工作原理容易理解,左边用六个1类全加器的连接的原理是:由a4带负权值,故a4b0带负权值,需用1类全加器,也因本位是负权输出,故接下来也用1类全加器,这一列用了三个1类全加器。这列第4行因a0b4也带负权值,故用2类

全加器。其它各列如此类推。

1、被乘数和乘数都为负的情况:如10001×10011,即(-15) ×(-13)。

图3中标出了阵列乘法器在作10001×10011乘法时各类加法器的输入端和输出端的值。左上角第一个1类全加器三个输入端的值分别为(1)、0、0,根据上述1类全加器的工作原理,传到这个1类全加器内的0类全加器输入端为0、0、0,运算结果为00,那么这个1类全加器的进位输出为0,本位则取反输出为(1)。如此类推。

可得阵列乘法器的输出为0011000011。

补码的二进制数的真值是:

p=1×27+1×26+1×21+1×20=128+64+2+1=(+195)10。

十进制数乘法验证:(-15) ×(-13)=+195

2、被乘数为正和乘数为负的情况:如01111×10111,即(+15) ×(-9)。

如图4所示,在这里虽然a4=0,但因它仍然带负的位权值,故仍接1类全加器的负权输入端。阵列乘法器输出的补码结果为:1101111001。

补码的二进制数的真值是:

p=1×(-29)+1×28+1×26+1×25+1×24+1×23+1×20

=-512+256+64+32+16+1=-135

十进制数乘法验证:(+15) ×(-9)=-135

3、被乘数为负和乘数为正的情况:如10111×01111,即(-9) ×(+15)。

如图5所示,阵列乘法器输出的补码结果为:1101111001,与上面2的结果相同,演算

这个例子可以加深对阵列乘法器工作原理的理解。

Direct 2's complement array multiplier principle of design

直接补码阵列乘法器的工作原理是《计算机组成原理》课程的难点。本文从组成阵列乘法器的四类全加器的工作原理分析开始,结合补码和真值的转换关系,通过和手工计算方法的对比,深入浅出地揭示了直接补码阵列乘法器的工作原理。

The direct 2's complement array multiplier principle of work is "Computer Organization Principle" the curriculum difficulty. This article starts from the composition array multiplier four kind of full adders principle of work analyses, the union base complement and the true value transformation relations, through and the manual computational method contrast, have promulgated the direct 2's complement array multiplier principle of work with profundity and an easy-to-understand approach.

Direct 2's complement array multiplier直接补码阵乘法器

Negative power value Negative position power value负的位权值

Generalized full adder一般化全加器

2's complement补码

原码:signed magnitude

1's complement 反码

Negative bit weighting factor负的位权值

定点补码一位乘法器方案

个人资料整理仅限学习使用 课程设计报告 课程设计名称:计算机组成原理课程设计 课程设计题目:定点补码一位乘法器的设计 院<系):计算机学院 专业:计算机科学与技术 班级: 学号: 姓名: 指导教师: 完成日期:2018年1月15日

目录第1章总体设计方案1 1.1设计原理1 1.2设计思路2 1.3设计环境4 第2章详细设计方案5 2.1顶层方案图的设计与实现5 2.1.1创建顶层图形设计文件5 2.1.2器件的选择与引脚锁定6 2.2功能模块的设计与实现7 2.2.1求补电路模块的设计与实现7 2.2.2 控制电路模块的设计与实现8 2.2.3选择器模块的设计与实现10 第3章编程下载与硬件测试12 3.1编程下载12 3.2硬件测试及结果分析12 参考文献14 附录<电路原理图)15

第1章总体设计方案 1.1设计原理 <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× ×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]补

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

课程设计报告 课程设计名称:计算机组成原理课程设计 课程设计题目:定点补码一位乘法器的设计与实现 院(系):计算机学院 专业:计算机科学与技术 班级: 学号: 姓名: 指导教师: 完成日期:2012年1月13日

目录 第1章总体设计方案 (1) 1.1设计原理 (1) 1.2设计思路 (1) 1.3设计环境 (2) 第2章详细设计方案 (3) 2.1顶层方案图的设计与实现 (3) 2.1.1创建顶层图形设计文件 (3) 2.1.2器件的选择与引脚锁定 (4) 2.1.3编译、综合、适配 (5) 2.2功能模块的设计与实现 (5) 2.2.1 取补模块的设计与实现 (5) 2.2.2选择器模块的设计与实现 (7) 2.2.3 乘数补码移位寄存器模块的设计与实现 (11) 2.2.4 部分积移位寄存器模块的设计与实现 (13) 2.3仿真调试 (14) 第3章编程下载与硬件测试 (16) 参考文献 (17) 附录(电路原理图) (18)

第1章总体设计方案 1.1 设计原理 在计算两个补码相乘时,可以通过Booth算法来实现定点补码一位乘的功能。布斯(Booth)算法采用相加和相减的操作计算补码数据的乘积,Booth算法对乘数从低位开始判断,根据后两个数据位的情况决定进行加法、减法还是仅仅进行移位操作。讨论当相乘的两个数中有一个或二个为负数的情况,在讨论补码乘法运算时,对被乘数或部分积的处理上与原码乘法有某些类似,差别仅表现在被乘数和部分积的符号位要和数值一起参加运算。 Booth乘法规则如下: 假设X、Y都是用补码形式表示的机器数,[X]补和[Y]补=Ys.Y1Y2…Yn,都是任意符号表示的数。比较法求新的部分积,取决于两个比较位的数位,即Yi+1Yi 的状态。 首先设置附加位Yn+1=0,部分积初值[Z0]补=0。 当n≠0时,判断YnYn+1, 若YnYn+1=00或11,即相邻位相同时,上次部分积右移一位,直接得部分积。若YnYn+1=01,上次部分积加[X]补,然后右移一位得新部分积。 若YnYn+1=10,上次部分积加[-X]补,然后右移一位得新部分积。 当n=0时,判YnYn+1(对应于Y0Y1),运算规则同(1)只是不移位。即在运算的最后一步,乘积不再右移。 1.2 设计思路 首先要采用原码值输入,乘数和被乘数皆为8位。而且根据补码一位乘法运算规则:(1) 如果yn = yn+1,部分积[ zi ] 加0,再右移一位;(2) 如果yn yn+1 = 01,部分积加[ x ]补,再右移一位;(3) 如果yn yn+1 = 10,部分积加[ - x]补,再右移一位;这样重复进行n+1 步,但最后一步不移位。包括一位符号位,所得乘积为2n+1 位,其中n 为尾数位数。 设计一个二输入三选一选择器对可能的三种情况进行选择。当选择器中输入

补码一位乘法

计算机组成原理 第三章运算方法与运算器3.4 补码一位乘法

1补码一位乘法的基本方法 设[X]补= X0X1X2X3…X n[Y]补= Y0Y1Y2Y3…Y n 可证明: [X?Y]补= [X]补?( 0.Y1Y2Y3…Yn) –Y0? [X]补 进一步展开合并后可得: n [x?y]补=[x] 补?∑(y i+1-y i)2-i (符号位参加运算) i=0

1补码一位乘法的基本方法 [x?y] 补=[x] 补? (y i+1-y i)2-i (符号位参加运算) 补码一位乘法的运算规则如下: (1)如果y n+1=y n,部分积加0,部分积算术右移1位; (2)如果y n+1y n=10,部分积加[x]补,部分积算术右移1位; (3)如果y n+1y n=01,部分积加[-x]补,部分积算术右移1位. 重复进行n+1步,但最后一步不移位。 包括一位符号位,所得乘积为2n+1位,其中n为数据位位数.

1补码一位乘法的基本方法 几个特殊问题的处理 [x ?y] 补=[x] 补? (y i+1- y i )2-i (符号位参加运算) 设[X]补= X 0X 1X 2X 3…X n [Y]补= Y 0Y 1Y 2Y 3…Y n (1)i=n 时,y n+1=?(2)y n+1是哪个寄存器? (3)算术右移的对象有哪些?y n+1=0 在乘数寄存器Y 后增加的一位部分积和乘数寄存器均右移

2补码一位乘法的举例 例1 已知X= +1101 Y=+1011 用补码一位乘法求X?Y 解:[X]补=01101 [Y]补=01011 [–X]补=10011 部分积乘数说明 000000 010110Y n+1< Y n部分积+[–X]补 + 110011 110011 →111001101011结果右移一位,Y n+1= Y n部分积+0 + 000000 111001 →111100 110101结果右移一位, Y n+1> Y n部分积+[X]补 + 001101 001001

计算机组成原理第六章答案

1. 写出下列各数的原码、反码、补码、移码(用8位二进制表示),其中MSB是最高位(符号位),LSB是最低位。如果是小数,则小数点在MSB之后;如果是整数,则小数点在LSB之后。 (1)-59/64 (2)27/128 (3)-127/128 (4)用小数表示-1 (5)用整数表示-1 (6)-127 (7)35 (8)-128 2. 设[x]补=x0.x1x2x3x4,其中x i取0或1,若要使x>-0.5,则x0、x1、x2、x3、x4的取值应满足什么条件? 3. 若32位定点小数的最高位为符号位,用补码表示,则所能表示的最大正数为,最小正数为,最大负数为,最小负数为;若32位定点整数的最高位为符号位,用原码表示,则所能表示的最大正数为,最小正数为,最大负数为,最小负数为。 4. 若机器字长为32位,在浮点数据表示时阶符占1位,阶码值占7位,数符占1位,尾数值占23位,阶码用移码表示,尾数用原码表示,则该浮点数格式所能表示的最大正数为,最小正数为,最大负数为,最小负数为。 5. 某机浮点数字长为18位,格式如图2.35所示,已知阶码(含阶符)用补码表示,尾数(含数符)用原码表示。 (1)将(-1027)10表示成规格化浮点数; (2)浮点数(0EF43)16是否是规格化浮点数?它所表示的真值是多少? 图2.35 浮点数的表示格式 6. 有一个字长为32位的浮点数,格式如图2.36所示,已知数符占1位;阶码占8位,用移码表示;尾数值占23位,尾数用补码表示。 图2.36 浮点数的表示格式 请写出:

(1)所能表示的最大正数; (2)所能表示的最小负数; (3)规格化数所能表示的数的范围。 7. 若浮点数x的IEEE754标准的32位存储格式为(8FEFC000)16,求其浮点数的十进制数值。 8. 将数(-7.28125)10转换成IEEE754标准的32位浮点数的二进制存储格式。 9. 已知x=-0.x1x2…x n,求证:[x]补=+0.00…01。 10. 已知[x]补=1.x1x2x3x4x5x6,求证:[x]原=+0.000001。 11. 已知x和y,用变形补码计算x+y,同时指出运算结果是否发生溢出。 (1)x=0.11011 y=-0.10101 (2)x=-10110 y=-00011 12. 已知x和y,用变形补码计算x-y,同时指出运算结果是否发生溢出。 (1)x=0.10111 y=0.11011 (2)x=11011 y=-10011 13. 已知[x]补=1.1011000,[y]补=1.0100110,用变形补码计算2[x]补+1/2[y]补=?,同时指出结果是否发生溢出。 14. 已知x和y,用原码运算规则计算x+y,同时指出运算结果是否发生溢出。 (1)x=0.1011,y=-0.1110 (2)x=-1101,y=-1010 15. 已知x和y,用原码运算规则计算x-y,同时指出运算结果是否发生溢出。 (1)x=0.1101,y=0.0001 (2)x=0011,y=1110 16. 已知x和y,用移码运算方法计算x+y,同时指出运算结果是否发生溢出。 (1)x=-1001,y=1101 (2)x=1101,y=1011

补码一位乘法之较正法的公式推导

在定点乘法运算中,补码乘法分为补码一位乘法和补码两位乘法。而补码一位乘法又分为较正法和比较法(Booth算法)两种。其中,较正法是比较法的基础。因此,掌握较正法是学习补码一位乘法的关键。下面,我们就对较正法进行深入分析。 一、较正法公式 [XY]补= [X]补*(0.Y1,Y2, … ,Y n) + [-X]补*Y0 其中,X、Y是两个定点数的真值,[Y]补=Y0.Y1,Y2, … ,Y n,Y0是符号位。 为了推导出此公式,我们分情况来进一步分析。 1、Y=0 在这种情况下,[Y]补=Y=0.0,0, … ,0=0。 [XY]补=0 =[X]补*(0.0,0, … ,0)+[-X]补*0 =[X]补*(0.Y1,Y2, … ,Y n)+[-X]补*Y0 2、X>=0, Y>0 在这种情况下,[X]补=X,[Y]补=Y,且Y0=0。不难看出, [XY]补=XY =[X]补*Y =[X]补*(Y0.Y1,Y2, … ,Y n)+[-X]补*0 =[X]补*(0.Y1,Y2, … ,Y n)+[-X]补*Y0 到此为止,我们还有两种情况尚未讨论,一种情况是X<0, Y>0,一种情况是Y<0。前一种情况是本文讨论的重点。与很多教材上的推导方法不同,本文采用与原码一位乘法相对照来证明此种情况。此方法用到的知识点有原码一位乘法和补码移位规则。首先,我们先来回顾一下这两个知识点。 二、原码一位乘法 原码一位乘法基本上是从手算法则演变过来的。我们知道,两个数相乘的手算法则是“绝对值相乘;同号得正,异号得负”。原码一位乘法也采用这种方法。 设[X]原=X s.X1,X2, … ,X n [Y]原=Y s.Y1,Y2, … ,Y n 因为[X]原=X,[Y]原=Y,[XY]原=XY 所以[XY]原=[X]原*[Y]原

间接补码阵列乘法器的设计组成原理课程设计报告

沈阳航空航天大学 课程设计报告 课程设计名称:计算机组成原理课程设计课程设计题目:间接补码阵列乘法器的设计 院(系):计算机学院 专业:计算机科学与技术 班级: 学号: 姓名: 指导教师: 完成日期:2015年1月16日

沈阳航空工业学院课程设计报告 目录 第1章总体设计方案 (1) 1.1设计原理 (1) 1.2设计思路 (2) 1.3设计环境 (2) 第2章详细设计方案 (5) 2.1顶层方案图的设计与实现 (5) 2.1.1创建顶层图形设计文件 (5) 2.1.2器件的选择与引脚锁定 (5) 2.1.3编译、综合、适配 (6) 2.2功能模块的设计与实现 (6) 2.2.1 细胞模块的设计与实现 (6) 2.2.2 全加器模块的设计与实现 (7) 2.3仿真调试 (11) 第3章编程下载与硬件测试 (13) 3.1编程下载 (13) 3.2硬件测试及结果分析 (13) 参考文献 (15) 附录(电路原理图) (16)

第1章总体设计方案 1.1 设计原理 由于计算机采用补码做加减运算,所以设计阵列补码乘法器能避免码制转换,提高机器效率。可以利用原码阵列乘法器来设计补码阵列乘法器,这时需要在计算前先进行原码--补码的转换。乘法器的常规设计是适用“串行移位”和“并行加法”相结合的方法,这种方法并不需要很多器件。然而串行方法毕竟太慢,不能满足科学技术对高速乘法所提出的要求。自从大规模集成电路问世以来,高速的单元阵列乘法器应运而生,出现了各种形式的流水线阵列乘法器,它们属于并行乘法器。阵列乘法器采用类似于人工计算的方法进行乘法运算。人工计算方法是用乘数的每一位去乘被乘数,然后将每一位权值对应相加得出每一位的最终结果。如图1.1所示,用乘数的每一位直接去乘被乘数得到部分积并按位列为一行,每一行部分积末位与对应的乘数数位对齐,体现对应数位的权值。将各次部分积求和,即将各次部分积的对应数位求和即得到最终乘积的对应数位的权值。 011010 * 001001 ____________ 011010 000000 000000 011010 000000 000000 _______________ 00011101010 图1.1 人工计算乘法示例 阵列乘法器采用类似人工的计算方法来完成乘法计算。阵列的每一行送入乘

补码乘法

补码乘法因符号位参与运算,可以完成补码数的“直接”乘法,而不需要求补级。这种直接的 方法排除了较慢的对2求补操作,因而大大加速了乘法过程。 首先说明与直接的补码乘法相联系数学特征。对于计算补码数的数值来说,一种较好的表示 方法是使补码的位置数由一个带负权的符号和带正权的系数。今考虑一个定点补码整数 [N]补=a n-1a n-2…a1a0,这里a n-1是符号位。根据[N]补的符号,补码数[N]补和真值N 的关系 可以表示成: N= n-2 +∑a i2i当a n-1= 0([N]补为正)时i=0 n-2 -[1+∑(1-a i)2i] 当a n-1= 1([N]补为负)时i=0 如果我们把负权因数-2n-1强加到符号位a n-1上,那么就可以把上述方程组中的两个位置 表达式合并成下面的统一形式: (2.29) (2.30) [例19] 已知: [N]补= 01101,[-N]补=10011,求[N]补,[-N]补具有的数值。 [解:]

常规的一位全加器可假定它的3个输入和 2个输出都是正权。这种加法器通过把正权或 负权加到输入/输出端,可以归纳出四类加法 单元。如右表,0类全加器没有负权输入; 1类全加器有1个负权输入和2个正权输入;依次类推。 对0类、3类全加器而言有: S =XYZ +XYZ +XYZ +XYZ C =XY +YZ +ZX 对1类、2类全加器,则有 S =XYZ +XYZ +XYZ +XYZ C =XY +XZ +YZ 表2.3 四类一般化全加器的名称和逻辑符号 注意,0类和3类全加器是用同一对逻辑方程来表征的,它和普通的一位全加器(0类)是一致 的。这是因为3类全加器可以简单地把0类全加器的所有输入输出值全部反向来得到,反之亦然。 1类和2类全加器之间也能建立类似的关系。由于逻辑表达式具有两级与一或形式,可以用 “与或非”门来实现,延迟时间为2T 。 利用混合型的全加器就可以构成直接补码数阵列乘法器。设被乘数A 和乘数B 是两个5位的二 进制补码数,即 A =(a 4)a 3a 2a 1a 0

《计算机组成原理》课程设计_两个数的乘法运算

《计算机组成原理》课程设计报告课程设计题目:两个数的乘法运算 小组成员: …. 完成日期:第十一周

模型机设计实验 一、实验目的 综合运用所学计算机原理知识,设计并实现较为完整的模型计算机。其功能为: 输入两个数,进行两个正数(二进制4位)的乘法运算,输出结果。 二、实验内容 编写程序,运行程序,观察并记录运行结果。 三、实验仪器 1、ZY15CompSys12BB计算机组成原理及系统结构教学实验箱一台 2、排线若干 3、PC机一台 四、预备知识 1、数据格式 8位,其格式如下: 其中第7位为符号位,数值表示范围是:-1≤X<127。 2、指令格式 模型机设计四大类指令共十六条,其中包括算术逻辑指令、I/O指令、访问存储器、转移指令和停机指令。 (1)算术逻辑指令 规定: 算术逻辑指令的名称、功能和具体格式见表2—3。 (2)访存指令及转移指令 模型机设计2条访存指令,即存数(STA)、取数(LAD),2条转移指令,即无条件转移( 负均可)

本模型机规定变址寄存器RI指定为寄存器R2。 (3)I/O指令 其中,在IN 指令中,addr=01,选中“输入”中的开关组作为输入设备,在OUT指令中,addr=10时,表示选中“输出单元”中的数码块作为输出设备。 (4)停机指令 HALT指令,机器码为60H,用于实现停机操作。 3、指令系统 复杂模型机共有16条基本指令,其中算术逻辑指令7条,访问内存指令和程序控制指令4条,输入输出指令2条,其它指令1条。表2-3列出了各条指令的格式、汇编符号、指令功能。 我们依然采用复杂模型机指令系统中的部分指令。 五、实验的机器指令程序如下: 地址内容助记符说明 00 14 IN R0 ; 作计数器用,00000001→R0 01 15 IN R1 ; 输入X的值,0000xxxx→R1 02 05 STA R1 ; X→22H 03 22 04 15 IN R2 ; 输入Y→R2,0000xxxx→R2 05 06 STA R2 ; R2→23H 06 23

用原码一位乘

第六章 20.用原码一位乘、两位乘和补码一位乘( Booth算法)、两位乘计算x ? y。 (1)x= 0.110111, y= -0.101110; (2)x= -0.010111 , y= -0.010101 ; (3)x= 19 , y= 35 ; (4)x= 0.110 11 , y= -0.111 01。 解: (a)原码一位乘: (1) 凶原=0.110111 [y]原=1.101110 x*=0.110111 y*=0.101110 符号位:X 0 Y00 1 1 数值部分的计算: 部分积乘数y* 0.000000 + 0.000000 10111 0 开始部分积为0 乘数为0,加上0 0.000000 0.000000 010111 1 部分积右移一位,乘数右移一位+ 0.110111 乘数为1,加上X* 0.110111 0 0.011011 10 1011 1 部分积右移一位,乘数右移一位 + 0.110111 乘数为1,加上X* 1.010010 10 0.101001 010 101 1 部分积右移一位,乘数右移一位 + 0.110111 乘数为1,加上X* 1.100000 010 0.110000 0010 10 + 0.000000 0.110000 0010 0.011000 00010 1 部分积右移一位,乘数右移一位 + 0.110111 乘数为1,加上X* 1.001111 00010 右移一位 0.100111 100010

[x*y]原=1.100111100010 ⑵ 凶原=1.010111 [y]原=1.010101 x*=0.010111 y*=0.010101 符号位:X 0 Y 0 1 1 0 数值部分的计算: 部分积 乘数y* 0.000000 010101 开始部分积为0 乘数为1,加上X* + 0.010111 0.010111 0.001011 1 01010 1 部分积右移一位,乘数右移一位 + 0.000000 乘数为0,加上0 0.001011 1 0.000101 11 0101 1 部分积右移一位,乘数右移一位 + 0.010111 乘数为1,加上X* 0.011100 11 0.001110 011 010 部分积右移一位,乘数右移一位 + 0.000000 乘数为0,加上0 0.001110 011 0.000111 0011 01 部分积右移一位,乘数右移一位 + 0.010111 乘数为1,加上X* 0.011110 0011 0.001111 00011 0 部分积右移一位,乘数右移一位 + 0.000000 0.001111 00011 0.000111 100011 故,x ? y=0.000111100011 (3) [x]原=0, 0001 0011 [y]原=0, 0010 0011 x*=0001 0011 y*=0010 0011 符号位:X 0 Y 0 0 0 0 00000000 00100011 + 00010011 开始部分积为0 乘数为1,加上X* 数值部分的计算: 部分积 乘数y* 部分积右移一位,乘数右移一位 00010011 00001001 1 001000

补码一位乘的程序设计 计算机组成原理

沈阳 课程设计报告 课程设计名称:计算机组成原理课程设计课程设计题目:定点补码乘法器的程序设计 院(系): 专业: 班级: 学号: 姓名: 指导教师: 完成日期:

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (1) 1.1设计原理 (1) 1.2设计思路 (1) 1.3设计环境 (2) 第2章详细设计方案 (4) 2.1总体方案的设计与实现 (4) 2.1.1总体方案的具体描述 (4) 2.2流程图的设计与实现 (5) 2.2.1流程图具体分析 (5) 第3章程序调试与结果测试 (9) 3.1程序调试 (9) 3.2程序测试及结果分析 (9) 参考文献 (14) 附录 (15)

第1章总体设计方案 1.1设计原理 采用伟福COP2000试验箱,设计并实现定点补码一位乘(booth)。 要求:采用的算法为定点补码一位乘booth算法,乘数和被乘数规定为6位,其中首位为符号位。数据要求以原码的形式输入,采用补码方式进行运算。实验数据从试验箱的开关输入,运算的结果在OUT寄存器中显示。 设计原理:比较YnYn+1的状态执行相应的操作。如下图是补码一位乘的运算规则: 表1.1 Booth算法操作表说明 需要说明的是此操作表是在当n≠0时,当n=0时,判断YnYn+1,运算规则同此操作表只是不移位。即在运算的最后一步,乘积不再右移。 1.2设计思路 (1)构造补码一位乘的初始化所需要的数值 因为补码一位乘的算法需要先求出[X]补、[-X]补、[Q]补,所以先将[X]补、[-X]补、[Q]补分别存贮到0F0H到0F2H存储单元中。因为部分积和附加位的初始值都是0,所以在0E0H单元存入附加位初始值0,在R0中存入部分积初始值0。 其他数的处理:将输入的一个值Q求出补码作为乘数Y,并存入R2中;另一个值X存入R1中,根据它来求出[X]补、[-X]补; 本实验规定乘数和被乘数为6位,数据位为五位,所以要完成六次操作,但

计算机组成原理课设 定点补码一位乘法器的设计

沈阳航空工业学院 课程设计报告 课程设计名称:计算机组成原理课程设计课程设计题目:定点补码一位乘法器的设计 院(系):计算机学院 专业:计算机科学与技术 班级:***** 学号:***** 姓名:***** 指导教师:***** 完成日期:2006年12月31日

沈阳航空工业学院课程设计报告 目录 第1章总体设计方案 (2) 1.1补码乘法器设计原理 (2) 1.2设计思路 (4) 1.3设计环境 (5) 第2章详细设计方案 (5) 2.1补码乘法器电路图的设计与实现 (6) 2.1.1 补码乘法器设计 (6) 2.1.2 器件的选择与引脚锁定 (8) 2.1.3 编译、综合、适配 (8) 2.2功能模块的设计与实现 (9) 2.2.1 两输入三选一选择器模块的设计与实现 (9) 2.2.2 半加器模块的设计与实现 ........................................... 错误!未定义书签。 2.3仿真调试 (10) 第3章编程下载与硬件测试 (12) 3.1编程下载 (12) 3.2硬件测试及结果分析 (12) 参考文献 (14)

第1章总体设计方案 1.1 补码乘法器设计原理 原码乘法的主要问题是符号位不能参加运算,单独用一个异或门产生乘积 的符号位,故自然提出能否让符号数字化后也参加乘法运算,补码乘法就可以实现符号位直接参加运算。 布斯(Booth)算法,它采用相加和相减的操作计算补码数据的乘积,Booth算法对乘数从低位开始判断,根据两个数据位的情况决定进行加法、减法还是仅仅移位操作。 Booth算法操作表示 判断的两个数据位为当前位及其右边的位(初始时需要增加一个辅助位0),移位操作是向右移动。判断被乘数中的最低位以及右边的位(辅助位0),如果

数据结构课程设计(长整数四则运算)汇总

一、需求分析 1.本程序实现计算任意长的整数的四则运算. 以用户和计算机对话的方式,先后输入数字的最多位数,然后程序就计算并显示出这两个数的运算。 2. 利用双向循环链表现实长整数的存储,每个结点含一个整形变量。输入的形式以回车结束,可以直接输入正数或负数,程序会过滤掉无效的字符。按中国对于长整数的表示习惯,每四位一组,除数字和位于首位置的负号外,其它一切字符都将作为分隔符,连续多个分隔符当一个处理。但不使用分隔符也不影响结果。 3.测试数据(1)0; 0; 输出“0”; (2)-2345,6789; -7654,3211; 输出“-1,000,000”; (3)-9999,9999; 1,0000,0000,0000; 输出“9999,0000,0001”; (4)1,0001,0001; -1,0001,0001; 输出“0”; (5)1,0001,0001; -1,0001,0001; 输出“1”; (6)-9999,9999,9999; -9999,9999,9999; 输出“-1,9999,9999,9998”; (7)1,0000,9999,9999; 1; 输出"1,0001,0000,0000". 二、概要设计 为实现上述程序功能,应以双向循环链表表示长整数。为此,需要定义一个抽象数据类型。 1. 抽象数据类型定义为:

ADT OrderedList{ 数据对象:D={ai|ai∈int,i=1,2,...n, n≥0} 基本操作: init(&a,digit4) 操作结果:构造一个位数是digit4*4长整数。 pass(&a,&b,&c) 初始条件:a,b,c都已存在 操作结果:c等于a和b的和。nep(&a) 初始条件:a已存在。 操作结果:a变为输入参数的相反数。printlong(&a) 初始条件:a已存在。 操作结果:按四位一组,分隔符为","的格式,在屏幕上输出a。ston(&S,&a) 初始条件:a已存在。 操作结果:把字符串形式的长数字赋给a。}ADT OrderedList 2.本程序包含两个模块: 1)主程序模块:V oid main(){ 选择操作: 1:帮助。 2:加法。 3:减法。

补码运算加减乘除原理

首先我们来看为什么要使用补码运算法: 因为人脑可以知道第一位是符号位, 在计算的时候我们会根据符号位, 选择对真值区域的加减. (真值的概念在本文最开头). 但是对于计算机, 加减乘数已经是最基础的运算, 要设计的尽量简单. 计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法. 我们知道, 根据运算法则减去一个正数等于加上一个负数, 即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了. 于是人们开始探索将符号位参与运算, 并且只保留加法的方法. 首先来看原码: 计算十进制的表达式: 1-1=0 1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010]原 = -2 如果用原码表示, 让符号位也参与计算, 显然对于减法来说, 结果是不正确的.这也就是为何计算机内部不使用原码表示一个数. 为了解决原码做减法的问题, 出现了反码: 计算十进制的表达式: 1-1=0 1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原= [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0 发现用反码计算减法, 结果的真值部分是正确的. 而唯一的问题其实就出现在"0"这个特 殊的数值上.虽然人们理解上+0和-0是一样的, 但是0带符号是没有任何意义的. 而且会有[0000 0000]原和[1000 0000]原两个编码表示0. 于是补码的出现, 解决了0的符号以及两个编码的问题: 1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补=[0000 0000]原 这样0用[0000 0000]表示, 而以前出现问题的-0则不存在了.而且可以用[1000 0000]表示-128: 接下来我们来看补码运算原理: 在计算机里,如果我们要计算5-3的值,我们既可以用5减去3,也可以用5 加上13。这是为什么呢? 这就像我们的钟表,它从1点走到12点之后,又回到了1点。我们的计算机 也是,从0走到15之后,再往下走就又回到了0,就像我们转了一个圈一样。 我们从5这个位置往回退3个格,就完成了5-3这个计算。我们也可以从5这 个位置往前走,一直走到15,这时我们走了10个格,然后我们继续往前走, 走到0,然后到1,然后就走到了2。这样,我们往前走了13个格之后,也到 了2这个位置。 所以说,在我们这个计算机中,减3和加13是一样的。而3+13=16,我们说在 模16的系统下,3和13是互补的。 这样,我们计算5-3就可以换成5+13。3的二进制表示为0011,5的二进制表 示为0101。这样,0101-0011就可以表示为0101+(-0011)。 我们在计算机中都是把负数用其补码表示,-0011的补码就是10000-0011(即 16-3,也就是13)。10000-0011=1+1111-0011=1+(1111-0011)=1+1100=1101。

课程设计报告 补码变换器

长沙学院课程设计说明书 题目补码变换器的设计 系(部) 电子与通信工程 专业(班级) 电气一班 姓名周鹏 学号 2010042113 指导教师谢明华、刘亮、瞿曌 起止日期 5.21—5.25

数字电子技术课程设计任务书(17) 系(部):电子与通信工程系专业:电气工程及其自动化指导教师:谢明华课题名称补码变换器的设计 设计内容及要求(1)课题内容: ①.设计一个4位的补码变换器,输入为4位的补码,采用2个数码管显示该补码的原码值。 ②.数码管高位显示该补码的符号,如果该补码大于等于0,该符号位数码管显示“0”,反之,显示“一”;数码管低位显示该补码的原码值。 (发挥部分:设计8位的补码变换器) (2)主要任务:完成该系统的硬件设计,调试好后并能通过仿真,最后就课程设计本身提交一篇课程设计说明书。 设计工作量1、系统整体设计; 2、系统设计及仿真 3、在Multisim或同类型电路设计软件中进行仿真并进行演示; 4、提交一份完整的课程设计说明书,包括设计原理、仿真分析、调试过程,参考文献、设计总结等。 进度安排起止日期(或时间量)设计内容(或预期目标)备注第1天课题介绍,答疑,收集材料,设计方案论证 第2天系统设计 第3天系统设计及仿真 第4天系统设计及仿真 第5天系统验收,编写设计说明书 教研室 意见 年月日系(部)主 管领导意见 年月日

长沙学院课程设计鉴定表 姓名周鹏学号2010042 113 专业电气工程及其自动 化 班级一 设计题目补码变换器的设计指导教师谢明华指导教师意见: 评定等级:教师签名:日期: 答辩小组意见: 评定等级:答辩小组长签名:日期: 教研室意见: 教研室主任签名:日期: 系(部)意见: 系主任签名:日期: 说明课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;

直接补码并行乘法

直接补码阵列乘法器的设计原理 * 李澄举 (嘉应学院计算机系,广东梅州514015) [摘要]直接补码阵列乘法器的工作原理是《计算机组成原理》课程的难点。本文从组成阵列乘法器的四类全加器的工作原理分析开始,结合补码和真值的转换关系,通过和手工计算方法的对比,深入浅出地揭示了直接补码阵列乘法器的工作原理。 [关键词] 直接补码阵列乘法器,负权值,一般化全加器 一、引言 直接补码阵列乘法器可以直接求出两个补码的相乘积,由于符号位也参加运算,运算速度比起原码阵列乘法器快得多。5位乘5位的直接补码并行阵列乘法器的逻辑结构如图1所示。 与原码阵列乘法器不同的是,直接补码阵列乘法器除了采用0类全加器之外,还采用了1类和2类全加器,以对应于输入补码符号位的负的位权值;图1左下角的虚框是行波进位加法器,为了缩短加法时间,可以用先行进位加法器代替。 设被乘数和乘数(均为补码)分别为A=(a4)a3a2a1a0,B=(b4)b3b2b1b0,其中a4和b4是符号位,用括号括起来是表示这一位具有负的位权值。根据补码和真值的转换可以知道,补码A的真值a=a4×(-24)+a3×23+a2×22+a1×21+a0×20; 补码B的真值b=b4×(-24)+b3×23+b2×22+b1×21+b0×20; 即在将补码直接转换成真值时,符号位取负权值,其余位取正权值。 如设A=01101(+13),B=11011(-5),计算符号位参加运算A×B的竖式乘法如下:*【作者简介】李澄举(1949—),男,广东梅县人, 嘉应学院计算机系副教授

在这个竖式中,带括位的位具有负的位权值,即(1)=-1,(0)=0。原乘积最高两位0(1) 是带有负位权值的二进制数,相当于0×21+1×(-20) =-1,因(1)1相当于1×(-21)+1 ×20 =-1,故0(1)可以写成(1)1,这扩充符号位(1)便是乘积的符号位。由此可见,在竖式乘法中,若乘积中间位有带负位权值的(1),可照此办法将(1)左移或消去,如果(1)能移到乘积最左边,则说明乘积为负,这(1)便是补码符号位;否则乘积为正,应在乘积最左边的1之左边加一个0作为补码符号位。 二、各类全加器的加法逻辑 要了解直接补码阵列乘法器的工作原理,首先要了解各类全加器的工作原理。 常规的一位全加器可假定它的3个输入和2个输出都是正权。这种加法器通过把正权 或负权加到 输入/输出端, 可以归纳出 四类加法单 元。如图2所 示各类全加 器的逻辑符 号,图中凡带有小圆圈的输入端都是负位权值的输 入端、带有小圆圈的输出端都是负位权值的输出 端。由图可见,0类全加器没有负权输入和负权输 出;1类全加器有1个负权输入和1个负权输出;2 类全加器有2个负权输入和1个负权输出;3类全 加器有3个负权输入和3个负权输出;各类全加器 就是按负权值输入的个数命名的。 1、0类全加器 由于0类全加器3个输入X 、Y 、Z 和2个输出 S (本位)和C (进位)都是正权,它的输出函数 表达式为我们所熟知: ZX YZ XY C XYZ Z Y X Z Y X Z Y X S 00++=+++=。 2、1类全加器 1类全加器只有1个负权输入和1个负权的本 位输出。对于负权输入,如竖式乘法可见,加法的 结果是正权的值的和与负权的值相减。但一位的减 法不同于做n 位定点整数的补码减法,1类全加器

Verilog实现补码一位乘法课程设计

计算机科学与工程学院 课程设计报告 题目全称: Verilog实现补码一位乘法 课程名称:计算机组成原理 指导老师:文泉职称: 序号学生姓名学号班号成绩 1 王清2806306025 28063060 2 林昕2806306028 28063060 3 陈琦凯2806306013 28063060 4 彭程2806306024 28063060 5 陈云川2806306012 28063060 6 闫科2806306008 28063060 指导老师评语: 指导签字: 课程设计成绩: 设计过程表现设计报告质量总分

目录 第 1 章序言 (1) 1.1 课程设计目的 (1) 1.2 课程设计作用 (2) 1.3 课程设计需求 (2) 1.3.1Xilinx设计软件 (2) 1.3.2 在xilinx ISE集成开发环境下,使用Verilog HDL (2) 第 2 章正文 (4) 2.1 实现补码一位乘法的原理 (4) 2.2 比较补码一位乘法方法 (6) 2.2.1 分步乘法 (6) 2.2.2 运算规则 (7) 2.2.3 运算实例 (7) 2.2.4算法流程图 (8) 2.2.5 比较法(Booth算法) (8) 2.3课程设计实验代码(概要设计) (10) 2.4课程设计详细设计方案 (12) 2.4.1顶层方案图的设计与实现 (13) 2.4.2 功能模块的设计与实现 (14) 2.4.3 仿真调试 (13) 第 3 章结论 (16) 3.1课程设计总结 (16)

摘要 本定点补码一位乘法器,具有良好的可移植性。本文介绍了定点补码一位乘法的概念已及定点补码一位乘法的的原理和方法,分析了定点补码一位乘法器的设计,并详细介绍了使用EDA环境,Xilinx设计软件,在XCV200实验板的XCV200可编程逻辑芯片中上进行定点补码一位乘法器的移植。通过测试,系统移植成功。 关键词:定点补码;EDA;一位乘法器;设计

定点补码一位除法的实现方案

定点补码一位除法的实现方案 类别:网文精粹阅读:1040 定点补码一位除法的实现方案 与补码乘法类似,也可以用补码直接完成除法运算,即用[X]补/[Y] 补直接求得[X/Y]补。补码除法的规则比原码除法的规则复杂一些。当除数和被除数用补表示时,判别是否够除,就不再是简单地用被除数(余数)减去除数,而是要比较它们的绝对值的大小。因此,若二数同符号,要用减法,若异号,则要用加法,请注意,这样求出来的商是反码形式的。 我们不准备对此进行更多地讨论,可以给出其运算规则如下: (1) 开始时,求第一位商,如果被除数与除数同号, 用被除数减去除数,若二数异号,则用被除数加上除数的办法处理。 (2) 运算过程中确定商的值,若余数与除数同号,上商1,左移一位后下次用余数减除数操作求商,若余数与除数异号,上商0,左移一位后下次用余数加除数操作求商。 (3) 商的符号,是在第一次求商试算时求出的,若定点除不溢出,得到的就是正确的 符号位的值。 (4) 商的修正问题。在对精度要求不高时,将商的最低一位恒置1。最大误差为| 2-n |。 若对商的精度要求较高,可对n位数求商n+1次,按得到的不同结果对商进行修正。当商为负时,要在商的最低一位加1,从反码的结果得到商的正确的补码值。 下面给出补码除法执行运算过程的一个实例。 假定[X]补=1 0111 , [Y]补= 0 1101, 则[-Y]补= 1 0011 再求下去,可得下一位商并舍入;也可以不执行最后一步求商操作,而直接用在最低位上商1来结束除运算过程。 除法运算也有快速除运算的各种方案,如一次求得1位或多位商的跳0跳1法,专用的高速除法装置,用快速乘法器完成快速除运算等。由于在程序中,除法指令的使用频度不高,因此一般机器中较少采用快速除法方案。

组成原理--(课程设计)一台模型计算机的设计与调试

计算机组成原理课程设计 一、课程设计题目:一台模型计算机的设计与调试 二、课程设计的目的: 1、融会贯通教材各章的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识,加深计算机工作中“时间-空间”概念的理解,从而清晰地建立计算机的整机概念。 2、学习设计和调试计算机的基本步骤和方法,培养科学研究的独立工作能力,取得工程设计和调试的实践和经验。 三、课程设计要求: 1、根据给定的数据格式和指令系统,设计一台微程序控制的模型计算机。 2、根据设计图,在QUARTUS II环境下仿真调试成功。 3、在调试成功的基础上,整理出设计图纸和相关文件,包括: A、总框图(数据通路图); B、微程序控制器逻辑图; C、微程序流程图; D、微程序代码表; E、设计说明书; F、工作小结。 四、课程设计报告内容: 1、系统主要功能 A、数据格式 数据字规定采用定点整数补码表示法,字长8位,其中最高位为符号位,其格式如下: B、指令格式 本实验设计使用5条机器指令,其格式与功能说明如下: IN ADD STA OUT

JMP IN指令为单字长(字长为8bits)指令,其功能是将数据开关的8位数据输入到R 寄存器。 ADD指令为双字长指令,第一个字为操作码,第二个字为操作数地址,其功 能是将R 0寄存器的内容与内存中地址为A的数相加,结果存放在R 寄存器中。 STA指令为双字长指令,第一个字为操作码,第二个字为操作数地址,其功能是将R 寄存器中的内容存储到以第二个字为地址的内存单元中。 OUT指令为双字长指令,第一个字为操作码,第二个字为操作数地址,其功能是将内存中以第二个字为地址的内存单元中的数据读出到数据总线,显示之。 JMP指令为双字长指令,第一个字为操作码,第二个字为操作数地址,其功能是程序无条件转移到第二个字指定的内存单元地址。 2、总体设计 总体设计的主要任务是选定所用器件,设计指令流和数据流的数据通路,根据指令系统的要求,总体设计的主要步骤如下: A、对指令系统中的各条指令进行分析,得出所需要的占领周期与操作序列,以 便确定各器件的类型和数量; B、构成一个总框图草图,进行各逻辑部件之间的互相连接,即初步确定数据通 路,使得由指令系统所要求的数据通路都能实现,并满足技术指标的要求; C、检查全部指令周期的操作序列,确定所需要的控制点和控制信号; D、检查所设计的数据通路,尽可能降低成本,简化线路,优化性能。 以上过程可以反复进行,以便得到一个较好的方案。 下图给出了一个没有考虑乘法和除法指令操作的总框图参考方案,在此方案确定后,应检查所选用的各个器件是否满足数据通路的要求。数据通路的设计和器件的选择应同时进行,接入总线的器件都要有三态输出,以便与总线连接。图中所示的方案采用单总线结构,使用的许多器件都是三态输出,这种方案便于总线的连接和扩展,但缺点是指令和数据的传送都要经过总线,因此对总线的使用权就要分配得当。

相关文档