补码一位乘法
- 格式:pptx
- 大小:150.49 KB
- 文档页数:6
第三章运算方法与运算器3.1定点数运算及溢出检测随堂测验1、定点运算器可直接进行的运算是() (单选)A、十进制数加法运算B、定点数运算C、浮点数运算D、定点数和浮点数运算2、设计计算机字长为8位,两个十进制数X = -97 ,Y = 63, [x]补- [y]补的结果为()(单选)A、01100000B、11011110C、负溢出D、正溢出3、下列关于定点运算溢出的描述中,正确的是( ) (多选)A、补码数据表时,同号数相加可能发生溢出B、补码数据表时,异号数相减可能发生溢出C、参加运算的两个数,当作为有符号数和无符号数进行加法运算时,不可能两者都溢出D、溢出检测既可用硬件实现,也可用软件实现4、设X为被加(减)数,Y为加(减)数,S为运算结果,均采用补码数据表示,下列关于溢出电路设计的描述中,正确的是()(多选)A、采用单符号位时,直接用X、Y和S的符号位就可设计溢出监测电路B、采用双符号位时,可直接用S的双符号位设计溢出检测电路C、采用单符号位时,可直接用X、Y最高有效数据位运算后的进位位和S的进位设计溢出监测电路D、对无符号数的加/减运算,可利用运算器的进位信号设计溢出检测电路3.2 定点数补码加、减运算器设计随堂测验1、如图所示为基于FA的运算器:为了利用一位全加器FA并配合使用控制信号P,当P= 0/1时实现A、B两个数的加法/减法运算,图中空白方框处电路的逻辑功能应该是()(单选)A、与门B、或门C、异或门D、非门2、如图所示为带溢出检测功能的运算器该电路完成的溢出检测功能是()(多选)A、带符号数的加法溢出检测B、带符号数的加法溢出检测C、无符号数的加法溢出检测D、无符号数减法的溢出检测3、下列关于并行进位的描述中,正确的是()(多选)A、并行进位可以提高运算速度B、并行进位模式下,各进位位采用不同电路各自产生,相互间不再有依存关系C、采用先行进位部件和ALU模块可构建长度可变的并行进位运算器D、并行进位只对加法有效,而对减法无效4、四位并行ALU中有两个特殊的输出端,分别是:G =A3B3+(A3+B3)(A2B2+(A2+B2)(A1B 1+ (A1+B1) A 0B0)) 为进位产生函数,P=(B3+A3) (B2+A2)( A1+B1 ) (A0+B0)为进位传递函数下列关于P、G的描述中,正确的是()(多选)A、设计P和G的目的是为了构建位数更长的并行ALUB、P和G对算术运算和逻辑运算都有意义C、P的作用是将本片ALU的最低进位输入位传递到本片ALU的最高进位输出端D、G的作用是根据参与运算的两个数据产生本片ALU的最高进位输出3.3 原码一位乘法随堂测验1、设计算机字长为8位,X = - 19,对该分别执行算术左移和逻辑左移一位后的结果分别为()(单选)A、11011010 ,11011010B、11110010 ,11110010C、11011000 ,11011000D、11110000 ,111100002、设计算机字长为8位,X = - 19,对该分别执行算术右移和逻辑右移一位后的结果分别为()(单选)A、11111001,11111001B、11111001,01111001C、11110110,01110110D、11110110,111101103、关于原码一位乘法的下列描述中,正确的是()(多选)A、数据取绝对值参加运算B、符号位单独处理C、乘法执行过程中的所有移位都是算术移位D、最后的结果由部分积寄存器和乘数寄存器共同保存4、计算机字长为n位, 下列关于原码一位乘法操作过程的描述中,正确的是() (多选)A、乘法过程中共执行n 次算术右移和n 次加法运算B、乘法过程中共执行n -1次算术右移和n-1 次加法运算C、乘法过程中,部分积加0 还是加x的绝对值,取决于此时的YnD、乘法过程中右移部分积是为了使部分积与下次的加数按位对齐3.4 补码一位乘法随堂测验1、16位补码0X 8FA0扩展为32位的结果是() (单选)A、0X 0000 8FA0B、0X FFFF 8FA0C、0X FFFF FFA0D、0X8000 8FA02、计算机字长为n位, 下列关于补码一位乘法操作过程的描述中,正确的是() (多选)A、乘法过程中共执行n 次加法和n-1 部分积右移B、乘法过程中共执行n -1次算术右移和n-1 次加法运算C、乘法过程中,部分积加0 、[x]补还是[-x]补,取决于此时的Yn+1 与Yn的差D、乘法过程中右移部分积的目的是为了使部分积与下次的加数对齐3、关于补码码一位乘法的下列描述中,正确的是()(多选)A、符号位和数据位一起参加运算B、运算开始前,需要在乘数寄存器Y后面补上Yn+1且其初值为0C、乘法执行过程中的对部分积的移位是算术右移D、最后的结果由部分积寄存器和乘数寄存器共同保存3.5 乘法运算器设计随堂测验1、下图为原码一位乘法器原理图正确的是()(单选)A、A: 部分积寄存器B:乘数寄存器C: |X| D: YnB、A: 部分积寄存器B:乘数寄存器C: |X| D: Yn+1C、A: 被乘数寄存器B:乘数寄存器C: |X| D: YnD、A: 被乘数寄存器B:乘数寄存器C: |X| D: Yn+12、下图为补码一位乘法原理图正确的是() (单选)。
补码一位乘法器logisim实验步骤补码一位乘法器的实验步骤如下:步骤1:打开Logisim并创建新电路。
选择"文件"->"新建",然后选择"干净的电路"。
步骤2:从左侧的元件面板中选择所需的元件,在本实验中我们需要的元件有:- 输入端口(选择位数适当的位宽)- 与门- 异或门- 输出端口(选择位数适当的位宽)步骤3:连接输入端口和与门。
将与门拖动到电路编辑区域,并连接到输入端口。
步骤4:连接异或门和输出端口。
将异或门拖动到电路编辑区域,并连接到输出端口。
步骤5:添加中间变量。
我们需要两个中间变量a和b来存储输入的两个操作数。
从左侧的元件面板选择一个“双输入线”元件,并将其拖动到电路编辑区域。
重复此步骤来添加第二个中间变量。
步骤6:连接中间变量和与门。
将中间变量a和b连接到与门的两个输入端口处。
步骤7:添加补码转换电路。
我们需要一个电路来将输入的补码转换为二进制表示形式。
从左侧的元件面板选择一个“4位补码转换”元件(这里的位数根据实验要求选择),然后将其拖动到电路编辑区域。
将中间变量a和b连接到补码转换电路的输入端口处。
步骤8:连接补码转换电路和异或门。
将补码转换电路的输出连接到异或门的两个输入端口处。
步骤9:添加输入变量。
我们需要一个变量来控制乘法器是否进行计算。
从左侧的元件面板选择一个“输入”元件,并将其拖动到电路编辑区域。
步骤10:连接输入变量和与门。
将输入变量连接到与门的两个输入端口处。
步骤11:完成连接。
确保所有元件都正确连接,没有无效或断开的连接。
步骤12:设置输入变量的值。
右键单击输入变量并选择“编辑”来设置其值。
步骤13:运行仿真。
点击Logisim的“模拟”按钮,然后选择“仿真”。
步骤14:观察输出结果。
在仿真窗口中查看输出结果,确认乘法器是否按预期工作。
步骤15:保存电路。
选择“文件”->“保存”来保存电路。
计算机科学与工程学院课程设计报告题目全称:Verilog实现补码一位乘法课程名称:计算机组成原理指导老师:文泉职称:指导老师评语:指导签字:课程设计成绩:目录第 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;一位乘法器;设计第1 章序言当今时代是一个信息的时代,我们的生活与信息紧密相连。
伴随着计算机的生活化,我们更近一步接触到信息技术的发展。
如今,计算机技术迅猛发展,它的发展不仅仅表现在软件领域取得辉煌的成就,同时也在硬件方面也取得了长足的发展。
因此,很多功能已经可以通过硬件来实现。
但是通常对嵌入式软件的基本要求是体积小、指令速度快、具有较好的裁减性和可移植性,目前这方面的设计已经很多也很优异,但是基于补码一位乘法器的实现,克服了定点补码乘法器的缺点,实现更加方便有效。
计算机中的原码一位乘和补码一位乘原码1位乘法在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号按异或运算得到,而乘积的数值部分则是两个正数相乘之积。
设n位被乘数和乘数用定点小数表示(定点整数也同样适用) 被乘数?[x]原?=?xf?.x0?x1?x2?…?xn?乘数?[y]原?=?yf?.y0?y1?y2?…?yn乘积?[?z?]原?= (?xf⊕yf?). (0.?x0?x1?x2?…xn)(0 .?y1?y2?…yn)式中,xf为被乘数符号,yf为乘数符号。
乘积符号的运算法则是:同号相乘为正,异号相乘为负。
由于被乘数和乘数和符号组合只有四种情况(xf?yf?= 00,01,10,11),因此积的符号可按“异或”(按位加)运算得到。
数值部分的运算方法与普通的十进制小数乘法相类似,不过对于用二进制表达的数来说,其乘法规则更为简单一些:从乘法y的最低位开始,若这一位为“1”,则将被乘数x写下;若这一位为“0”,则写下全0。
然后再对乘数y的高一位进行的乘法运算,其规则同上,不过这一位乘数的权与最低位乘数的权不一样,因此被乘数x要左移一位。
依次类推,直到乘数各位乘完为止,最后将它们统统加起来,便得到最后乘积z?。
?设?x?= 0.1011,y?= 0.1101,让我们先用习惯方法求其乘积,其过程如下:如果被乘数和乘数用定点整数表示,我们也会得到同样的结果。
但是,但是人们习惯的算法对机器并不完全适用。
原因之一,机器通常只有n位长,两个n位数相乘,乘积可能为2n位。
原因之二,只有两个操作数相加的加法器,难以胜任将n个位积一次相加起来的运算。
为了简化结构,机器通常只有n位长,并且只有两个操作数相加的加法器。
为此,必须修改上述乘法的实现方法,将?x?·?y?改写成适于如下定点机的形式:一般而言,设被乘数?x?、乘数?y?都是小于?1?的?n?位定点正数:x= 0 .x1x2…xn;y= 0 .y1y2…yn其乘积为x·y=x·( 0.y1y2…yn)=x·(y12-1?+?y2?2?-2?+?…?+?yn?2?-n)= 2-1(y1x+ 2-1(y2x+ 2-1?(…?+ 2-1?(?yn-1?x?+ )…))令?zi?表示第?i?次部分积,则上式可写成如下递推公式:z1= 2-1(ynx+z0)zi= 2-1(yn-i+1x+zi-1) ?(2.3.2)zn=x·y= 2-1(?y1x?+?zn-1)显然,欲求x·y,则需设置一个保存部分积的累加器。
第三章运算方法和运算器3.1补码的移位运算1、左移运算:各位依次左移,末位补0对于算术左移,若没有改变符号位,左移相当于乘以2。
2、右移运算:算术右移:符号位不变,各位(包括符号位)依次右移。
(相当于除以2)逻辑右移:最高位补0,其余各位依次右移例1:已知X=0.1011 ,Y=-0.0101 求 [0.5X]补;[0.25X]补;[-X]补;2[-X]补;[0.5Y]补;[0.25Y]补; [-Y]补;2[-Y]补[X]补=0.1011 [Y]补=1.1011[0.5X]补=0.01011 [0.5Y]补=1.11011[0.25X]补=0.001011 [0.25Y]补=1.111011[-X]补=1.0101 [-Y]补=0.01012[-X]补=0.1010 (溢出) 2[-Y]补=0.10103.2定点加减法运算及其实现3.2.1 补码加减法运算方法由于计算机中的进行定点数的加减运算大都是采用补码。
(1)公式:[X+Y]补=[X]补+[Y]补[X-Y]补=[X]补+[-Y]补(证明过程见教材P38)例1 X=0.001010 Y=-0.100011 求[X-Y]补,[X+Y]补解:[X]补=0.001010 [-Y]补=0.100011则 [X-Y]补=[X]补+[-Y]补=0.001010 + 0.100011=0.101101 [X]补=0.001010 [Y]补=1.011101则 [X+Y]补=[X]补+[Y]补=0.001010 + 1.011101=1.100111例2:已知X=+0.25,Y=-0.625,求X+Y; X-Y写出计算的过程.例3:已知X=25,Y=-9,求X+Y; X-Y写出计算的过程.例4:已知X=-25,Y=-9,求X+Y; X-Y写出计算的过程.解: (8位二进制表示)例2: X=0.0100000 Y=-0.1010000[X]补=0.0100000 [Y]补=1.0110000则 [X+Y]补=[X]补+[Y]补=0.0100000 + 1.0110000=1.1010000[X+Y]原=-0.0110000=(-0.375)D[X]补=0.0100000 ,[-Y]补=0.1010000则 [X-Y]补 = [X]补+[-Y]补 = 0.0100000+0.1010000=0.1110000[X+Y]原 = 0.1110000 =(0.875)D例3: X=+0011001 Y=-0001001[X]补=00011001,[Y]补=11110111则 [X+Y]补 = [X]补+[Y]补= 00011001 + 11110111= 00010000[X+Y]原 =+0010000=(+16)D[X]补= 00011001 ,[-Y]补= 00001001则 [X-Y]补 = [X]补+[-Y]补= 00011001 + 00001001= 00100010[X+Y]原 = +0100010 =(34)D例4: X=-0011001 Y=-0001001[X]补=11100111,[Y]补=11110111则 [X+Y]补 = [X]补+[Y]补= 11100111 + 11110111[X+Y]原 =-00100010=(-34)D[X]补= 11100111 ,[-Y]补= 00001001则 [X-Y]补 = [X]补+[-Y]补= 11100111 + 00001001= 11110000[X+Y]原 = -0010000 =(-16)D3.2.2 定点加减法运算中的溢出问题溢出:运算结果大于机器所能表示的最大正数或者小于机器所能表示的最小负数.溢出只是针对带符号数的运算.比如:[X]补=0.1010,[Y]补=0.1001,那么[X]补+[Y]补=1.0011(溢出)溢出是一种错误,计算机中运算时必须能够发现这个现象,并加以处理判断溢出的方法:1、采用变形补码法[X+Y] 变补=[X] 变补+[Y] 变补[X-Y] 变补=[X] 变补+[-Y] 变补例1 X=0.1011 Y=0.0011 求[X+Y]补解: [X]变补 = 00.1011, [Y]变补 = 00.0011[X+Y]变补 = 00.1011 + 00.0011 = 00.1110所以 [X+Y]补 = 0.1110例2 X=0.1011 Y=0.1001 求[X+Y]补解: [X]变补 = 00.1011 [Y]变补 = 00.1001[X+Y]变补 = 00.1011 + 00.1001 = 01.0100运算结果的两符号位是01,不相同,发生溢出,因第一符号位是0,代表正数,所以称这种溢出为“正溢出”。
[计算机组成原理]Booth算法——补码⼀位乘法x * y = z运算规则:1.和原码⼀位乘法不同,补码⼀位乘法的符号位是参加运算的,且运算结果和所有参加运算的数都是补码形式。
2.乘数 x 取双符号位参与运算,部分积的初始值为0;乘数 y 取单符号位参与运算。
3.乘数 y ⾸先在末尾添加⼀个辅助位 0 ,每次讨论都是取 y 的最后两位,但每次移动仅移动⼀位。
4.判断 y 的最后两位是规则如下:00 或者 11 时,直接右移⼀位;01时,先加 x的补,然后右移⼀位;10时,先加 -x的补,然后右移⼀位。
5.有个特例,最后⼀步不⽤右移了。
举个栗⼦:设 x = -0.1101 , y = 0.1011则 [x]补 = 11.0011 ,[-x]补 = 00.1101⼀开始部分积初始值:00.0000先给y补⼀个辅助位0,得到 y = 0.10110⾸先,从y的最后两位开始看,0.10110 ,为 10 ,对应规则 “先加[-x]补,再右移⼀位” :部分积 00.0000 + 00.1101 = 00.1101 ,右移⼀位得到 00.01101接着,y 右移⼀位再看,0.10110,为 11 ,对应规则“直接右移⼀位”:部分积 00.001101然后,y再右移⼀位再看,0.10110 ,为 01 ,对应规则“先加[x]补,再右移⼀位”:00.001101 部分积+ 11.0011 [x]补--------------------= 11.011001 部分积部分积 00.001101 + 11.0011 = 11.011001 ,右移⼀位得到11.1011001 (注意这⾥符号位移动后,仍然保持为 11)接着,y再右移⼀位再看,0.10110 ,为 10 ,对应规则“先加[-x]补,再右移⼀位”:部分积 11.1011001 + 00.1101 = 00.1000001 ,右移⼀位得到 00.01000001最后,y再右移⼀位再看,0.10110 ,为 01 ,对应规则“先加[x]补,再右移⼀位”:部分积 00.01000001 + 11.0011 = 11.01110001 ,但这已经是最后⼀步,不⽤再右移了,所以最后结果是 1.01110001 (注意:这是x*y的补码)。
补码⼀位乘法
这⼏天疫情在家看⽹课,学校的补码视频讲的太枯燥了。
上B站结果就缺这⼀节 。
这就很悲伤呀。
补码乘法说来也简单,和原码差不多,符号位也要参与运算。
⾸先来看例⼦
设[X]补=X0.X1X2X3...Xn[Y]补=Y0.Y1Y2Y3...Yn
则有:[X∗Y]补=[X]补∗(0.Y1Y2Y3...Yn)−Y0∗[X]补
展开合并后有:[X∗Y]补=[X]补∗∑(Y n+1−Y n)2-n
看黄⾊部分,也就是说我们到底是加上X补还是减⼜或者是0,就看倒数第⼆位的值于倒数第⼀位的差值。
也就是说:
在遵循原码乘法的规则上,对部分积的加减做处理
1.Y n=Y n+1,那么部分积加上零(0*[X]补当然是零啦),再右移⼀位
2.Yn <Yn+1(01),部分积加上[x]补,再右移⼀位
3.Yn >Yn+1(10),部分积加上[-x]补,再右移⼀位
这下诸位应该看懂了吧,怎么加,就是⼀直⽤倒数第⼆位减去倒数第⼀位的差值再去乘以X的补就OK了。
课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点补码一位乘法器的设计院(系):计算机学院专业:计算机科学与技术班级:*****学号:*****姓名:*****指导教师:*****完成日期: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),如果为00,则只进行移位操作;之后在判断移位之后的最后两位,如果为01,则进行加法操作并进行移位操作;如果最后两位为10,则进行减法操作并移位,这个减法操作相当于减去2x的值;判断最后的差值,如为1,则部分积加[X]补;如为0,则不分积加0;如为-1,则部分积加[-X]补,最后一次不移位。
补码一位乘方法
补码乘法方法与一般的二进制乘法类似,但在处理负数时需要考虑补码的规则。
两个正数相乘:
以二进制形式表示两个正数。
使用普通的二进制乘法规则进行相乘。
得到的结果为正数。
两个负数相乘:
以补码形式表示两个负数。
使用普通的二进制乘法规则进行相乘。
得到的结果需要按照补码的规则进行解释和转换,通常需要考虑符号位以及溢出等情况。
在补码表示法中,对于负数,其最高位(符号位)为1。
乘法过程中,负数的乘法可以按照一般的二进制乘法法则进行。
但是,在获得结果后,需要根据计算的结果,以及最高位是否溢出等情况,对结果进行解释。
这个过程中特别需要注意的是,补码乘法也可能会导致溢出问题,因此需要对结果进行适当的溢出处理。
计算机组成原理张功萱顾一禾王晓峰编著选择、填空、是非题解答第一章1.9单选题(1)1946年,美国推出了世界上第一台电子数字计算机,名为__A_oA.ENIACB. UNIV AC-IC. ILLIAC-IVD. EDVAC(2)在计算机系统中,硬件在功能实现上比软件强的是__C__ oA.灵活性强B.实现容易C.速度快D.成本低(3)完整的计算机系统包括两大部分,它们是__C ________ oA.运算器与控制器B.主机与外设C.硬件与软件D.硬件与操作系统(4)在下列的描述中,最能准确反映计算机主要功能的是___D_oA.计算机可以代替人的脑力劳动B.计算机可以存储大量的信息C.计算机是一种信息处理机D.计算机可以实现高速运算(5)存储程序概念是由美国数学家冯•诺依曼在研究 D 时首先提出来的。
A.ENIACB. UNIVAC-IC. ILLIAC-IVD. EDVAC(6)现代计算机组织结构是以__B_为中心,其基本结构遵循冯•诺依曼思想。
A.寄存器B.存储器C.运算器D.控制器(7)冯?诺依曼存储程序的思想是指___C___ oA.只有数据存储在存储器B.只有程序存储在存储器C.数据和程序都存储在存储器D.数据和程序都不存储在存储器1.10填空题(1)计算机CPU主要包括①和②两个部件。
答:①运算器②控制器(2)计算机的硬件包括①、②、③、④和⑤等5大部分。
答:①运算器②控制器③存储器④输入设备⑤输出设备(3)计算机的运算精度与机器的①有关,为解决精度与硬件成本的矛盾, 大多数计算机使用②答:①字长②变字长运算(4)从软、硬件交界面看,计算机层次结构包括①和②两大部分。
答:① 实机器② 虚机器(5)计算机硬件直接能执行的程序是①程序,高级语言编写的源程序必须经过②翻译,计算机才能执行。
答:①机器语言②语言处理程序(6)从计算机诞生起,科学计算一直是计算机最主要的①°答:①应用领域(7)银河I ( YH-I )巨型计算机是我国研制的①°答:① 第一台巨型计算机1.11是非题(1) 微处理器可以用来做微型计算机的 CPU 。