定点原码两位乘法器的设计
- 格式:doc
- 大小:210.17 KB
- 文档页数:18
定点原码二位乘法器的设计一、整体设计思路1.电路的延迟时间:实现高效的运算速度。
2.电路的面积:尽量减小电路的面积,提高可集成度。
3.电路的功耗:尽量降低功耗,减少能源消耗。
基于这些因素,我将采用并行的乘法器设计来实现定点原码乘法器。
二、定点原码二位乘法器的模块划分1.部分积生成模块部分积生成模块的功能是将两个乘数转换为部分积,并按位相乘。
实现方式如下:a.采用一组与门实现两个乘数的与运算,得到与运算结果。
b.采用多个与门与二进制补码的最低位(即符号位)进行与运算,得到部分积。
2.部分积加法器模块部分积加法器模块的功能是将部分积相加,得到最终的积。
实现方式如下:a.采用全加器来实现两个部分积的加法,得到低位结果。
b.采用多级进位的加法器结构,将各级进位相加,得到高位结果。
3.结果输出模块结果输出模块的功能是将最终的积输出。
实现方式如下:a.通过多路选择器选择最终结果。
b.针对负积的情况,采用运算结果的补码表示。
三、定点原码二位乘法器的运算流程1.输入两个乘数(被乘数和乘数)。
2.经过部分积生成模块将两个乘数转换为部分积。
3.经过部分积加法器模块将部分积相加,得到最终的积。
4.经过结果输出模块输出最终的积。
四、定点原码二位乘法器的性能评估1.运算速度:通过计算电路的延迟时间来评估。
2.面积:通过计算电路的逻辑门数量来评估。
3.功耗:通过计算电路的总功耗来评估。
通过对定点原码二位乘法器进行综合评估,可以进一步优化其设计,提高乘法器的性能和效率。
总结:定点原码二位乘法器是计算机系统中的重要组成部分,其设计需要考虑到电路的延迟时间、面积和功耗等因素。
通过采用并行计算的方式,将定点原码乘法器的设计划分为部分积生成模块、部分积加法器模块和结果输出模块,并详细介绍了每个模块的功能和实现方式。
通过对乘法器的性能评估,可以进一步优化设计,提高乘法器的性能和效率。
定点原码二位乘法器的设计在计算机系统中具有重要的应用价值。
课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码两位乘法器的设计院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:指导教师:完成日期:目录航空工业学院........................................ 错误!未定义书签。
第1章总体设计方案. (1)1.1设计原理 (1)1.2设计思路 (3)1.3设计环境 (4)第2章功能模块的设计与实现 (5)2.1顶层电路的设计与实现 (5)2.1.1创建顶层图形设计文件 (5)2.1.2器件的选择与引脚锁定 (5)2.2基本功能模块的组成及工作原理 (7)2.2.1被乘数模块的组成及工作原理 (7)2.2.2乘数模块的组成及工作原理 (9)2.2.3选择模块的组成及工作原理 (10)2.2.4移位模块的组成及工作原理 (12)2.3仿真调试 (13)第3章编程下载与硬件测试 (15)3.1编程下载 (15)3.2硬件测试及结果分析 (15)参考文献 (17)附录(电路原理图) (18)第1章总体设计方案1.1 设计原理定点原码两位乘与定点原码一位乘一样,符号位的运算和数值部分是分开进行的,但为了提高运算速度,所以采用了原码两位乘,因为原码两位乘是用乘数的末两位的状态来决定新的部分积如何形成,可提高运算速度。
乘数和被乘数都用原码表示。
两位乘数有四种可能的组合,每种组合对应与以下操作:00——相当与0*X。
部分积+0,右移两位;01——相当与1*X。
部分积+X,右移两位;10——相当与2*X。
部分积+2X,右移两位;11——相当与3*X。
部分积+3X,右移两位。
与一位乘法比较,多出了+2X和3X两种情况。
把X左移1位即得到2X,在机器通常采用左斜送一位来实现。
可是+3X一般不能一次完成,如分成两次进行,又降低了计算速度。
解决问题的办法是:以(4X-X)来代替3X运算,在本次运算中只执行-X,而+4X则归并到下一步执行,此时部分积以右移了两位,上一步欠下的+4X已变成+X,在实际线路中要用一个触发器C来记录是否欠下+4X,若是,则C变为1。
一、概述在计算机科学中,C语言是一种非常流行的程序设计语言,它具有高效、灵活和丰富的库函数等特点。
在C语言中实现原码一位两个定点数相乘是一个非常基础和常见的计算操作,本文将介绍如何使用C语言实现原码一位两个定点数相乘的过程。
二、原码定点数1. 定点数是计算机中用于表示实数的一种方式,它们不同于浮点数,定点数以二进制形式表示,它包含一个整数部分和一个小数部分。
2. 原码定点数中,最高位为符号位,其余位用来表示整数部分和小数部分。
当符号位为0时,表示正数,为1时表示负数。
三、原码定点数相乘1. 原码定点数相乘是指两个原码定点数相乘的操作。
2. 对于原码定点数A和B,其相乘过程可以表示为C=A×B,其中C 为相乘结果。
四、C语言实现下面是一个简单的C语言函数,实现了原码一位两个定点数相乘的功能:```c#include <stdio.h>int fix_mul(int a, int b, int n){int c;c = a * b;c = c >> n; // 将乘积右移n位,得到结果return c;}```五、代码解释1. 上述代码定义了一个名为fix_mul的函数,接受三个参数a、b、n,分别表示两个原码定点数和小数部分的位数。
2. 函数内部先将a和b相乘,然后将结果右移n位,最终得到相乘的结果,并将其返回。
六、示例下面是一个示例代码,展示了如何使用上述函数进行原码一位两个定点数相乘的操作:```c#include <stdio.h>int m本人n(){int a = 10; // 原码定点数Aint b = 20; // 原码定点数Bint n = 8; // 小数部分的位数int result = fix_mul(a, b, n);printf("The result of A * B is d\n", result);return 0;}```七、总结通过上述的介绍可以看出,使用C语言实现原码一位两个定点数相乘是一个非常简单的操作。
课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码二位乘法器的设计院(系):专业:班级:学号:姓名:指导教师:说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。
报告和电子数据必须作为实验现象重复的关键依据。
学术诚信声明本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。
尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。
与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。
报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。
本人签名: 日期:年月日课程设计任务书目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (3)1.3设计环境 (3)第2章详细设计方案 (5)2.1顶层方案图的设计与实现 (5)2.2创建顶层图形设计文件 (5)2.3器件的选择与引脚锁定 (6)第3章功能模块的设计与实现 (7)3.1控制器模块的设计与实现 (7)3.2选择器模块的设计与实现 (7)3.3乘数模块的设计与实现 (8)3.4部分积模块的设计与实现 (9)3.5原码两位乘法器模块的设计与实现 (10)第4章编程下载与硬件测试 (12)3.1编程下载 (12)3.2硬件测试及结果分析 (12)参考文献 (13)第1章 总体设计方案1.1设计原理原码两位乘的乘数和被乘数用原码表示,根据乘数最后两位的取值情况,依次求出被乘数对应的4种选择值,然后与上次部分积相加之后,再对本次得出的部分值右移两位,循环执行,直至乘数的高两位运算完成为止。
两位乘数共有四种状态,对应的四种状态可得表1.表中2倍的被乘数可通过乘数将X 左移1位得到2X ,在机器内通常采用左斜送一位来实现。
定点原码一位乘法器的设计定点原码乘法器是一种基本的数字运算电路,用于实现两个定点原码数的乘法运算。
在设计定点原码乘法器时,需要考虑两个关键方面:乘法运算的算法和乘法运算电路的实现。
一、乘法运算的算法设计:1.符号位的处理:定点原码乘法器需要考虑乘法运算的符号位。
根据乘法运算的规则,当两个数的符号位不同时,乘积的符号位为负;当两个数的符号位相同时,乘积的符号位为正。
因此,在乘法运算时,首先需要对两个乘数的符号位进行判断和处理。
2.乘法运算的主体部分:乘法运算的主体部分是通过将两个乘数的每一位进行相乘,并将结果相加得到乘积的每一位。
一般来说,乘法运算可以采用移位和加法的方式来实现。
a.移位操作:在乘法运算中,需要将乘数的每一位与被乘数的每一位相乘,并将结果相加。
因此,首先需要将乘数的每一位与被乘数的每一位相乘,移位操作可以实现该过程。
b.加法操作:乘法运算中,需要将乘数的每一位与被乘数的每一位相乘,得到中间的结果,然后将中间结果相加,得到最终的乘积。
这一步骤可以通过加法器电路来实现。
二、乘法运算电路的实现设计:在设计定点原码乘法器的电路时,需要考虑各个功能模块的实现:1.符号位处理电路:由于定点原码乘法器需要考虑两个乘数的符号位,因此需要设计一个符号位处理电路。
该电路可以根据两个乘数的符号位来判断乘积的符号位,并给出相应的控制信号。
2.移位操作电路:移位操作电路用于实现乘数的每一位与被乘数的每一位相乘。
可以采用多路选择器和移位寄存器来实现。
多路选择器用于选择当前操作的两个数位,移位寄存器用于保存被乘数的每一位。
3.加法器电路:加法器电路用于将乘数的每一位与移位操作电路中移位后的结果相加。
可以采用并行加法器来实现,通过级联多个全加器,实现两个二进制数的加法运算。
4.乘积结果输出电路:乘积结果输出电路用于将最终的乘积输出。
可以通过选择器来选择最后一位的结果,并将结果输出到寄存器中,供后续电路使用。
设计定点原码乘法器的步骤如下:1.分析乘法运算的算法,确定各个功能模块的需求和输入输出信号。
定点原码二位乘法器的设计定点原码二位乘法器是一种用于计算机中定点数的乘法操作的电路或逻辑器件。
在计算机中,定点数是以固定小数位数和整数位数表示的数字。
定点原码乘法器可以实现定点数之间的乘法运算,这对于一些计算机应用非常重要,如数字信号处理、图像处理和数值计算等。
1.电路模块划分:定点原码二位乘法器可以划分为多个电路模块,如部分积生成器、积累器、符号位处理器、溢出判断器等。
每个模块要根据功能设计相应的电路和逻辑。
2.全加器设计:全加器是定点二位乘法器中的核心电路模块。
它用于进行两个二进制位相加,并输出相加结果和进位。
全加器可以使用门电路和触发器进行实现。
在设计全加器时,需要考虑到功耗、速度和面积等因素。
3.流程控制设计:定点原码乘法器的计算过程可以划分为多个时钟周期。
在每个时钟周期内,需要按照特定的顺序对电路模块进行控制。
流程控制的设计需要考虑到时序逻辑和状态机的应用。
4.精度控制设计:定点原码乘法器的乘法结果可能会造成溢出或截断。
为了保证计算结果的精度,需要设计相应的溢出判断器和截断处理器。
溢出判断器可以通过比较定点数的符号位来实现,而截断处理器可以使用位移操作实现。
5.优化设计:在定点原码二位乘法器的设计过程中,可以采用一些优化策略来提高性能和减小电路面积。
例如,可以使用逻辑门和触发器的级联来减小时延,使用布线优化来减小电路面积。
总结来说,定点原码二位乘法器的设计需要考虑到电路模块划分、全加器设计、流程控制设计、精度控制设计和优化设计等因素。
通过合理的设计和优化,可以实现高效、准确和可靠的定点数乘法运算。
课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码两位乘法器的设计院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:指导教师:完成日期:目录航空工业学院........................................ 错误!未定义书签。
第1章总体设计方案. (1)1.1设计原理 (1)1.2设计思路 (3)1.3设计环境 (4)第2章功能模块的设计与实现 (5)2.1顶层电路的设计与实现 (5)2.1.1创建顶层图形设计文件 (5)2.1.2器件的选择与引脚锁定 (5)2.2基本功能模块的组成及工作原理 (7)2.2.1被乘数模块的组成及工作原理 (7)2.2.2乘数模块的组成及工作原理 (9)2.2.3选择模块的组成及工作原理 (10)2.2.4移位模块的组成及工作原理 (12)2.3仿真调试 (13)第3章编程下载与硬件测试 (15)3.1编程下载 (15)3.2硬件测试及结果分析 (15)参考文献 (17)附录(电路原理图) (18)第1章总体设计方案1.1 设计原理定点原码两位乘与定点原码一位乘一样,符号位的运算和数值部分是分开进行的,但为了提高运算速度,所以采用了原码两位乘,因为原码两位乘是用乘数的末两位的状态来决定新的部分积如何形成,可提高运算速度。
乘数和被乘数都用原码表示。
两位乘数有四种可能的组合,每种组合对应与以下操作:00——相当与0*X。
部分积+0,右移两位;01——相当与1*X。
部分积+X,右移两位;10——相当与2*X。
部分积+2X,右移两位;11——相当与3*X。
部分积+3X,右移两位。
与一位乘法比较,多出了+2X和3X两种情况。
把X左移1位即得到2X,在机器通常采用左斜送一位来实现。
可是+3X一般不能一次完成,如分成两次进行,又降低了计算速度。
解决问题的办法是:以(4X-X)来代替3X运算,在本次运算中只执行-X,而+4X则归并到下一步执行,此时部分积以右移了两位,上一步欠下的+4X已变成+X,在实际线路中要用一个触发器C来记录是否欠下+4X,若是,则C变为1。
一、介绍Verilog HDL(硬件描述语言)是一种用于建模电子系统的硬件描述语言,常用于数字电路设计和验证。
在Verilog HDL中,实现两位乘法器是一个常见的需求,本文将介绍如何使用Verilog HDL设计和实现一个两位乘法器。
二、两位乘法器的原理两位乘法器是用于计算两个二进制数的乘积的电路。
对于两个n位的二进制数A和B,它们的乘积可以使用shift-and-add算法来计算。
具体来说,可以将A拆分为A[0]和A[1],B拆分为B[0]和B[1],然后计算A[0]*B[0]、A[0]*B[1]、A[1]*B[0]和A[1]*B[1],最后将它们的和相加即可得到A*B的结果。
三、Verilog HDL的实现使用Verilog HDL可以轻松地实现两位乘法器。
以下是一个简单的Verilog HDL代码实现:```verilogmodule two_bit_multiplier(input [1:0] A, // 两位输入input [1:0] B,output [3:0] result // 四位输出);reg [3:0] temp; // 临时变量用于保存计算的结果always (A or B) begintemp[0] = A[0] B[0]; // 计算A[0]*B[0]temp[1] = A[0] B[1]; // 计算A[0]*B[1]temp[2] = A[1] B[0]; // 计算A[1]*B[0]temp[3] = A[1] B[1]; // 计算A[1]*B[1]result = {temp[3],temp[2]+temp[1],temp[0]}; // 将计算结果相加并输出endendmodule```上述Verilog HDL代码描述了一个两位乘法器模块。
模块有两个2位输入A和B,以及一个4位输出result。
通过使用always块来计算A 和B的乘积,并将结果存储在temp变量中;将temp中的值相加并输出到result中。
3.3 定点乘法运算乘法运算是计算机中常用的运算,过去的计算机中,没有专门的乘法器。
乘法运算要靠软件编程来实现。
但现在随着LSI和VLSI应用的普及以及价格的下降,乘法运算已做成了标准部件—乘法器。
一般来讲,做乘除法运算,用原码比用补码简单,但有的机器,数据是用补码表示的,为避免码制间的频繁转换,乘除也用补码来做。
一、原码乘法1.原码一位乘用原码运算,数据的符号不能同数值位一同参加运算,而需单独处理,两原码表示的数相乘,其结果的符号是两数符号的异或。
规则:初始部分积设全0,从乘数末位乘起。
乘数位为1,部分积加被乘数,结果右移1位乘数位为0,部分积加全0,结果右移1位;重复上述操作,直到乘数位全部乘完为止。
2. 原码二位乘在原码一位乘中,是一位一拍来运算的,两个n位数相乘,需进行n次加法,n 位移位。
要提高乘法速度,能否进行二位一乘?回答是肯定的。
原码二位乘规则:yn-1ynCj0 0 0 ;+全0,部分积右移两位,Cj =00 0 1 ;+x,部分积右移两位,Cj =00 1 0 ;+x,部分积右移两位,Cj =00 1 1 ;+2x,部分积右移两位,Cj =01 0 0 ;+2x,部分积右移两位,Cj =01 0 1 ;-x,部分积右移两位,Cj =11 1 0 ; -x,部分积右移两位,Cj =11 1 1 ;+全0, 部分积右移两位,Cj =1二、补码乘法1.补码一位乘用补码做加减运算很方便,做乘法(包括除法)却是原码很方便,既然这样为何又有补码乘法呢?主要为了避免频繁的码制转换。
⑴ 相乘时,被乘数取双符号位,乘数取单符号位并参加运算。
⑵ 乘法开始前,部分积置全0,乘数末位增加附加位yn+1=0。
⑶ 比较yi 和yi+1,决定如何运算2.补码两位乘补码两位乘时把一位乘中的两步合成一步来做。
⑴ 比较yn,yn+1,按Booth算法操作⑵ 比较yn-1,yn,按Booth算法操作以上两步合为一步操作(P121表)注意:1、被乘数取三位符号位2、乘数数值部分为奇数,取一位符号位,最后一步只移一位;乘数数值部分为偶数,取二位符号位,最后一步不移位;(满足二位一移)3、得积2n+1位,含1位符号位。
沈阳航空工业学院课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码两位乘器设计院(系):计算机学院专业:计算机科学与技术班级:4401102学号:******************指导教师:***完成日期:2006年12月31日沈阳航空工业学院课程设计报告目录第1章总体设计方案 (1)1.1设计原理 (1)第2章详细设计方案 (5)2.1顶层方案图的设计与实现 (5)2.1.1创建顶层图形设计文件 (5)2.1.2器件的选择与引脚锁定 (5)2.1.3编译、综合、适配 ............................................................ 错误!未定义书签。
2.2功能模块的设计与实现 (6)2.2.1欠位C和选择器模块的设计与实现 (7)2.2.2两位移电路的设计与实现 (9)2.3仿真调试 ............................................................................... 错误!未定义书签。
第3章编程下载与硬件测试 .. (12)3.1编程下载 (12)3.2硬件测试及结果分析 (12)参考文献 (14)附录(程序清单或电路原理图) ............................................. 错误!未定义书签。
第1章总体设计方案1.1 设计原理原码两位乘法流程图原码两位乘与原码一位乘一样,符号位的运算和数值部分是分开进行的,但原码两位乘是用两位乘数的状态来决定新的部分积如何形成,因此可提高运算速度。
两位乘数共有4种状态,对应这4种状态可得下表。
乘数y n-1y n 新的部分积00 等于原部分积右移两位01 等于原部分积加被乘数后右移两位 10 等于原部分积加2倍被乘数后右移两位 11等于原部分积加3倍被乘数后右移两位表中2倍被乘数可通过将被乘数左移一位实现,而3倍被乘数的获得可以分两步来完成,利用3=4-1,第一步先完成减1倍被乘数的操作,第二步完成加4倍被乘数的操作。
原码两位乘课程设计一、教学目标本课程旨在让学生掌握原码两位乘的原理和应用,通过学习,学生应能:1.理解原码乘法的概念和步骤。
2.掌握原码两位乘的计算方法。
3.能够运用原码两位乘解决实际问题。
二、教学内容本课程的教学内容主要包括:1.原码乘法的概念和步骤。
2.原码两位乘的计算方法。
3.原码两位乘在实际问题中的应用。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括:1.讲授法:讲解原码乘法的原理和步骤。
2.讨论法:引导学生探讨原码两位乘的计算方法。
3.案例分析法:分析实际问题,让学生掌握原码两位乘的应用。
4.实验法:通过实际操作,巩固原码两位乘的计算方法。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:提供原码两位乘的相关理论知识。
2.参考书:为学生提供更多的学习资料。
3.多媒体资料:通过视频、动画等形式,直观展示原码两位乘的计算过程。
4.实验设备:为学生提供实际操作的机会,巩固所学知识。
五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:通过课堂参与、提问回答等评估学生的学习态度和理解程度。
2.作业:布置相关的原码两位乘练习题,评估学生的掌握情况。
3.考试:定期进行原码两位乘的知识测试,全面评估学生的学习成果。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节安排,逐步讲解原码两位乘的知识点。
2.教学时间:安排在上课时间,保证学生能够集中精力学习。
3.教学地点:教室,提供良好的学习环境。
七、差异化教学根据学生的不同学习风格、兴趣和能力水平,我们将采取以下差异化教学措施:1.学习风格:提供多种学习方式,如视频、实验、讨论等,满足不同学生的学习需求。
2.兴趣:结合学生的兴趣,设计相关的原码两位乘应用案例,激发学生的学习热情。
3.能力水平:针对不同能力水平的学生,设计不同难度的练习题,帮助学生提高。
八、教学反思和调整在实施课程过程中,我们将定期进行教学反思和评估,根据学生的学习情况和反馈信息,及时调整教学内容和方法,以提高教学效果。
沈阳航空航天大学课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码二位乘法器的设计目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (3)1.3设计环境 (5)第2章功能模块的设计与实现 (6)2.1总体的设计与实现 (6)2.1.1总体方案的逻辑图 (6)2.2基本功能模块的组成及工作原理 (8)2.2.1被乘数模块的组成及工作原理 (8)2.2.2乘数模块的组成及工作原理 (8)2.2.3选择模块的组成及工作原理 (9)2.2.4 移位模块的工作原理 (9)第3章程序仿真与测试 (10)3.1程序仿真 (10)3.2仿真测试及结果分析 (10)参考文献 (12)附录(汇编程序) (13)第1章总体设计方案1.1 设计原理定点原码两位乘与定点原码一位乘一样,符号位的运算和数值部分是分开进行的,但为了提高运算速度,所以采用了原码两位乘,因为原码两位乘是用乘数的末两位的状态来决定新的部分积如何形成,可提高运算速度。
乘数和被乘数都用原码表示。
两位乘数有四种可能的组合,每种组合对应的操作如表1.1所示表1.1 乘数组合与部分积关系对照表乘数y n-1y n 新的部分积00 新部分积等于原部分积右移两位01 新部分积等于原部分积加被乘数后右移两位10 新部分积等于原部分积加2倍被乘数后右移两位11 新部分积等于原部分积加3倍被乘数后右移两位与一位乘法比较,多出了+2X和3X两种情况。
把X左移1位即得到2X,在机器内通常采用左斜送一位来实现。
可是+3X一般不能一次完成,如分成两次进行,又降低了计算速度。
解决问题的办法是:以(4X-X)来代替3X运算,在本次运算中只执行-X,而+4X则归并到下一步执行,此时部分积以右移了两位,上一步欠下的+4X已变成+X,在实际线路中要用一个触发器C来记录是否欠下+4X,若是,则C变为1。
因此实际操作用Yi-1,Yi,C三位来控制,运算规则如下所示:表1.2 判断值对应的操作以及C值的变化情况组合值Yi-1 Yi C 操作C值变化0 0 0 0 部分积+0;右移两位C=01 0 0 1 部分积+x;右移两位C=01 0 1 0 部分积+x;右移两位C=02 0 1 1 部分积+2x;右移两位C=02 1 0 0 部分积+2x;右移两位C=031 0 1 部分积-x ;右移两位 C=1 3 1 1 0 部分积-x ;右移两位 C=1 4 1 1 1 部分积+0;右移两位 C=1 定点原码两位乘法器实现的功能应如下面例子所示,设计的电路应实现下面 例子给定的功能。
用原码两位乘方法求X*Y ,已知X=07H ,Y=16H (这里的0或1表示符号位)。
2X=0010.1110表 1.3 07H*16H 的计算过程部分积 乘数 C j 说明000.0000 0110 0 开始,部分积为0,C j =0+010.1110 y n-1y n C j =100,加2x*,保持C j =0010.1110 0110000.1011 1001 0 —>2位,得新的部分积,乘数同时—>2位 +001.0111 y n-1y n C j =010,加x*,保持C j =0010.0010 1001 0000.1000 1010 —>2位得最终结果实现定点原码两位乘法的流程框图如1.1所示.图1.1 定点原码两位乘法器逻辑电路框图1.2 设计思路设计的定点原码两位乘法器是用一个乘数模块,一个被乘数模块和部分积模块以及移位模块和选择模块构成。
顾名思义,乘数模块以及被乘数模块即用来存储乘数和被乘数的模块,思路是把乘数存储在R1中,被乘数则存储在R2中。
部分积则和书上所说的一样,先全部清零,在这里,我将把部分积存储在R0中。
因为原码两位乘涉及到欠位,所以R3中存储欠位。
思路大概如下。
将要计算的乘数以及被乘数分别输进存储器中,然后分别计算出x*以及2x方便以后计算。
然后再提出两数的符号位并进行异或运算(比如17H,06H的符号位计算则为1异或0最后经过移位运算可得出最终的符号位模式10,00)。
下面便是具体计算过程:记部分积为000.0000,判断y n-1y n C j的值并加上对应的值然后将部分积右移两位,同时将乘数右移两位,重复计算,计算次数达到2的时候判断附加位,如果附加位为1,则加x*并右移两位得结果,否则直接得出结果。
最终,要进行符号位运算。
由于上面已经计算好符号位为10或者00,所以将上面的步骤得到的结果与7FH相与去掉上面结果的最高位,再将算好的符号位加到结果上则可得到最终结果。
根据课设题目要求,采用伟福COP2000和实验箱进行设计并实现定点原码两位乘,所以本题目需要试用软件进行调试,首先需要进行编程。
以下会给出几个本程序中将用到的汇编语言以及其对应的注释:表 1.4 程序部分操作的注释ADD A,R? 将寄存器R?的值加入累加器A中ADDC A,R? 将寄存器R?的值加入累加器A中,带进位SUB A,R? 从累加器A中减去寄存器R?的值AND A,R? 累加器A“与”寄存器R?的值OR A,R? 累加器A“或”寄存器R?的值JZ MM 若零标志位置1,跳转到MM地址JMP MM 跳转到MM地址CPL A 累加器A取反,再存入累加器A中OUT 将累加器A中的数据输出到输出端口RR A 累加器A右移一位RL A 累加器A左移一位NOP 空指令1.3 设计环境软件环境:伟福COP2000型计算机组成原理实验仪COP2000 计算机组成原理实验系统由实验平台、开关电源、软件三大部分组成。
实验平台上有寄存器组R0-R3、运算单元、累加器A、暂存器W、直通/左移/右移单元、地址寄存器、程序计数器、堆栈、中断源、输入/输出单元、存储器单元、微地址寄存器、指令寄存器、微程序控制器、组合逻辑控制器、扩展座、总线插孔区、微动开关/指示灯、逻辑笔、脉冲源、20 个按键、字符式LCD、RS232 口。
COP2000集成调试软件(即仿真测试软件)共分为6部分:(1)主菜单区实现实验仪的各项功能的菜单,包括[文件][编辑][汇编][运行][帮助]五大项,各项线面做详细介绍。
(2)快捷图标区快速实现各项功能按键(3)源程序/机器码区在此区域有源程序窗口,反汇编窗口,EM程序代码窗口。
源程序用于输入,显示,编辑汇编源程序:反汇编窗口显示程序编译后的机器码及反汇编的程序;EM程序代码窗口用数据方式机器码。
(4)机构图/逻辑波形区结构图能结构化显示模型机的各部件,以及运行时数据走向寄存器值;逻辑波形图能显示模型机运行时所有信号的程序。
(5)微程序/跟踪区微程序表格用来显示程序运行时微程序的时序,及每个时钟脉冲各控制位的状态,跟踪表用来记录显示程序及微程序执行的轨迹,指令系统可以帮助你设计新的指令系统。
(6)寄存器状态区用来显示程序执行时各内部寄存器的值。
第2章功能模块的设计与实现2.1 总体的设计与实现被乘数x存放在寄存器R2中,乘数y存放在寄存器R1中,存储器R0中存放部分积,R3中暂时存放需要进行判断的值。
根据所设计的算法器,运算中要对乘数y进行计算,被乘数x需要计算出[-X]补和2x方便以后计算。
与原码一位乘不同的是,需要在乘数(当乘数位数为偶数时)的最高位前加两个0。
这样,当乘数最高两个有效位出现“11”时,需要将C j置“1”,再与所添补的两个0结合呈001状态,以完成加x*的操作(此步不必移位)。
以上所说的便是其中的一种小情况,剩余的几种状况在这里不重复说明。
2.1.1总体方案的逻辑图总体方案在前面的图1.1中相信大家能够大致的了解程序的主要流程,下面将对上面总体框图中的几个小部分给出更为具体的工作流程图。
下面是对乘数y与被乘数x的符号位进行异或的操作:图2.1计算最终结果的符号位下面是计算【-X 】补和2x 的流程图图2.2计算【-X 】补和2x下面是得出最终结果的工作流程图图2.3 最终结果输出2.2 基本功能模块的组成及工作原理定点原码两位乘法器是由一个乘数模块,一个被乘数模块和部分积模块以及选择器模块和移位模块为基础而实现的,设计要求用汇编语言实现算法,所以先在仿真软件上进行汇编并仿真然后再在实验箱上进行操作。
2.2.1被乘数模块的组成及工作原理(1)被乘数模块的组成被乘数模块主要涉及3个寄存器,1个移位寄存器,1个加法器。
(2)被乘数模块的工作原理被乘数模块主要的功能是实现把X转换成0,X,2X以及-X然后再由选择器模块选择出那一个送到加法器里。
对2X的实现才用移位寄存器来实现,用其左移的功能将X左移一位得到2X,-X用加法器和寄存器得到,采用取反加一的办法实现。
2.2.2乘数模块的组成及工作原理(1)乘数模块的组成乘数模块由寄存器和移位电路组成。
沈阳航空航天大学课程设计报告(2)乘数模块的工作原理乘数模块主要功能是右移两位将乘数最低两位移出,所移出的两位去控制被乘数模块去选择向加法器所送的数,移位由一个移位电路实现右移两位,在移位的同时乘数本身右移两位。
2.2.3选择模块的组成及工作原理(1)选择模块的组成选择模块由8个4选1的选择器组成,8个4路选择器分别去选择由被乘数模块转换完的0,X,2X,-X,由8个4路选择器分别表示8位,再组合成一个数输出。
(2)选择模块的工作原理表 2.1 选择模块的工作原理组合值Yi-1 Yi C 操作C值变化0 0 0 0 部分积+0;右移两位C=01 0 0 1 部分积+x;右移两位C=01 0 1 0 部分积+x;右移两位C=02 0 1 1 部分积+2x;右移两位C=02 1 0 0 部分积+2x;右移两位C=03 1 0 1 部分积-x;右移两位C=13 1 1 0 部分积-x;右移两位C=14 1 1 1 部分积+0;右移两位C=1根据以上给出的表格对应的进行选择加的数据。
2.2.4 移位模块的工作原理由于在本算法器中需要多次进行移位,所以移位相对于本算法器来说是不可或缺的一部分。
在实现移位功能的时候,将数据全部用2进制代码表示,然后进行左右移位的运算,结果依旧存放在原属寄存器中,在进行运算的时候直接调用移位后的数据,中间可节省大部分的时间精力。
第3章结果测试3.1 程序仿真将先前编好的汇编语言存放在仿真软件中,并进行调试结果,同时对程序进行改进等操作。
由于设计的原码两位乘程序比较复杂,代码长度较长,所以在编程的时候要耐心,一步一步的跟踪进行运算,并随时调试代码中的错误和改善代码长度。
3.2 仿真测试及结果分析利用COP2000实验仪进行仿真测试,最终得出结果如下。
当x=07H,y=06H时的仿真结果如下图所示。
已知x=07H,y=06H,不算符号位计算可得,x*y=2AH,将其写为2进制代码可得:0010.1010,又有最终符号位的最终结果为0000.0000,所以将最终符号位加到不带符号位的结果上可得:0010.1010,即最终结果应为2AH。