基于恢复余数法定点原码一位除法器的方案课程方案报告.docx

上传人:b****2 文档编号:2618112 上传时间:2023-05-04 格式:DOCX 页数:25 大小:341.88KB
下载 相关 举报
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第1页
第1页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第2页
第2页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第3页
第3页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第4页
第4页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第5页
第5页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第6页
第6页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第7页
第7页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第8页
第8页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第9页
第9页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第10页
第10页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第11页
第11页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第12页
第12页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第13页
第13页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第14页
第14页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第15页
第15页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第16页
第16页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第17页
第17页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第18页
第18页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第19页
第19页 / 共25页
基于恢复余数法定点原码一位除法器的方案课程方案报告.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于恢复余数法定点原码一位除法器的方案课程方案报告.docx

《基于恢复余数法定点原码一位除法器的方案课程方案报告.docx》由会员分享,可在线阅读,更多相关《基于恢复余数法定点原码一位除法器的方案课程方案报告.docx(25页珍藏版)》请在冰点文库上搜索。

基于恢复余数法定点原码一位除法器的方案课程方案报告.docx

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

沈阳航空航天大学

 

课程设计报告

 

课程设计名称:

计算机组成原理课程设计

课程设计题目:

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

 

院(系):

计算机学院

专业:

计算机科学与技术

班级:

学号:

姓名:

姜鹏

指导教师:

周大海

完成日期:

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=X7X6X5X4X3X2X1X0

Y=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.1011

Y=-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列出了商值得整个求解过程。

被除数(余数)

说    明

0.1011

+1.0011

0.0000

+[-|y|]补(减去除数)

1.1110

+0.1101

0.0000

余数为负,上商0

恢复余数+[|y|]补

0.1011

1.0110

+1.1011

0.0000

0.0000

被恢复的被除数

←1位

+[-|y|]补(减去除数)

0.1001

1.0010

+1.0011

0.0001

0.0010

余数为正,上商1

←1位

+[-|y|]补(减去除数)

0.0101

0.1010

+1.0011

0.0011

0.0110

余数为正,上商1

←1位

+[-|y|]补(减去除数)

1.1101

+0.1101

0.0110

余数为负,上商0

恢复余数+[|y|]

0.0101

1.0100

+1.0011

0.0110

0.1100

被恢复的被除数

←1位

+[-|y|]补(减去除数)

0.0111

0.1101

余数为正,上商1

表1.1恢复余数定点原码一位除法器功能表

故:

商值为0.1101

商的符号位为:

X0⊕Y0=1⊕1=0

