当前位置:文档之家› 定点原码两位乘法器的设计

定点原码两位乘法器的设计

沈阳航空航天大学课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码二位乘法器的设计目录第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。

相关主题