计算机组成原理课程设计报告要求及模板.docx

上传人:b****5 文档编号:12705296 上传时间:2023-04-21 格式:DOCX 页数:29 大小:230.51KB
下载 相关 举报
计算机组成原理课程设计报告要求及模板.docx_第1页
第1页 / 共29页
计算机组成原理课程设计报告要求及模板.docx_第2页
第2页 / 共29页
计算机组成原理课程设计报告要求及模板.docx_第3页
第3页 / 共29页
计算机组成原理课程设计报告要求及模板.docx_第4页
第4页 / 共29页
计算机组成原理课程设计报告要求及模板.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

计算机组成原理课程设计报告要求及模板.docx

《计算机组成原理课程设计报告要求及模板.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计报告要求及模板.docx(29页珍藏版)》请在冰豆网上搜索。

计算机组成原理课程设计报告要求及模板.docx

计算机组成原理课程设计报告要求及模板

计算机组成原理课程设计报告撰写要求

(一)纸张与页面要求

1.采用国际标准A4型打印纸或复印纸,纵向打印。

2.封页和页面按照下面模板书写(正文为:

小四宋体1.5倍行距)。

3.图表及图表标题按照模板中的表示书写。

(二)课设报告书的内容应包括以下各个部分:

(按照以下顺序装订)

1.封页(见课设模版)

2、学术诚信声明,所有学生必须本人签字,否则教师拒绝给予成绩。

3.任务书(学生教师均要签字,信息填写完整,由指导教师给定)

4.目录

5.正文一般应包括以下内容:

(1)题目介绍和功能要求(或描述)

课程设计任务的详细描述(注意不能直接抄任务书),将内容做更详细的具体的分析与描述;

(2)系统功能模块结构图

绘制系统功能结构框图及主要模块的功能说明;

(3)使用的数据结构的描述:

数据结构设计及用法说明;

(4)涉及到的函数的描述;

(5)主要算法描述(程序流程图)

(6)给出程序测试/运行的结果

设计多组数据加以描述(包括输入数据和输出结果)

(7)课程设计的总结及体会

(8)参考文献

格式要求:

[1]作者,等.书名.出版地:

出版社,出版年

6.附录:

程序清单(应带有必要的注释)

 

 

沈阳航空航天大学

 

课程设计报告

课程设计名称:

计算机组成原理课程设计

课程设计题目:

基于恢复余数法的定点原码

一位除法程序的设计与实现

院(系):

计算机学院

专业:

网络工程

班级:

网络1302

学号:

2013040102082

姓名:

郝志伟

指导教师:

安云哲

说明:

结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。

报告和电子数据必须作为实验现象重复的关键依据。

学术诚信声明

本人声明:

所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。

尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。

与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。

报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。

 

本人签名:

日期:

年月日

 

目录

1总体方案设计1

1.1算法流程1

1.2算法实现2

1.3算法演示3

1.4设计环境4

1.4.1功能介绍4

1.4.2工作界面5

2详细设计方案6

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模块的设计与实现10

2.2.4商符运算模块的设计与实现11

3程序测试13

3.1被除数和除数均为正13

3.1.1初始化各寄存器13

3.1.2保存被除数13

3.1.3保存除数14

3.1.4求被除数和除数的绝对值15

3.1.5上商015

3.1.6上商116

3.1.7余数正负的处理16

3.1.8取被除数和除数的符号17

3.1.9取出余数和除数17

3.1.10输出商18

3.2被除数和除数均为负18

3.2被除数和除数一正一负19

参考文献20

附录21

1总体方案设计

1.1算法流程

原码一位除,提供我们的方法有恢复余数法和加减交替法,我们在这里采用恢复余数法计算定点原码一位除,被除数和除数规定为四位,数据从实验箱的开关输入,运算结果在OUT寄存器中显示。

算法如下:

设:

X=X7X6X5X4X3X2X1X0

Y=Y7Y6Y5Y4Y3Y2Y1Y0

其中高四位X7X6X5X4和Y7Y6Y5Y4为符号位,低四位X3X2X1X0和Y3Y2Y1Y0为数据位。

则:

X/Y=M*(X*/Y*)

M是符号位,X*是被除数的绝对值,Y*是除数的绝对值

M为X和Y的符号位的异或值。

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

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

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

流程如下:

(1)求出被除数和除数的绝对值。

(2)求出除数绝对值相反数的补值。

(3)通过被除数加除数绝对值补码求被除数和除数的差值。

(4)判断被除数的正负。

(5)如果被除数的值为正,那么商执行加1操作后左移一位,被除数执行左移

一位的操作,然后返回到第(3)步。

(6)左移一次之后,计数器中值执行减1的操作。

(7)判断计数器中的值是否为0,如果为0那么就执行(10)。

(8)如果被除数的值为负,被除数执行左移一位的操作,然后商只执行左移一

位的操作,然后返回到第(3)步。

(9)左移一次之后,计数器中值执行减1的操作。

(10)判断计数器中的值是否为0,如果为0那么就执行(10)。

(11)当计数器中的值为0时,被除数减去除数,再次判断被除数值得正负。