所以[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.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、求输入的除数和被除数的数据位,也就是将除数和被除数全部转化为正数进行后面的计算,具体做法就是将除数和被除数分别与“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章测试结果

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,如图3.4中R0寄存器和R3寄存器所示。

图3.5仿真测试一上商0仿真图

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

 

图3.6仿真测试一商符运算仿真图

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

图3.7仿真测试一最终运算结果仿真图

如图3.7所示,数据运算结果运算后并与上一步的商符运算结果进一步运算得到最终的运算结果输出到OUT单元中,图中OUT单元显示数据为0DH,即被除数0BH和除数0DH运算的最终结果,运算正确。

3.2.2仿真测试二——一个正数一个负数除法运算

在仿真测试一的基础上将被除数X的值修改为X=-0.1011B,其余条件不变。

图3.8仿真测试二数据初始化图

如图3.8所示,如图中R0寄存器中数据变为1BH,其余与仿真一相同。

图3.9仿真测试二数据预处理图

如图3.9所示,将被除数和除数进行去符号处理,因此R0中原来的1BH变为现在的0BH,除数由于本身是正数不变。

由于中间运算过程与仿真一相同,这里不再重复。

图3.10仿真测试二商符运算图

如图3.10所示,R0中现存的01H为被除数的符号位,累加器A中存的为除数符号位(0)减被除数符号位

(1)的差值(-1),也就是0FFH。

图3.11仿真测试二最终运算结果图

如图3.11所示,OUT单元中为最终运算结果数据1DH,运算结果正确。

3.2.3仿真测试三——两个负数除法运算

在仿真测试二的基础上将被除数Y的值修改为Y=-0.1011B,其余条件不变。

图3.12仿真测试三数据初始化图

如图3.12所示,如图中R1寄存器中数据变为1DH,其余与仿真二相同。

图3.13仿真测试三数据预处理图

如图3.13所示,将被除数和除数进行去符号处理,因此R0中原来的1BH变为现在的0BH,除数由原来的1DH变为现在的0DH。

由于中间运算过程与仿真一相同,这里也不再重复。

图3.14仿真测试三商符运算图

如图3.14所示,R0中现存的01H为被除数的符号位,累加器A中存的为除数符号位(0)减被除数符号位

(1)的差值(-1),也就是0FFH。

图3.15仿真测试三最终运算结果图

如图3.15所示,OUT单元中为最终运算结果数据1DH,运算结果正确。

参考文献

[1]唐朔飞.计算机组成原理(第2版)[M].北京:

高等教育出版社,2008

[2]范延滨.微型计算机系统原理、接口与EDA设计技术[M].北京:

北京邮电大学出版社,2006

[3]王爱英.计算机组成与结构(第4版)[M].北京:

清华大学出版社,2006

[4]曹昕燕.EDA技术实验与课程设计[M].北京:

清华大学出版社,2006

[5]伟福COP2000型计算机组成原理试验仪使用说明书

 

附录

 

源程序清单如下:

地址

机器码

汇编语言

注释

00

8C1B

MOVR0,#0BH

输入被除数、除数、商值、计数器的初值分别存到寄存器R0、R1、R2和R3四个寄存器中

02

8D1D

MOVR1,#1DH

04

8E00

MOVR2,#00H

06

8F04

MOVR3,#04H

08

70

MOVA,R0

将被除数和除数分别备份到内存9F和9E单元中保存,以便后面商符运算使用

09

889F

MOV9FH,A

0B

71

MOVA,R1

0C

889E

MOV9EH,A

0E

70

MOVA,R0

将R0寄存器中的被除数与0FH进行“与”运算,目的是让符号位为0

0F

5C0F

ANDA,#0FH

11

80

MOVR0,A

12

71

MOVA,R1

同上步,将除数进行符号预处理,变为正数进行计算

13

5C0F

ANDA,#0FH

15

81

MOVR1,A

16

71

MOVA,R1

将除数与0进行比较,如果除数为0,没有意义,直接跳出去,结束

17

3C00

SUBA,#00H

19

A486

JZOVERFLOW

1B

70

MOVA,R0

用被除数减去除数,并把结果存到R0寄存器中,覆盖原被除数

1C

31

SUBA,R1

1D

80

MOVR0,A

1E

5C10

LOOP:

ANDA,#10H

判断上步结果的正负

20

3C00

SUBA,#00H

如果运算结果符号位为0,即正数,跳到S1

22

A428

JZS1

24

3C10

SUBA,#10H

如果运算结果符号位为1,即负数,跳到S2

26

A43C

JZS2

28

70

S1:

MOVA,R0

上商1模块

29

D4

RLA

将运算结果左移一位,作为新的被除数

2A

80

MOVR0,A

2B

72

MOVA,R2

上商1,也左移一位

2C

1C01

ADDA,#01H

2E

D4

RLA

2F

82

MOVR2,A

30

70

MOVA,R0

新被除数减除数,运算结果仍保存在R0寄存器中

31

31

SUBA,R1

32

80

MOVR0,A

33

73

MOVA,R3

运算过一步后,计数器值减1

34

3C01

SUBA,#01H

36

A451

JZNEXT

运算4步后,跳转出去

38

83

MOVR3,A

减1后仍存到R3寄存器

39

70

MOVA,R0

取新被除数与除数的差

3A

AC1E

JMPLOOP

跳转到LOOP进行判断

3C

70

S2:

MOVA,R0

上商0模块

3D

11

ADDA,R1

加上除数,恢复余数法,使被除数复原

3E

80

MOVR0,A

3F

70

MOVA,R0

被除数复原后,左移一位,形成新的被除数存到R0寄存器

40

D4

RLA

41

80

MOVR0,A

42

72

MOVA,R2

上商0相当于什么都不做,直接左移一位即可,保存到R2寄存器中

43

D4

RLA

44

82

MOVR2,A

45

70

MOVA,R0

新的被除数减去除数,运算结果保存到R0寄存器中覆盖原被除数

46

31

SUBA,R1

47

80

MOVR0,A

48

73

MOVA,R3

计数器值减一

49

3C01

SUBA,#01H

4B

A451

JZNEXT

4次运算结束后跳出去

4D

83

MOVR3,A

新计数器值存到R3

4E

70

MOVA,R0

取新被除数与除数差值

4F

AC1E

JMPLOOP

跳到LOOP进行判断

51

70

NEXT:

MOVA,R0

4次运算已经结束

52

5C10

ANDA,#10H

取最后一次结果符号位

54

3C00

SUBA,#00H

如果为0,即正数,跳到OUT1处理

56

A45C

JZOUT1

58

3C10

SUBA,#10H

如果为1,即负数,跳到OUT2处理

5A

A462

JZOUT2

5C

72

OUT1:

MOVA,R2

最后一次运算结果为正,上商1,将结果保存到R2寄存器,并跳转到F进行商符计算

5D

1C01

ADDA,#01H

5F

82

MOVR2,A

60

AC68

JMPF

62

72

OUT2:

MOVA,R2

最后一次运算结果为负,上商0,将结果保存到R2寄存器,并跳转到F进行商符计算

63

1C00

ADDA,#00H

65

82

MOVR2,A

66

AC68

JMPF

68

789F

F:

MOVA,9FH

商符计算模块

6A

D0

RRA

从内存9F单元取出被除数,右移4次,获得其符号位

6B

D0

RRA

6C

D0

RRA

6D

D0

RRA

6E

80

MOVR0,A

将结果存到R0寄存器

6F

789E

MOVA,9EH

从内存9E单元取出除数,右移4次,获得其符号位;

并将除数符号位减被除数符号位,将结果存到累加器A中即可

71

D0

RRA

72

D0

RRA

73

D0

RRA

74

D0

RRA

75

30

SUBA,R0

76

3C00

SUBA,#00H

如果结果为0,跳到FF2模块进行处理

78

A481

JZFF2

7A

AC7C

JMPFF1

否则跳到FF1模块处理

7C

72

FF1:

MOVA,R2

结果不为0,说明被除数和除数一定是一正一负形式,所以商符符号位也必为1

7D

6C10

ORA,#10H

7F

82

MOVR2,A

80

C4

OUT

81

72

FF2:

MOVA,R2

结果为0,说明被除数和除数一定是同号形式,所以商符符号位也必为0

82

6C00

ORA,#00H

84

82

MOVR2,A

85

C4

OUT

OVERFLOW:

MOVR0

除数为0,跳到这结束

课程设计总结:

本次课程设计让我收获颇丰,起初拿到课程设计题目,不知道如何去实现设计要求,经过前几天查阅资料,老师帮助,我对这次课程设计要求有了更深的了解,知道了具体应该怎样操作,怎样去实现原码一位除法器,怎样去操作Cop2000实验箱。

我想说本次课程设计不但使我们复习了计算机组成原理课程的内容,还让我们复习并应用了算法设计与分析以及汇编语言课程的内容,我们加深了对计算机系统概念的理解。

我衷心感谢学校和老师给我们安排了这次课程设计,我们平时在享受信息时代带来的方便迅捷的同时也养成了懒惰、急于求成的坏习惯,而这次的课程设计不允许我们偷懒,每个人必须下足功夫才能够完成,而在完成的过程中,我们的心态也悄然发生了变化,从开始的些许抵触转变为乐在其中,这难道不值得感谢吗?

我衷心的希望学校学院能给我安排更多的此类实践课程,增强我们的动手实践能力,促进理论知识的消化吸收。

最后感谢几位指导教师的悉心讲解和耐心指导,谢谢您!

指导教师评语:

 

指导教师(签字):

      年月日

课程设计成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2