基于恢复余数法定点原码一位除法器的设计课程设计报告

合集下载

定点源码一位乘法器的设计内容结论

定点源码一位乘法器的设计内容结论

定点源码一位乘法器的设计内容结论篇一:设计一个定点源码一位乘法器可以帮助我们更好地理解计算机内部如何进行乘法运算。

本文将介绍一个定点源码一位乘法器的设计方案,包括其基本结构和实现方式,结论是这种乘法器在计算机内部可以实现,并且具有高效的性能。

首先来看乘法器的基本原理。

乘法是将两个数相乘得到的结果存储在两个数的对应位上,然后根据乘积的二进制表示将结果进行位运算得到最终的答案。

对于一位乘法器,其基本操作如下:1. 读取两个数,并将它们存储在一个临时变量中。

2. 对两个数进行位运算,将乘积的对应位设置为1,其他位设置为0。

3. 将结果存储回原来的两倍位置。

下面我们来具体实现一个一位乘法器。

首先,我们需要选择一种编程语言来实现乘法器。

由于一位乘法器只涉及两个数的不同位,因此选择C语言作为实现语言。

接下来,我们需要设计一个乘法器的数据结构。

对于一位乘法器,我们只需要将乘积的二进制表示存储在一个数组中,而不需要存储中间结果。

因此,我们可以使用一个二进制数组来实现一位乘法器。

接下来,我们来实现乘法器的代码。

首先,我们初始化两个数组,一个用于存储乘积的二进制表示,另一个用于存储中间结果。

然后,我们使用位运算来实现乘法操作。

具体地,我们按照以下步骤进行操作:1. 读取两个数。

2. 对两个数进行位运算。

3. 将乘积的对应位设置为1,其他位设置为0。

4. 将结果存储回原来的两倍位置。

下面是完整的代码实现:```c#include <stdio.h>#include <stdlib.h>#define MAX_INT 32767// 乘法器数据结构typedef struct {int value;int bit[2];} 乘积;// 初始化乘积void init_积(乘积*积) {积->value = 0;for (int i = 0; i < 2; i++) {积->bit[i] = 0;}}// 读取两个数int read_nums(乘积*积, int num1, int num2) { 乘积 temp;init_积(&temp);int carry = 0;for (int i = 0; i < 8; i++) {int bit = (num2 >> i) & 1;temp.bit[i] = bit;if (bit) {carry++;}}temp.value = carry ? (temp.value + num1) : num1;return temp.value;}// 位运算void bit_Ops(乘积*积, int num1, int num2, int bit) { if (bit) {积->bit[2 * bit - 1] = num2 & 1;}}// 打印结果void print_result(乘积*积, int num1, int num2) {for (int i = 0; i < 2; i++) {printf("%d ",积->bit[i]);}printf("");}int main() {乘积积1,积2;int num1, num2;printf("请输入两个整数:");scanf("%d%d", &num1, &num2);printf("请输入第一个整数:");scanf("%d", &积1.value);printf("请输入第二个整数:");scanf("%d", &积2.value);printf("请输入第一个整数的位数: ");scanf("%d", &积1.bit[0]);printf("请输入第二个整数的位数: ");scanf("%d", &积2.bit[0]);printf("计算结果为:");printf("%d", read_nums(积1, num1, num2));printf("计算结果的位数:");printf("%d ",积1.bit[2 *积1.bit[0] - 1]);printf(" ");printf("计算结果的进位:");printf("%d ",积2.bit[2 *积2.bit[0] - 1]);printf(" ");return 0;}```根据上面的代码,我们可以得到一位乘法器的基本结构。

2020年恢复余数法定点原码一位除法器的设计精品版

2020年恢复余数法定点原码一位除法器的设计精品版