(12)当计数器中的值为0时,被除数加除数,恢复余数,再次判断被除数值

的正负。

(13)判断余数的正负,如果余数为正,那么商执行加1的操作,如果余数为

负,那么商的值不变

(14)最后将商的值输出

1.2算法实现

基于恢复余数法的定点原码一位除法器的设计主要包含如下4个部分:

(1)求X*和Y*:

即去掉除数和被除数的符号位,运算过程中把除数和被除数都按照正数进行运算。

只需要将除数和被除数都和“0FH(00001111)”进行“与”运算即可;

(2)上商1,减去余数:

用被除数减去除数,如果运算结果大于0(符号位为0),则上商1,将运算结果左移一位,同时商值也左移一位,下步操作为减掉除数;

(3)上商0,恢复余数:

用被除数减去除数,如果运算结果小于0(符号位为1),则上商0,马上加上除数也就是恢复余数至上一步状态,再将运算结果和商值分别左移1位;

(4)商值的符号位运算:

在最原始状态下输入得到的被除数和除数分别保存在两个内存中,在上述三步运算过程完全结束后,再从内存中读出最原始的除数和被除数进行符号位异或运算,运算结果在与商值进行相应运算即可得到最终运算结果。

 

1.3算法演示

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

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

被除数(余数)

说    明

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

故:

商值为0.1101

商的符号位为:

X0⊕Y0=1⊕1=0

所以[X/Y]原=0.1101

由此例可见,共左移4次,上商5次,第一次上的商在商的整数位上,这对小数除法而言可用它作溢出判断。

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

1.4设计环境

1.4.1功能介绍

伟福COP2000实验箱,用汇编语言编程实现定点原码一位除法器

COP2000计算机组成原理实验系统由实验平台、开关电源、软件三大部分组成。

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

COP2000集成调试软件(即仿真测试软件)共分为6部分:

(1)主菜单区实现实验仪的各项功能的菜单,包括[文件][编辑][汇编][运行][帮助]五大项,各项线面做详细介绍。

(2)快捷键图标区快速实现各项功能按键

(3)源程序/机器码区在此区域有源程序窗口,反汇编窗口,EM程序代码窗口。

源程序用于输入,显示,编辑汇编源程序:

反汇编窗口显示程序编译后的机器码及反汇编的程序;EM程序代码窗口用数据方式机器码。

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

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

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

1.4.2工作界面

COP2000集成开发环境界面图如图1.1:

图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被除数和除数均为正

X=0.1010,Y=0.1101利用原码一位除计算可得商为0.1100,余数为1.0111,再将X和Y的符号异或可得商的符号为正,所以最终输出商为0.1100。

3.1.1初始化各寄存器

图3.1初始化各寄存器

如图3.1所示,将被除数0A,除数0D,商00,计数器初始值04分别放到R0,R1,R2,R3寄存器

3.1.2保存被除数

图3.2保存被除数

如图3.2所示,将被除数0A保存到内存8E中。

3.1.3保存除数

图3.3保存除数

如图3.2所示,将除数保存到内存8F中。

3.1.4求被除数和除数的绝对值

图3.4被除数和除数的绝对值

如图3.4所示,将被除数和除数分别与0F做与运算,求出绝对值放回到R0和R1寄存器。

3.1.5上商0

图3.5上商0

如图3.5所示,被除数小于0,那么上商0,被除数加余数恢复余数,商也左移一位,左移后计数器中的值减1。

3.1.6上商1

图3.6上商1

如图3.6所示,当被除数与除数的差值为正时,进行上商1模块,左移一位再减去除数,同时计数器减1。

3.1.7余数正负的处理

图3.7余数为正

如图3.7所示,余数符号为负,商不做任何处理。

3.1.8取被除数和除数的符号

图3.8取被除数和除数的符号

如图3.8所示,将被除数的符号放在寄存器R0中,将除数的符号放在寄存器R1寄存器中。

3.1.9取出余数和除数

图3.9取出余数和除数

如图3.9所示,将余数和除数分别在寄存器R0,R1中显示。

3.1.10输出商

图3.10输出商

如图3.10所示,被除数和除数均为正数,所以商的符号也为正,余数为负,结果正确。

3.2被除数和除数均为负

X=1.1010,Y=1.1101利用原码一位除计算可得商为0.1100,余数为1.0111,再将X和Y的符号异或可得商的符号为正,所以最终输出商为0.1100。

3.2被除数和除数一正一负

X=1.1010,Y=0.1101利用原码一位除计算可得商为0.1100,余数为1.0111,再将X和Y的符号异或可得商的符号为负,所以最终输出商为1.1100。

 

参考文献

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

高等教育出版社,2008

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

北京邮电大学出版社,2006

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

清华大学出版社,2006

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

清华大学出版社,2006

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

[6]周大海.计算机组成原理实验与课程设计教程[M].北京:

北京航空航天大学出版社,2015

 

附录

源程序清单

序号

机器码

代码

注释

00

8C1A

MOVR0,#1AH

