直接补码并行乘法
- 格式:doc
- 大小:272.00 KB
- 文档页数:7
6位有符号补码阵列乘法器一. 简介在计算机科学和数字电路设计中,6位有符号补码阵列乘法器是一种重要的电路组件。
补码是一种表示有符号数的编码方式,能够有效地表示负数。
本文将深入探讨6位有符号补码阵列乘法器的原理、设计和应用,并分享对该电路的观点和理解。
二. 原理1. 有符号补码表示有符号补码是一种在计算机中表示负数的常用编码方式。
在6位有符号补码中,最高位表示符号位,0代表正数,1代表负数。
其余位表示数值部分,通过取反加一的方式对负数进行编码。
2. 阵列乘法器阵列乘法器是一种用于执行乘法运算的电路。
6位有符号补码阵列乘法器能够以比较高的效率和较小的面积完成乘法运算。
其主要原理是将乘法运算拆分为多个部分,使用并行的方式进行计算,并最后将结果相加得到最终的乘积。
三. 设计1. 输入和输出6位有符号补码阵列乘法器一般包含两个输入,分别是被乘数和乘数,以及一个输出,即乘积。
被乘数和乘数的输入位数都为6位。
2. 乘法计算乘法计算是6位有符号补码阵列乘法器的核心部分。
它首先对乘数进行拆分,每一位与被乘数相乘,从而生成多个部分乘积。
接下来,对这些部分乘积进行累加,最后得到乘积的结果。
该阵列乘法器的设计需要考虑到乘法运算可能会出现的溢出和进位问题。
3. 控制逻辑6位有符号补码阵列乘法器还需要一些控制逻辑来控制乘法计算的顺序和结果的输出。
这些控制逻辑一般包括时钟信号、使能信号和清零信号等。
四. 应用1. 数字信号处理6位有符号补码阵列乘法器在数字信号处理领域得到广泛应用。
它能够高效地进行乘法运算,常用于滤波器等算法的实现。
2. 图像处理图像处理中经常需要进行像素之间的乘法运算,例如图像增强、滤波和特征提取等。
6位有符号补码阵列乘法器可以在图像处理中快速完成这些乘法运算。
3. 神经网络神经网络是人工智能领域的热门研究方向。
6位有符号补码阵列乘法器能够提供高效的乘法运算支持,可以在神经网络的训练和推理过程中扮演重要角色。
补码乘法运算
补码乘法运算是指在计算机中进行的两个补码数相乘的运算。
补码乘法运算的步骤如下:1.将两个补码数的符号位相乘,得到结果的符号位。
2.将两个补码数的绝对值相乘,得到结果的绝对值。
3.将结果的绝对值转换为补码形式。
4.如果结果的符号位与原来两个补码数的符号位不同,则说明结果为负数,需要将结果取反并加1。
例如,计算-3乘以5的结果:-3的补码为11111101,5的补码为00000101。
符号位相乘得到1,结果为负数。
绝对值相乘得到11111011,转换为补码形式为10000101。
由于结果为负数,需要将结果取反并加1,得到补码为01111011,即-15。
因此,-3乘以5的结果为-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 章序言当今时代是一个信息的时代,我们的生活与信息紧密相连。
伴随着计算机的生活化,我们更近一步接触到信息技术的发展。
如今,计算机技术迅猛发展,它的发展不仅仅表现在软件领域取得辉煌的成就,同时也在硬件方面也取得了长足的发展。
因此,很多功能已经可以通过硬件来实现。
但是通常对嵌入式软件的基本要求是体积小、指令速度快、具有较好的裁减性和可移植性,目前这方面的设计已经很多也很优异,但是基于补码一位乘法器的实现,克服了定点补码乘法器的缺点,实现更加方便有效。
计算机学科专业基础综合组成原理-数据的表示和运算(一)(总分:208.00,做题时间:90分钟)一、单项选择题(总题数:39,分数:78.00)1.计算机系统中采用补码运算的目的是为了 ____ 。
(分数:2.00)A.与手工运算方式保持一致B.提高运算速度C.简化计算机的设计√D.提高运算的精度解析:补码运算能把减法化为加法来完成,从而使得运算器中不需配置减法电路,节省了硬件线路,简化了运算器的设计。
2.32位浮点数格式中,符号位为1位,阶码为8位,尾数为23位,则它所能表示的最大规格化数为____ 。
∙ A.+(2-2-23)×2+197∙ B.+(1-2-23)×2+127∙ C.+(2-2-23)×2+255∙ D.2127-2-23(分数:2.00)A. √B.C.D.解析:最大的格式化负数应该是阶码最大,且尾数绝对值最大的数。
3.长度相同但格式不同的2种浮点数,假设前者阶码长、尾数短,后者阶码短、尾数长,其他规定均相同,则它们可表示的数的范围和精度为 ____ 。
(分数:2.00)A.两者可表示的数的范围和精度相同B.前者可表示的数的范围大但精度低√C.后者可表示的数的范围大且精度高D.后者可表示的数的范围大且精度低解析:在浮点数表示法中,阶码影n向表示的范围,阶码越长表示的范围越大,尾数影响精度,尾数越长,表示的精度越高。
4.下列说法正确的是 ____ 。
(分数:2.00)A.采用变形补码进行加减运算可以避免溢出B.只有定点数运算才有可能溢出,浮点数运算不会产生溢出C.只有带符号数的运算才有可能产生溢出√D.只有将两个正数相加时才有可能产生溢出解析:采用排除法解题,变形补码能判溢出,但是不能避免溢出,所以A错。
浮点数的阶码超过上限(最大数),也会产生溢出,B错。
同号数相加或者异号数相减都会产生溢出,D错。
5.一个8位二进制整数,若采用补码表示,且由4个1和4个O组成,则最小值为 ____ 。
首先我们来看为什么要使用补码运算法:因为人脑可以知道第一位是符号位, 在计算的时候我们会根据符号位, 选择对真值区域的加减. (真值的概念在本文最开头). 但是对于计算机, 加减乘数已经是最基础的运算, 要设计的尽量简单. 计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法. 我们知道, 根据运算法则减去一个正数等于加上一个负数, 即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了.于是人们开始探索将符号位参与运算, 并且只保留加法的方法. 首先来看原码:计算十进制的表达式: 1-1=01 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010]原 = -2如果用原码表示, 让符号位也参与计算, 显然对于减法来说, 结果是不正确的.这也就是为何计算机内部不使用原码表示一个数.为了解决原码做减法的问题, 出现了反码:计算十进制的表达式: 1-1=01 - 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)二进制乘法 (1) Binary Multiplication)Binary numbers can be multiplied using two methods,二进制数可以使用两种方法相乘,1.Paper method: Paper method is similar tomultiplication of decimal numbers on paper.纸法:纸法类似于十进制数在纸上相乘。
puter method: Computer method is used bydigital machines to multiply the binary numbers.计算机方法:数字计算机使用计算机方法乘以二进制数。
However, both these methods follow the same rule of multiplication which is,但是,这两种方法都遵循相同的乘法规则,即0 * 0 = 00 * 1 = 01 * 0 = 01 * 1 = 1Note: If two binary numbers are of 'n' bits each in magnitude, then their product can be maximum '2n' bits long in magnitude.注意:如果两个二进制数的大小均为'n'位,则它们的乘积最大为'2n'位。
长手乘法/纸张方法 (Long Hand Multiplication/Paper Method)The long Hand Multiplication technique is similar to decimal multiplication that we do on paper.长手乘法技术类似于我们在纸上做的十进制乘法。
计算机组成原理课程总结&复习考试要点一、考试以讲授过的教材中的内容为主,归纳要点如下:第1章 -第2章计算机概念运算方法和运算器(一)学习目标1.了解计算机的分类和应用。
2.掌握计算机的软、硬件构成。
3.掌握计算机的层次结构。
3.掌握数的原码、反码、补码的表示方法。
4.掌握计算机中数据的定点表示和浮点表示方法,并熟练掌握各种表示方法下所能表示的数据的范围。
5.理解定点加法原理及其判断溢出的方法。
6.了解计算机定点乘法、除法的实现方法。
7.了解浮点加法,乘法,除法的实现方法。
8.理解ALU运算器的工作原理及其扩展方法。
(二)第1章学习内容第一节计算机的分类和应用要点:计算机的分类,计算机的应用。
第二节计算机的硬件和软件要点:了解计算机的硬件构成及各部分的功能;了解计算机的软件分类和发展演变。
第三节计算机系统的层次结构要点:了解计算机系统的层次结构。
(三)第2章学习内容第一节数据和文字的表示方法要点:△定点数的表示方法,及其在原码、反码和补码表示下的数值的范围;△○浮点数的表示方法及其不同表示格式下数据的表示范围;常见汉字和字符的几种表示方法;第二节定点加法、减法运算要点:△补码加、减法及其溢出的检测方法;二进制加法器和十进制加法器的逻辑构成。
第三节定点乘法运算要点:原码并行乘法原理;不带符号的阵列乘法器;补码并行乘法原理;○直接补码阵列乘法器。
第四节定点除法运算1文档来源为:从网络收集整理.word版本可编辑.要点:理解原码除法原理以及并行除法器的构成原理。
第五节多功能算术/逻辑运算单元要点:△74181并行进位运算器;74182进位链;△○多位ALU的扩展。
第六节浮点运算运算和浮点运算器要点:了解浮点加/减;浮点乘/除原理。
浮点存储:1.若浮点数x的754标准存储格式为()16,求其浮点数的十进制数值。
解:将16进制数展开后,可得二制数格式为0 100 00010011 0110 0000 0000 0000 0000S 阶码(8位) 尾数(23位)指数e=阶码-127=-01111111=00000011=(3)10包括隐藏位1的尾数1.M=1.011 0110 0000 0000 0000 0000=1.011011于是有x=(-1)S×1.M×2e=+(1.011011)×23=+1011.011=(11.375)10转换成754标准的32位浮点数的二进制存储格式。
一种并行结构有符号乘累加器的设计张琳;田现忠;赵兴文;颜广;葛兆斌【摘要】本文采用补码分布式算法,简化了有符号数、无符号数以及混合符号数的乘加减运算,通过改进累加器树结构、全加器逻辑电路,设计了一种新型乘累加器结构.通过Ahera公司的EP1C3T144C8实现了该乘累加器6个9位有符号操作数的乘累加运算的功能和时序仿真,结果证明了该算法的有效性.该设计解决了常规DA 分布式算法系数不能更新和占用大量RAM资源的缺点,可以应用到数字滤波器设计中,也可以作为快速的运算单元应用到DSP数字信号处理器中.【期刊名称】《山东科学》【年(卷),期】2016(029)002【总页数】5页(P96-100)【关键词】乘累加器;有符号数;可变系数【作者】张琳;田现忠;赵兴文;颜广;葛兆斌【作者单位】山东省科学院自动化研究所,山东济南250014;山东省科学院自动化研究所,山东济南250014;吉林大学仪器科学与电气工程学院,吉林长春130026;山东省科学院自动化研究所,山东济南250014;山东省科学院自动化研究所,山东济南250014;山东省科学院自动化研究所,山东济南250014【正文语种】中文【中图分类】TN431.2乘累加器是信号处理当中的基本运算单元,是fir滤波器和自适应滤波器的主要结构,其速度和占用芯片资源的多少是影响数字硬件实现的关键性因素[1]。
乘累加器主要分为迭代、线性阵列和并行结构,早期采用迭代结构使用软件实现乘法操作,后来逐渐发展成设计专用的硬件乘累加器,以获得更高的性能。
目前高性能的乘法操作都是采用硬件实现的乘累加器,而且多是采用并行结构[2]。
目前国内外并行乘累加器的算法主要有Booth算法和Wallace树,当前流行的部分积产生算法就是在Booth算法的基础上改进的。
虽然改进的Booth算法可以减少部分积的数量,减少了硬件开销且提高了电路性能,但是当阶数比较高的时候,Booth算法的编码逻辑却能带来显著的资源开销。
第三章运算方法和运算器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,代表正数,所以称这种溢出为“正溢出”。
关于补码以及基本的补码运算0.最基本的,补码怎么得到,这里不讨论。
以及原码和补码的和是0,这个基础的结论,这里不做说明。
1.加法的时候,判断溢出的方法:当两个加数的符号位相同,且结果的符号位与加数符号位不同的时候,则产生了溢出。
显然,两个数,如果异号,显然不会溢出。
溢出,只会出现在同号的情况,则有上面的结论。
2.补码也是有权码。
假如总共有n个比特,除最高位(符号位)以外,每一位的权值为2^i。
而最高位的权值是-2^(n-1)!注意是负的!这一点很好理解:原码和补码的和是2^n,由于总共的位数只有n位,因此和的结果是0,因此补码的最高位权值就是负的。
3.有符号数的乘法(补码的乘法),例子-5*-3:10111101-----------0000011011-----------11101100000-----------111101111011------------1110011100101-------------00001111有符号数的乘法与无符号数的乘法的区别在于:a.在做每一位的乘法的时候,都要做一个位扩展,即扩展符号位。
如上的例子,第一步做1011*1的结果是11011,扩展了一位符号位1。
道理很简单,因为这一步的结果要和下一步做一个加法,而下一步的加数的位宽较现在这一步位宽要宽一位,而加法发生在位宽相同的两个数之间,因此要做一个符号位的扩展。
b.最高位的乘法与其他位稍有不同。
因为最高位的权值是-2^(n-1) ,所以乘法的结果要做一个取反加一的操作。
如上例,1011*1(最高位的1),结果是11011(做符号位扩展),然后做一个取反加一的操作,得到例子中的00101。
4.有符号数的除法:先将有符号数取绝对值,做无符号数的除法,得到结果,最后根据被除数和除数的符号,确定商以及余数的符号。
2.3.2 补码乘法[1]作者:pz整理来源:网络2010年4月2日发表评论进入社区2.3.2补码乘法1.补码与真值得转换公式补码乘法因符号位参与运算,可以完成补码数的“直接”乘法,而不需要求补级。
《计算机组成原理》模拟题1一、名词解释1.总线2.指令系统3.微指令4.溢出二、填空题1.按冯·诺依曼设计原则,其硬件是由()、()、()、()和()组成。
2.计算机系统是由()和()两大部分构成。
3.计算机最主要的三大性能指标是()、()、和()。
4.一个完善的指令系统应满足()、()、()、和()的要求。
5.堆栈的硬件是由()和()构成,存取是按()原则。
6.通常控制器的设计可分为()和(),前者采用的核心器件是(),后者采用的核心器件是()。
7.主机与外设的连接方式有()、()和()。
8.目前在微型机中主机与外设广泛采用的信息交换方式是()和()。
三、简答题1.简述中断的处理过程。
它与程序查询方式有何不同点?2.按通道的工作方式,通道分哪几类?简述其特点。
3.画图说明存储系统的层次结构,并说明各种存储器的特点。
参考答案:1.答案要点:中断的处理过程大致可分为五个步骤:1)中断请求2)中断排队3)中断响应4)中断处理5)中断返回与程序查询方式的不同点:1)在程序中断方式下,CPU和外设可并行工作;而程序查询方式下,CPU与外设是串行工作的。
2)程序中断方式适合于对外界随机事件的处理。
而程序查询方式不具备这样的能力。
2.答案要点:按通道的工作方式,通道可分为字节多路通道、选择通道和数组多路通道三种类型。
特点:字节多路通道:1)有多个子通道,设备间可(分时)并行操作。
2)数据以字节为单位交叉传送。
3)适合于连接大量的低速设备。
选择通道:1)被选中的外设采用独占方式使用通道。
2)数据以成组(数据块)方式进行传输。
3)适合于连接高速外设。
数组多路通道:是将前二者的优点结合在一起的一种通道结构。
数组多路通道含有多个子通道,可同时执行多个通道程序,数据以成组方式进行传送。
既具有多路并行操作能力,又有很高的数据传输率,可用来连接多台中高速的外设。
3.答案要点:存储系统的层次结构如图所示:存储器的特点:1)高速缓存:存放当前要执行的程序和数据。
14281152张梦翔_计算机的运算方法26.20. 用原码一位乘和补码一位乘(Booth算法)、两位乘计算x·y。
(2)x= -0.010111,y= -0.010101;原码一位乘:x=1.010111,y=1.010101部分积乘数0.000000+0.010111 0101010.0101110.001011 101010+0.0000000.0010110.000101 110101+0.0101110.0111000.001110 011010+0.0000000.0011100.000111 001101+0.0101110.0111100.001111 000110+0.0000000.0011110.000111 100011【x×y】原=0.000111100011补码一位乘:[x]补=1.101001 [-x]补=0.010111 [y]补=1.101011部分积乘数Yn 附加位Yn+1 说明00.000000 1101011 0 部分积加[-x]补,再右移一位+00.01011100.01011100.001011 1110101 1 部分积右移一位00.000101 1111010 1 部分积加[x]补,再右移一位+11.10100111.10111011.110111 0111101 0 部分积加[-x]补,再右移一位+00.01011100.10111000.010111 0011110 1 部分积加[x]补,再右移一位+11.10100100.00000000.000000 0001111 0 部分积加[-x]补,再右移一位+00.01011100.01011100.001011 1000111 1 部分积右移一位00.000111 1000110 最后一步不移位[x×y]补=0.0001111000110补码两位乘:[x]补=1.101001 [-x]补=0.010111 [y]补=1.101011部分积乘数说明000.000000 11.1010110 判断位为110,加[-x]补+000.010111000.010111000.000101 1111.10101 判断位为101,加[-x]补+000.010111000.011100000.000111 001111.101 判断位为101,加[-x]补+000.010111000.011110000.000111 10001100 判断位为101,判断位清零[x×y]补=0.00011110001100(3)x= 19,y= 35;原码一位乘:x=0,10011 y=0,100011部分积乘数000000+010011 100011010011001001 110001+010011011100001110 011000000111 001100000011 100110000001 110011+010011010110001011 011001【x×y】原=0,001011011001补码一位乘:[x]补=0,010011 [-x]补=1,101101 [y]补=0,100011部分积乘数Yn 附加位Yn+1 说明00,000000+11,101101 0,100011 0 部分积加[-x]补,再右移一位11,10110111,110110 10,10001 1 右移一位11,111011 010,1000 1 部分积加[x]补,再右移一位+00,01001100,00111000,000111 0010,100 0 右移一位00,000011 10010,10 0 右移一位00,000001 110010,1 0 部分积加[-x]补,再右移一位+11,10110111,10111011,110111 0110010, 1 部分积加[x]补,再右移一位+00,01001100,001010 0110010[x×y]补=0,0010100110010补码两位乘:[x]补=0,010011 [-x]补=1,101101 [y]补=0,100011部分积乘数说明000,000000 00,1000110 判断位为110,加[-x]补+111,101101111,101101111,111011 0100,10001 判断位为001,加[x]补+000,010011000,001110000,000011 100100,100 判断位为100,加2[-x]补+111,011010111,011101111,110111 01100100,1 判断位为001,加[x]补+000,010011000,001010 01100100[x×y]补=0,00101001100100(4)x= 0.110 11,y= -0.111 01。
直接补码阵列乘法器的设计原理* 李澄举(嘉应学院计算机系,广东梅州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 XYZZ 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 XYZZ 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 XYZZ 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)。