****************课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:恢复余数法定点原码一位除法器的设计院(系):*************专业:*************班级:*************学号:*************姓名:*************指导教师:*************完成日期:*************目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (1)1.3设计环境 (3)第2章详细设计方案 (4)2.1顶层方案图的设计与实现 (4)2.1.1创建顶层图形设计文件 (4)2.1.2器件的选择与引脚锁定 (5)2.1.3 编译、综合、适配 (6)2.2功能模块的设计与实现 (6)2.2.1寄存器模块的设计与实现 (6)2.2.2数据选择器模块的设计与实现 (8)2.2.3补码器模块的设计与实现 (12)2.2.4加法器模块的设计与实现 (13)2.2.5移位寄存器模块的设计与实现 (15)2.3仿真调试 (18)第3章编程下载与硬件测试 (20)3.1编程下载 (20)3.2硬件测试及结果分析 (20)参考文献 (22)附录(电路原理图) (23)第1章总体设计方案1.1 设计原理定点原码一位除法器的原理是根据人工进行二进制除法的规则:判断被除数与除数的大小,若被除数小,则上商0,并在余数最低位补0,再用余数和右移一位的除数比,若够除,则上商1,否则上商0。

然后继续重复上述步骤,直到除尽(即余数为0)或已得到的商的位数满足精度要求为止。

上述计算方法要求加法器的位数为除数位数的两倍。

但分析后,会发现右移除数,可以通过左移被除数(余数)来代替,左移出界的被除数(余数)的高位都是无用的0,对运算不会产生任何影响。

另外,上商0还是1是计算者用观察比较的办法确定的,而计算机只能用做减法判断结果的符号为负还是为正来确定。

当差为负时,上商为0,同时还应把除数再加到差上去,恢复余数为原来的正值之后再将其左移一位。

定点原码一位除法器的设计

定点原码一位除法器的设计

课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码一位除法器的设计(系):业: 级: 号: 名:指导教师:完成日期:第1章总体设计方案1.1设计原理1.2设计环境第2章详细设计方案2.1顶层方案图的设计与实现.......2.1.1创建顶层图形设计文件........2.1.2器件的选择与引脚锁定........2.2功能模块的设计与实现.........2.2.1选择移位模块的设计与实现.2.2.2余数选择器模块的设计与实现2.2.3控制器模块的设计与实现... 2.3仿真调试...................... 第3章编程下载与硬件测试.......... . (4) (4) (4) (6) (6) (9)..10 .11.133.1编程下载..........3.2硬件测试及结果分析参考文献............... 13 13 14第1章总体设计方案1.1 设计原理定点原码一位除法的计算有恢复余数和加减交替两种算法,商的符号为除数与被除数两符号位的异或值,数值则为两数绝对值相除后的结果。

此设计方案仅采用恢复余数法进行设计。

恢复余数定点原码一位除法器实现的功能如表 1.1所示,设计的电路应实现表1.1中给定的功能。

设:X=X0 X1……X nY=Y0 Y1……Y nX0 X1,丫0丫1分别为符号位,K为两符号位的异或值X/Y=K*|X|/|Y||X|/|Y|利用恢复余数法求的,在计算机中,商只能用做减法判结果的符号为正还是为负来确定。

当差为负时,上商为0,同时还应该把除数再加到差上去,恢复余数为原来的正值之后再左移一位。

若减得的差为0或为正值时,就没有恢复余数的操作,上商为1,余数左移一位。

其计算过程如下:例:已知:X=0.0100丫=0.1000求:X/Y表1.1恢复余数定点原码一位除法器功能表恢复余数定点原码一位除法器的整体设计包含两输入寄存器模块,一个加法运算模块,一个余数移位模块,一个商移位模块和一个由触发器和计数器构成的控制模块,移位模块采用Verilog设计输入方式,其余采用原理图设计输入方式。

定点原码一位乘法器的设计 (3)

定点原码一位乘法器的设计 (3)

沈阳航空工业学院课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码一位乘法器的设计院(系):计算机学院专业:计算机科学与技术班级:4401102学号:200403011034姓名:蔡丽娇指导教师:刘泽显完成日期:2006年12月31日沈阳航空工业学院课程设计报告目录第1章总体设计方案 (1)1.1 设计原理 (1)1.2 设计思路 (1)1.3 设计环境 (2)第二章详细设计方案 (3)2.1顶层方案图的设计与实现 (3)2.1.1创建顶层图形设计文件 (3)2.1.2器件的选择与引脚锁定 (3)2.2 功能模块的设计与实现 (5)2.2.1 8位移位电路 (5)2.2.2 部分积寄存器 (7)2.2.3 乘数寄存器 (7)2.2.4 二路选择器 (8)2.2.5 计数器 (9)2.2.6 结果输出器 (11)2.3 仿真调试 (13)第3章编程下载与硬件测试 (14)3.1 编程下载 (14)3.2 硬件测试及结果分析 (14)参考文献 (15)附录(电路原理图) (16)第1章总体设计方案1.1 设计原理定点原码一位乘法器的设计主要是基于原码一位乘法的计算过成。