将被除数,除数,商,移动次数初始值分别放到R0,R1,R2,R3

寄存器中

02

8D0D

MOVR1,#0DH

04

8E00

MOVR2,#00H

06

8F04

MOVR3,#04H

08

70

MOVA,R0

将被除数保存到内存8E

09

888E

MOV8EH,A

0B

71

MOVA,R1

将除数保存到内存8F中

0C

888F

MOV8FH,A

0E

70

MOVA,R0

将被除数和0F做“与”运算,进而求出X*

0F

5C0F

ANDA,#0FH

11

80

MOVR0,A

12

71

MOVA,R1

将除数和0F做“与”运算,进而求出Y*

13

5C0F

ANDA,#0FH

15

81

MOVR1,A

16

70

MOVA,R0

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

17

31

SUBA,R1

18

80

MOVR0,A

19

5C10

JUDGE:

ANDA,#10H

将被除数和10做“与”运算,判断正或负数

1B

3C00

SUBA,#00H

符号位为0,即“正数”跳到H1处理

1D

A423

JZH1

1F

3C10

SUBA,#10H

符号位为1,即“负数”跳到H2处理

21

A437

JZH2

23

70

H1:

MOVA,R0

余数做“左移一位”的处理,然后将处理后的结果放回到R0

24

D4

RLA

25

80

MOVR0,A

26

72

MOVA,R2

商先做“加1”操作,

然后做“左移一位”处理后放回到R2寄存器

27

1C01

ADDA,#01H

29

D4

RLA

2A

82

MOVR2,A

2B

70

MOVA,R0

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

2C

31

SUBA,R1

2D

80

MOVR0,A

2E

73

MOVA,R3

左移一次后计数器的值减1,判断是否为0,为0则退出

2F

3C01

SUBA,#01H

31

A44C

JZFINALLY

33

83

MOVR3,A

减1后放回到R3

34

70

MOVA,R0

再次判断余数的正负

35

AC19

JMPJUDGE

37

70

H2:

MOVA,R0

被除数加除数恢复被除数,恢复后放回R0

38

11

ADDA,R1

39

80

MOVR0,A

3A

70

MOVA,R0

余数做“左移一位”的处理,然后将处理后的结果放回到R0

3B

D4

RLA

3C

80

MOVR0,A

3D

72

MOVA,R2

商只做“左移一位”的操作,放回R2寄存器

3E

D4

RLA

3F

82

MOVR2,A

40

70

MOVA,R0

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

41

31

SUBA,R1

42

80

MOVR0,A

43

73

MOVA,R3

计数器的值减1,判断是否左移四次,是就退出

44

3C01

SUBA,#01H

46

A44C

JZFINALLY

48

83

MOVR3,A

减1后放回到R3

49

70

MOVA,R0

再次判断余数的正负

4A

AC19

JMPJUDGE

4C

70

FINALLY:

MOVA,R0

将最终余数保存到内存7E,以便最后输出

4D

887E

MOV7EH,A

4F

5C10

ANDA,#10H

判断余数正负

51

3C00

SUBA,#00H

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

53

A459

JZDEAL1

55

3C10

SUBA,#10H

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

57

A45F

JZDEAL2

59

72

DEAL1:

MOVA,R2

余数为正,商上1,即商做“加1”操作后放回R2

5A

1C01

ADDA,#01H

5C

82

MOVR2,A

5D

AC65

JMPFLAG

跳到商正负的处理

5F

72

DEAL2:

MOVA,R2

余数为负,商上0,商不做任何处理放到R2

60

1C00

ADDA,#00H

62

82

MOVR2,A

63

AC65

JMPFLAG

跳到商正负的处理

65

788E

FLAG:

MOVA,8EH

取出被除数

67

D0

RRA

将被除数右移四位,得到被除数的符号位

68

D0

RRA

69

D0

RRA

6A

D0

RRA

6B

80

MOVR0,A

将被除数符号放到R0

6C

788F

MOVA,8FH

取出被除数

6E

D0

RRA

将除数右移四位,得到被除数的符号位,被除数符号位减除数符号位,将结果存到累加器A

6F

D0

RRA

70

D0

RRA

71

D0

RRA

72

30

SUBA,R0

73

A482

JZZERO

为0,跳到ZERO

75

AC77

JMPNOTZERO

跳到不为0处理

77

72

NOTZERO:

MOVA,R2

不为0,说明被除数和除数异号,商与10“异或”将商的符号变为负

78

6C10

ORA,#10H

7A

82

MOVR2,A

7B

787E

MOVA,7EH

将余数输出到R0

7D

80

MOVR0,A

7E

F7

MOVA,8FH

将被除数输出到R1

7F

8F81

MOVR1,A

81

C4

OUT

输出商

82

72

ZERO:

MOVA,R2

为0,说明被除数和除数同号,商不做任何处理

83

6C00

ORA,#00H

85

82

MOVR2,A

86

787E

MOVA,7EH

将余数输出到R0

88

80

MOVR0,A

89

788F

MOVA,8FH

将被除数输出到R1

8B

81

MOVR1,A

8C

C4

OU

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

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1