精品基于恢复余数法定点原码一位除法器的设计毕业论文报告Word文件下载.docx
《精品基于恢复余数法定点原码一位除法器的设计毕业论文报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《精品基于恢复余数法定点原码一位除法器的设计毕业论文报告Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
目录
第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=X7X6X5X4X3X2X1X0
Y=Y7Y6Y5Y4Y3Y2Y1Y0
其中高四位X7X6X5X4和Y7Y6Y5Y4为符号位,低四位X3X2X1X0和Y3Y2Y1Y0为数据位。
则:
XY=K*|X||Y|
其中,|X|和|Y|为X和Y的绝对值,K为X和Y的符号位的异或值。
|X||Y|利用恢复余数法求的,商根据余数的符号是正或负来判断。
当为负时,上商为0,同时还应该把除数再加到差上去,恢复余数为原来的正值之后再左移一位。
若差为0或为正值时,就没有恢复余数的操作,上商为1,余数左移一位。
下面通过一道例题详细理解恢复余数法定点原码一位除法器的工作原理。
详细过程如表1.1所示。
例:
已知:
X=-0.1011
Y=-0.1101
求:
[XY]原
解:
由X=0.1011,Y=-0.1101
得[X]原=1.1011,X*=0.1011
[Y]原=1.1101,Y*=0.1101,[-Y*]补=1.0011
下面表1.1列出了商值得整个求解过程。
被除数(余数)
商
说
明
0.1011
+1.0011
0.0000
+[-|y|]补(减去除数)
1.1110
+0.1101
余数为负,上商0
恢复余数+[|y|]补
1.0110
+1.1011
被恢复的被除数
←1位
0.1001
1.0010
0.0001
0.0010
余数为正,上商1
0.0101
0.1010
0.0011
0.0110
1.1101
恢复余数+[|y|]
1.0100
0.0110
0.1100
0.0111
0.1101
表1.1恢复余数定点原码一位除法器功能表
故:
商值为0.1101
商的符号位为:
X0⊕Y0=1⊕1=0
所以[XY]原=0.1101
由此例可见,共左移4次,上商5次,第一次上的商在商的整数位上,这对小数除法而言可用它作溢出判断。
即当该位为“1”时,表示此除法溢出,不能进行,应由程序进行处理;
当为“0”时,说明除法合法,可以进行。
1.2设计思路
基于恢复余数法的定点原码一位除法器的设计主要包含如下4个部分:
①求X*和Y*:
即去掉除数和被除数的符号位,运算过程中把除数和被除数都运算即可;
②上商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.1COP2000计算机组成原理试验系统模拟软件界面示意图
第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、求输入的除数和被除数的数据位,也就是将除数和被除数全部转化为正数“与”运算,保证运算过程中的初始数据均为正数。
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章测试结果
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和R34个寄存器中分别初始化存入原始数据被除数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