设计内容主要是实现输入被乘数和乘数经电路得出结果。

设计思想是:以乘数的最低位作为乘法判断位,若判断位为1,则在前次部分积(初始部分积为0)上加上被乘数,然后连同乘数一起右移一位;若判断位为0,则在前次部分积上加0,然后连同乘数一起右移一位。

重复此判断过程,直到运算n次为止(n为乘数数值部分的长度)。

1.2 设计思路原码一位乘法器主要包括ALU﹑部分积寄存器﹑乘数移位寄存器﹑被乘数寄存器和移位电路五大部分。

这五大部分就作为底层设计,其中乘数移位寄存器需要保留移出的最低位,它的最高位要接收部分积移出的最低位这两部分采用V erilog语言进行设计,顶层的乘法器采用原理图设计输入方式。

原码一位乘的数值运算中不需要考虑符号位的情况,符号位于数值位分开处理。

不恢复余数法定点原码一位除法器的的设计汇总

不恢复余数法定点原码一位除法器的的设计汇总

沈阳航空航天大学课程设计报告目录学术诚信声明 ................................................................................... 错误!未定义书签。

第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功能模块的设计与实现 (6)2.2.1 输入模块的设计与实现 (6)2.2.移位模块的设计与实现 (7)2.2.3加法器模块的设计与实现 (9)2.2.4 相反补码模块的设计与实现 (10)2.3仿真调试 (11)第3章编程下载与硬件测试 (13)3.1编程下载 (13)3.2硬件测试及结果分析 (13)参考文献 (15)附录(电路原理图) (16)第1章总体设计方案1.1 设计原理减交替法的实现是当某一次求得的差值(余数Ri)为负时,不恢复它,继续求下一位的商,但用加上除数(+[—Y]补)的办法来取代(-Y)的操作,其他操作依然不变。

(1)当余数为正时,商上“1”,求下一位商的办法是余数左移一位,再减去除数;(2)当余数为负数时,商上“0”,求下一位商的办法是余数左移一位,再加上除数。

(3)这种方法不用恢复余数,但若最后一次上商为“0”,而又需要得到正确的余数,则在这最后一次仍需恢复余数。

1.2 设计思路课程设计的要求为:(1)采用定点原码一位除法器由一个除数寄存模块,一个被除数寄存模块,一个加法模块,一个移位模块,一个移位模块、一个商寄存模块,采用逻辑电路设计输入方式。

(2)定点原码一位除法器的顶层采用原理图设计输入方式。

课程设计的思路为:(1)由于是不恢复余数法,所以需要修正余数为负的情况,所以原理图如图1.2:图1.2 不恢复余数法一位除法器设计总框图1.3 设计环境(1)硬件环境•伟福COP2000型计算机组成原理实验仪COP2000计算机组成原理实验系统由实验平台、开关电源、软件三大部分组成实验平台上有寄存器组R0-R3、运算单元、累加器A、暂存器B、直通/左移/右移单元、地址寄存器、程序计数器、堆栈、中断源、输入/输出单元、存储器单元、微地址寄存器、指令寄存器、微程序控制器、组合逻辑控制器、扩展座、总线插孔区、微动开关/指示灯、逻辑笔、脉冲源、20个按键、字符式LCD、RS232口。

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

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

沈阳航空航天大学课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点补码一位乘法器的设计院(系):计算机学院专业:计算机科学与技术班级:84010101学号:2008040101002姓名:边爽指导教师:曹一鹏完成日期:2011年1月14日沈阳航空航天大学课程设计报告目录第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.1.3编译、综合、适配 (7)2.2功能模块的设计与实现 (7)2.2.1 取补模块的设计与实现 (7)2.2.2选择器模块的设计与实现 (9)2.2.3 乘数补码移位寄存器模块的设计与实现 (12)2.2.4 部分积移位寄存器模块的设计与实现 (14)2.2.5加法器模块的设计与实现 (16)2.3仿真调试 (16)第3章编程下载与硬件测试 (19)3.1编程下载 (19)3.2硬件测试及结果分析 (19)参考文献 (22)附录(电路原理图) (23)第1章 总体设计方案1.1 设计原理由于机器都采用补码做加减运算,所以设计补码乘法器能避免码制转换,提高机器效率。

在计算两个补码相乘时,可以通过Booth 算法来实现定点补码一位乘的功能。

布斯(Booth)算法采用相加和相减的操作计算补码数据的乘积,Booth 算法对乘数从低位开始判断,根据后两个数据位的情况决定进行加法、减法还是仅仅进行移位操作。

补码一位乘法的运算规则:(1) 被乘数一般取双符号位参加运算。

(2) 乘数可取单符号位以决定最后一步是否需要校正,即是否加补][X -。

(3) 乘数末位增设附加位1+n y ,且初值为0。

部分积补][0Z 初始值为0。

(4) 被乘数[x]补乘以对应的相邻两位乘数(n n y y -+1)之差值,再与前部分积累加,然后右移一位(乘2-1),形成该步的部分积累加和。

5讲 定点数除法

5讲 定点数除法

Ë Ô Ó ¼ õ ¼ Ë ³ ý ³
第5讲
21
第3章—2 定点数除法运算
八、运算部件

浮点运算器
根据浮点运算算法,浮点运算器一般包括阶码 运算何尾数运算两个部分。 阶码运算是一个定点整数运算部件; 尾数运算是一个定点小数运算部件。 Intel 80287支持80位浮点数运算,其中阶码 16位,尾数64位。关键运算部件有:
12

舍入处理


检查是否溢出

第5讲
第3章—2 定点数除法运算
五、浮点数的加、减运算方法

已知:X=2010· (0.11011011), Y=2100· (-0.10101100),求Z=X+Y。




①对阶操作: 阶差△E=[Ex]补+[-Ey]补=00010+11100=11110 X阶码小,Mx左移2位,保留阶码E=00100 Mx=0.0011 0110 11,[Mx]补=00.0011 0110 11 ②尾数相加: [Mx]补+[My]补=11.1000 1010 11, Mz=-0.0111010101 ③规格化操作: 左移一位, [Mz]补=11.0001 0101 10 阶码减1,E=00011 ④舍入:附加位最高位为1,在结果的最低位+1, [M]补=11 00010110,M=-0.11101010 ⑤判溢出:阶符为00,不溢出,最终结果为

截断处理:无条件地丢掉正常尾数最低位之后的全部数值 舍入处理:运算过程中保留右移中移出的若干高位的值,然而 再按某种规则用这些位上的值修正尾数

第5讲
判溢出
14
第3章—2 定点数除法运算

16位定点数原码一位乘法器的设计与实现课程设计报告

16位定点数原码一位乘法器的设计与实现课程设计报告

(此文档为word格式,下载后您可任意编辑修改!)计算机科学与工程学院课程设计报告题目全称: 16位定点数原码一位乘法器的设计与实现课程名称:计算机组成原理指导老师:谭浩职称:(注:学生姓名填写按学生对该课程设计的贡献及工作量由高到底排列,分数按排名依次递减。

序号排位为“1”的学生成绩最高,排位为“10”的学生成绩最低。

)指导老师评语:签字:摘要Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。

本实验用Verilog HDL语言设计了全加器实现的组合乘法器,通过功能仿真,验证了结果。

关键词:乘法器,Verilog,组合逻辑,全加器ABSTRACT Text….Keywords:目录(自动插入目录)第一章绪论 (1)1.1 选题背景及意义 (1)1.2 国内外研究现状 (1)1.3 主要内容与章节安排 (1)1.4 本章小结 (1)第二章课程设计的需求分析 (3)2.1 环境需求 (3)2.2 功能需求 (3)2.3 性能需求 (3)2.3 本章小结 (3)第三章 ****的设计 (5)3.1 总体设计 (5)3.2 功能模块设计 (5)3.3 本章小结 (5)第四章 ****的实现 (7)4.1 开发环境介绍 (7)4.2 主要功能模块的实现 (7)4.3 本章小结 (7)第五章测试及成果展示 (9)5.1 测试环境 (9)5.2 测试用例和结果 (9)5.3 成果展示 (9)5.4 本章小结 (9)第六章总结与展望 (11)参考文献 (12)第一章绪论1.1 选题背景及意义随着计算机科学技术的发展,人们获得信息的途径更加多样,获取信息的速度更加快捷。

硬件的发展允许程序员编出很多精彩的使用软件,也使得计算机更加普及。

中央处理器CPU的好坏是影响和制约计算机速度和性能的关键因素。

而加法器是组成CPU的的重要部件,一般运算速度的快慢就取决与每秒执行加法的次数,加法器是算术逻辑单元中的基本逻辑器件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

航空航天大学课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码一位除法器的设计院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:鹏指导教师:周大海完成日期:2014年01月10日目录第1章总体设计方案 (2)1.1设计原理 (2)1.2设计思路 (4)1.3设计环境 (4)第2章详细设计方案 (4)2.1总体方案的设计与实现 (6)2.1.1总体方案的逻辑图 (6)2.1.2计算算法总流程图 (7)2.2功能模块的设计与实现 (8)2.2.1 操作数预处理模块的设计与实现 (8)2.2.2 上商置0模块的设计与实现 (9)2.2.3 上商置1模块的设计与实现 (9)2.2.4 商符运算模块的设计与实现 (10)第3章测试结果 (12)3.1程序仿真 (12)3.2仿真测试 (12)3.2.1 仿真测试一——两个正数除法运算 (12)3.2.2 仿真测试二——一个正数一个负数除法运算 (16)3.2.3 仿真测试三——两个负数除法运算 (18)参考文献 (20)附录(源程序清单) (21)第1章总体设计方案1.1 设计原理原码一位除,即两个原码数相除,商的符号位运算为除数和被除数的符号异或值。

这里采用的算法为恢复余数法,而且除数和被除数规定为4位。

实验的数据从试验箱的开关输入,而且运算的结果在OUT寄存器中显示出来。

整个过程通过汇编语言编写实现。

恢复余数法定点原码一位除法器工作原理大致如下:设: X=X7X6X5X4X3X2X1X0Y=Y7Y6Y5Y4Y3Y2Y1Y0其中高四位X7X6X5X4和Y7Y6Y5Y4为符号位,低四位X3X2X1X0和Y3Y2Y1Y0为数据位。

则:X/Y=K*|X|/|Y|其中,|X|和|Y|为X和Y的绝对值,K为X和Y的符号位的异或值。

|X|/|Y|利用恢复余数法求的,商根据余数的符号是正或负来判断。

当为负时,上商为0,同时还应该把除数再加到差上去,恢复余数为原来的正值之后再左移一位。

若差为0或为正值时,就没有恢复余数的操作,上商为1,余数左移一位。

下面通过一道例题详细理解恢复余数法定点原码一位除法器的工作原理。

详细过程如表1.1所示。

例:已知:X= -0.1011Y= -0.1101求:[X/Y]原解:由X= 0.1011, Y= -0.1101得 [X]原=1.1011,X*=0.1011[Y]原=1.1101,Y*=0.1101,[-Y*]补=1.0011下面表1.1列出了商值得整个求解过程。

表1.1恢复余数定点原码一位除法器功能表故:商值为0.1101=1⊕1=0商的符号位为:X0⊕Y0所以[X/Y]原 =0.1101由此例可见,共左移4次,上商5次,第一次上的商在商的整数位上,这对小数除法而言可用它作溢出判断。

即当该位为“1”时,表示此除法溢出,不能进行,应由程序进行处理;当为“0”时,说明除法合法,可以进行。

1.2 设计思路基于恢复余数法的定点原码一位除法器的设计主要包含如下4个部分:①求X* 和Y*:即去掉除数和被除数的符号位,运算过程中把除数和被除数都按照正数进行运算。

只需要将除数和被除数都和“0FH(00001111)”进行“与”运算即可;②上商1,减去余数:用被除数减去除数,如果运算结果大于0(符号位为0),则上商1,将运算结果左移一位,同时商值也左移一位,下步操作为减掉除数;③上商0,恢复余数:用被除数减去除数,如果运算结果小于0(符号位为1),则上商0,马上加上除数也就是恢复余数至上一步状态,再将运算结果和商值分别左移1位;④商值的符号位运算:在最原始状态下输入得到的被除数和除数分别保存在两个存中,在上述三步运算过程完全结束后,再从存中读出最原始的除数和被除数进行符号位异或运算,运算结果在与商值进行相应运算即可得到最终运算结果。

1.3设计环境伟福COP2000实验箱,用汇编语言编程实现定点原码一位除法器COP2000 计算机组成原理实验系统由实验平台、开关电源、软件三大部分组成。

实验平台上有寄存器组R0-R3、运算单元、累加器A、暂存器W、直通/左移/右移单元、地址寄存器、程序计数器、堆栈、中断源、输入/输出单元、存储器单元、微地址寄存器、指令寄存器、微程序控制器、组合逻辑控制器、扩展座、总线插孔区、微动开关/指示灯、逻辑笔、脉冲源、20 个按键、字符式LCD、RS232 口。

COP2000集成调试软件(即仿真测试软件)共分为6部分:(1)主菜单区实现实验仪的各项功能的菜单,包括[文件][编辑][汇编][运行][帮助]五大项,各项线面做详细介绍。

(2)快捷图标区快速实现各项功能按键(3)源程序/机器码区在此区域有源程序窗口,反汇编窗口,EM程序代码窗口。

源程序用于输入,显示,编辑汇编源程序:反汇编窗口显示程序编译后的机器码及反汇编的程序;EM程序代码窗口用数据方式机器码。

(4)机构图/逻辑波形区结构图能结构化显示模型机的各部件,以及运行时数据走向寄存器值;逻辑波形图能显示模型机运行时所有信号的程序。

(5)微程序/跟踪区微程序表格用来显示程序运行时微程序的时序,及每个时钟脉冲各控制位的状态,跟踪表用来记录显示程序及微程序执行的轨迹,指令系统可以帮助你设计新的指令系统。

(6)寄存器状态区用来显示程序执行时各部寄存器的值。

图1.1 COP2000计算机组成原理试验系统模拟软件界面示意图第2章详细设计方案2.1 总体方案的设计与实现定点原码一位除,算法为恢复余数法,当余数为负时,需加上除数,将其恢复城原来的余数。

商值的确定是通过比较被除数和除数绝对值的大小,即”X”-”Y”实现的,而计算机只设加法器,所以需要将”X”-”Y”操作变为|X|补+|Y|补得操作。

2.1.1总体方案的逻辑图图2.1 定点原码一位除法器整体设计框图如上逻辑框图2.1中所示,R0、R1、R2均是8位的寄存器。

R1中保存的是被除数。

R2中保存的是除数。

R3中保存的为商,另外R4寄存器可以作为计时器用来控制左移的次数。

左移运算就是除法运算过程中逐位运算的过程,右移运算主要是在符号位运算过程中获取除数和被除数符号位所用,最终结果在OUT中输出。

2.1.2计算算法总流程图图2.2 定点原码一位除法器计算算法过程流程图算法流程图如图2.2所示。

除法开始前,R2寄存器被清0,准备接收商,被除数的原码放在R0寄存器中,除数的原码放在R1寄存器中,计数器R3中存放需要移位的次数。

除法开始后,首先判断除数是否为0,若除数为0则进行处理,若不为0,则用被除数减去除数,若运算结果大于0,商上1。

若结果小于0,商上0。

然后被除数左移一位,计数器减1。

当计数器R3容为0时,运算结束。

2.2 功能模块的设计与实现主要模块包括:操作数预处理模块、上商置0模块、上商置1模块、商符运算模块四大模块。

2.2.1 操作数预处理模块的设计与实现2.2.1.1功能描述操作数预处理模块的主要功能是对操作数的初始化及预处理。

具体包括下面两个方面的处理:1、将输入的除数和被除数保存在某个存中备份,备份的原始数据以便将来进行符号位的运算。

2、求输入的除数和被除数的数据位,也就是将除数和被除数全部转化为正数进行后面的计算,具体做法就是将除数和被除数分别与“00001111(0FH)”进行“与”运算,保证运算过程中的初始数据均为正数。

2.2.1.2流程图图2.3 操作数预处理模块流程图2.2.2 上商置0模块的设计与实现2.2.2.1功能描述上商置0模块中要进行恢复余数,原码一位除法器恢复余数法进行计算,区别于加减交替算法。

当余数为负时,将商的最后一位添0,这时,需要进行恢复,余数加上[Y*]补,再将得到的余数和商同时左移一位,然后余数再加上[—Y*]补存到R2上,再判断余数的正负,如果余数为负时,循环进行上商置0的操作,否则,进行上商置1的操作。

2.2.2.2流程图图2.4 上商置0模块流程图2.2.3 上商置1模块的设计与实现2.2.3.1功能描述上商置1的算法比较简单,不存在不同的算法,原码一位除法都是相同的计算。

当余数为正时上商置1,这时,再将得到的余数和商同时向左移一位,然后余数加上[—Y*]补存到R2上,在判断余数的正负。

如果余数为正时,循环进行上商置1的操作,否则,进行上商置0的操作。

2.2.3.2流程图图2.5 上商置1模块流程图2.2.4 商符运算模块的设计与实现2.2.4.1功能描述商的符号计算原码一位除法和原码一位乘法一样都是单独处理的,商符由两数的符号位进行异或运算求得,商值是由两数绝对值相除求得。

将9FH和9EH地址的除数X和被除数Y分别右移四位,得到X1和Y1再将两数进行相加运算,得到一个值是Z,然后判断Z的最低位是否为零,如果为零,则商的符号为正,否则商的符号为负。

2.2.4.2 流程图图2.6 商符运算模块流程图第三章测试结果3.1程序仿真将事先编好的汇编程序输入到列表里,保存将格式改写成.ASM,再进行仿真,仿真可以一步一步进行仿真,你可以看到每步执行过程中,寄存器R0~R3和累加器A的变化,根据变化可以知道每步执行是否正确,直到最后输出OUT和R2。

3.2仿真测试3.2.1 仿真测试一——两个正数除法运算当X=0.1011B,Y=0.1101B时的仿真结果如下图所示。

已知X=0.1011B,Y=0.1101B,根据原码一位除法恢复余数法进行计算可得出商为0.1101,再将X 和Y的符号位进行异或可得出商的符号为正,所以最终商为0.1101,余数为0.0111。

仿真过程图如下所示:图3.1 仿真测试一数据初始化图如图3.1所示。

R0、R1、R2和R3 4个寄存器中分别初始化存入原始数据被除数0BH、除数0DH、商值00H和计数器初始值04H。

图3.2 仿真测试一数据备份图如图3.2所示,将原始数据被除数和除数存入存中备份,以便将来做商符计算时使用,图中MAR中显示的地址为除数0DH 存入的地址9E。

图3.3 仿真测试一数据预处理图如图3.3所示,将原始数据被除数和除数进行去符号处理使之均变为正数进行运算,这里由于初始数据本身就是正数,所以R0和R1寄存器中数据不变。

图3.4 仿真测试一上商0仿真图当被除数与除数的差值为负时,进行上商0模块,恢复余数至0BH,并进行左移运算变为16H,再进行减除数运算,运算结果为09H,同时计数器减1,如图3.4中R0寄存器和R3寄存器所示。

图3.5 仿真测试一上商0仿真图当被除数与除数的差值为正时,进行上商1模块,左移一位再减去除数,同时计数器减1,如图3.5中R0寄存器和R3寄存器所示,R2寄存器中上商1并左移一位变为02H。

图3.6 仿真测试一商符运算仿真图从存中读出原来备份的原始除数和被除数数据通过右移四步后分别获取其符号位数据进行相减,图3.6中R0寄存器显示的就是差值结果,这里由于是两个整数所以符号位均为0,相减结果仍为0。

相关文档
最新文档