计算机组成原理课程设计61103.docx
- 文档编号:16920032
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:30
- 大小:1.02MB
计算机组成原理课程设计61103.docx
《计算机组成原理课程设计61103.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计61103.docx(30页珍藏版)》请在冰点文库上搜索。
计算机组成原理课程设计61103
计算机组成原理课程设计报告
专业名称:
软件工程
班级:
1401
学号:
3140608011
学生姓名:
李威
指导教师:
丁伟
设计时间:
2015年6月20日—2015年6月28日
第一天:
熟悉微程序的设计和调试方法
一、设计目标
1、掌握微程序的设计方法
2、熟悉利用调试软件运行、调试微程序的方法
二、操作提示
1、准备工作
从课程资源网站下载PPT。
2、下载FPGA配置数据
利用软件将JUC2.SOF下载到FPGA。
3.输入微程序
利用调试软件将微程序写入控存。
设置实验方式和观察信号。
微程序如下:
①.取指令微程序
微地址(H)
微指令(H)
微指令字段(H)
微命令
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
000
20080001
1
0
0
0
2
0
0
0
0
001
PCoe,ARce
001
00069002
0
0
0
0
1
2
1
1
0
002
ARoe’,RD,DRce’,PCinc
002
CC000003
6
3
0
0
0
0
0
0
0
003
DRoe,IRce
003
00000404
0
0
0
0
0
0
0
0
2
004
NOP
②.取源操作数为立即数的微程序
微地址(H)
微指令(H)
微指令字段(H)
微命令
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
004
00000A08
0
0
0
0
0
0
0
0
5
008
NOP
005
00000A08
0
0
0
0
0
0
0
0
5
008
NOP
008
50000006
2
4
0
0
0
0
0
0
0
006
GRSoe,TRce
009
40080015
2
0
0
0
2
0
0
0
0
015
GRSoe,ARce
00A
54080010
1
0
0
0
2
0
0
0
0
010
PCoe,ARce
00B
20080012
1
0
0
0
2
0
0
0
0
012
PCoe,ARce
00C
20080013
1
0
0
0
2
0
0
0
0
013
PCoe,ARce
00D
20080017
1
0
0
0
2
0
0
0
0
017
PCoe,ARce
00E
2008001A
1
0
0
0
2
0
0
0
0
01A
PCoe,ARce
00F
2008001D
1
0
0
0
2
0
0
0
0
01D
PCoe,ARce
010
02700011
0
0
9
3
0
0
0
0
0
011
INC,SVce
011
68000015
3
2
0
0
0
0
0
0
0
015
Soe,GRSce
012
00069016
0
0
0
0
1
2
1
1
0
016
ARoe’,RD,DRCE’,PCinc
013
00069014
0
0
0
0
1
2
1
1
0
014
ARoe’,RD,DRce’,PCinc
014
C0080015
6
0
0
0
2
0
0
0
0
015
DRoe,ARce
015
00061016
0
0
0
0
1
2
0
1
0
016
ARoe’,RD,DRce’
016
D0000006
6
4
0
0
0
0
0
0
0
006
DRoe,TRce
017
00069018
0
0
0
0
1
2
1
1
0
018
ARoe’,RD,DRce’,PCinc
018
C0080019
6
0
0
0
2
0
0
0
0
019
DRoe,ARce
019
00061014
0
0
0
0
1
2
0
1
0
014
ARoe’,RD,DRce’
01A
0006901B
0
0
0
0
1
2
1
1
0
01B
ARoe’,RD,DRce’,PCinc
01B
D400001C
6
5
0
0
0
0
0
0
0
01C
DRoe,Ace
01C
40700020
2
0
1
3
0
0
0
0
0
020
GRSoe,ADD,SVce
01D
0006901E
0
0
0
0
1
2
1
1
0
01E
ARoe’,RD,DRce’,PCinc
01E
D400001F
6
5
0
0
0
0
0
0
0
01F
DRoe,Ace
01F
20700020
1
0
1
3
0
0
0
0
0
020
PCoe,ADD,SVce
020
60080015
3
0
0
0
2
0
0
0
0
015
Soe,ARce
③.取目的操作数为寄存器寻址的微程序
微地址(H)
微指令(H)
微指令字段(H)
微命令
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
006
00000A28
0
0
0
0
0
0
0
0
5
028
NOP
028
54000007
2
5
0
0
0
0
0
0
0
007
GRSoe,Ace
029
40080035
2
0
0
0
2
0
0
0
0
035
GRSoe,ARce
02A
54080030
2
5
0
0
2
0
0
0
0
030
GRSoe,ARce,Ace
02B
00000007
0
0
0
0
0
0
0
0
0
007
NOP
02C
20080033
1
0
0
0
2
0
0
0
0
033
PCoe,ARce
02D
20080037
1
0
0
0
2
0
0
0
0
037
PCoe,ARce
02E
2008003A
1
0
0
0
2
0
0
0
0
03A
PCoe,ARce
02F
2008003D
1
0
0
0
2
0
0
0
0
03D
PCoe,ARce
030
02700031
0
0
9
3
0
0
0
0
0
031
INC,SVce
031
68000035
3
2
0
0
0
0
0
0
0
035
Soe,GRSce
032
60080035
3
0
0
0
2
0
0
0
0
035
Soe,ARce
033
00069034
0
0
0
0
1
2
1
1
0
034
ARoe’,RD,DRce’,PCinc
034
C0080035
6
0
0
0
2
0
0
0
0
035
DRoe,ARce
035
00061036
0
0
0
0
1
2
0
1
0
036
ARoe’,RD,DRce’
036
D4000007
6
4
0
0
0
0
0
0
0
008
DRoe,TRce
037
00069038
0
0
0
0
1
2
1
1
0
038
ARoe’,RD,DRce’,PCinc
038
C0080039
0
0
0
0
1
2
0
1
0
039
ARoe’,RD,DRce’
039
00061034
0
0
0
0
1
2
0
1
0
034
ARoe’,RD,DRce’
03A
0006903B
6
5
0
0
0
0
0
0
0
03B
DRoe,Ace
03B
D400003C
6
5
0
0
0
0
0
0
0
03C
DRoe,Ace
03C
40700032
2
0
1
3
0
0
0
0
0
032
GRSoe,ADD,SVce
03D
0006903E
0
0
0
0
1
2
1
1
0
03E
ARoe’,RD,DRce’,PCinc
03E
D400003F
6
5
0
0
0
0
0
0
0
03F
DRoe,Ace
03F
20700032
1
0
1
3
0
0
0
0
0
032
PCoe,ADD,SVce
④.单操作数的微程序
其中,运算指令如下:
指令助记符
入口地址
Inc
071H
Dec
072H
Not
073H
补全执行结果存入目的操作数的微程序
4、输入调机程序
INCFF02H
DEC(0040H)
JMP0030H
5、调试微程序。
运行前的截图如下:
运行后的截图如下:
结果显示,LED输出寄存器自加成功,间接寻址的自减也正确
第二天:
双操作数指令的微程序设计与调试
一、设计目标
完成双操作数指令的微程序设计和验证;取源操作数阶段和取目的操作数阶段相关的寻址方式的微程序设计和验证
二、运算指令微程序入口地址
指令
微程序入口地址
助记符
操作码
二进制
十六进制
MOC
0001B
001000001B
041H
ADD
0010B
001000010B
042H
ADDC
0011B
001000011B
043H
SUB
0100B
001000100B
044H
SUBB
0101B
001000101B
045H
AND
0110B
001000110B
046H
OR
0111B
001000111B
047H
XOR
1000B
001001000B
048H
CMP
1001B
001001001B
049H
TEST
1010B
001001010B
04AH
三、双操作指令微程序
四、测试程序、数据及运行结果
测试内容:
MOV#0010H,R1
MOV#0020H,R0
SUB#FFFFH,R1
ADD0010H,(R0)
ADDC#FFFF,(0010H)
运行结果:
首先将数值移动进寄存器中:
然后进行加减法的运算:
五、设计中遇到的问题及解决办法
调试双操作数指令执行微程序,先要写出双操作数指令执行微程序的微地址,微命令,然后写微程序,最后上机调试,判断是否正确,检查微程序运行结果是否正确是一项稍繁琐的事情,需要检查每步的寄存器、标志位、总线上的地址和数据。
但经过几天的熟悉,我们已慢慢熟悉掌握。
第三天:
条件转移指令的微程序设计与调试
一、设计目标
为CPU扩充转移指令,完成转移指令的微程序设计与调试
二、设计任务
(1)根据第二章介绍的微地址形成方法,算出条件转移指令的微程序入口地址
指令助记符
入口地址
JC
068H
JNC
069H
JO
06AH
JNO
06BH
JZ
06CH
JNZ
06DH
JS
06EH
JNS
06FH
JMP
070H
(2)转移指令的微程序设计
第一天已经完成所有单操作入口的设计,其中068h-070h是转移指令的微程序
补全其它操作:
HALT:
058H
NOP:
059H
三、测试程序、数据及运行结果
测试程序:
0030H:
MOV#0001H,R1
CMP#0002H,R1
JC003A
MOV#0001H,FF01H
HALT
003AH:
MOV#0080H,FF01H
HALT
运行结果:
无跳转:
有跳转:
运行前
运行后:
四、设计中遇到的问题和解决方法
由于不是很理解转移指令的操作方式,导致了设计测试程序出现问题,后来经过同学的指正,得出了以上三图
第四天:
移位指令的微程序设计与调试
一、设计目标
为CPU扩充移位指令,完成移位指令的微程序设计与调试
二、单操作数运算和移位指令微程序入口地址
入口地址:
指令助记符
入口地址(H)
SAR
061
SHL
062
SHR
063
ROL
064
ROR
065
RCL
066
RCR
067
三、单操作数和移位指令微程序设计
微程序:
四、测试程序、数据及运行结果
移位运算微程序
0030:
1601MOV#0001H,R0
0031:
0001
0032:
00C0SHRR0
0033:
0238JCFFFDH(PC)
0034:
FFFD
0035:
0000HALT
运行前:
运行后:
五、设计中遇到的问题及解决办法
由于操作设计简单,依照参考书和指导手册,并没有什么问题,同时我了解了移位类指令的作用方式,位移指令对二进制进行操作,把目的操作数Dst按照与操作码OP对应的规则移动一位,保存移位结果到Dst,并保存移位产生的CF到PSW中。
第五天:
子程序调用、堆栈微程序、中断系统的设计与调试
一、设计目标
完成CALL、RET、PUSH、POP、RETI、EI、DI指令的微程序的设计。
二、PUSH、POP、CALL、RET指令微程序的设计
PUSH
微地址(H)
微指令(H)
微指令字段(H)
微命令
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
078
0030009B
0
0
0
3
0
0
0
0
0
09B
SVce
09B
6003009C
3
0
A
3
0
3
0
0
0
09C
Soe,DRce
09C
F400009D
7
5
0
0
0
0
0
0
0
09D
SPoe,Ace
09D
02B0009E
0
0
A
3
0
0
0
0
0
09E
DEC,SVce
09E
7C080052
3
7
0
0
2
0
0
0
0
052
Soe,ARce,SPce
POP
入口地址:
微程序:
CALL
入口地址:
微程序:
RET
入口地址:
微程序:
RETI
入口地址:
微程序:
EI(05CH)、DI(05DH)
中断隐指令
三、测试程序、数据及运行结果
测试程序1:
0030:
1600MOV#0041H,R0
0031:
0041
0032:
0060PUSHR0
0033:
0620PUSH0040H
0034:
0040
0035:
0648POP(R0)
0036:
0641POPR1
运行结果及分析:
运行前:
运行后:
测试程序2:
0030:
1600MOV#0100H,0000H
0031:
0100
0032:
0000
0033:
0004INC0040H
0034:
0040
0035:
0004EI
0036:
0460INC0041H
0037:
0410
0038:
04A0DEC0043H
0039:
0043
003A:
1A01MOV(0040H),R1
003B:
0040
003C:
HALT
……:
0060:
1820MOVFF0AH,FF02H
0061:
FF0A
0062:
FF02
0063:
A260TEST(R1),0040H
0064:
0040
0065:
0003RETI
0100:
1620MOV#0060H,0001H
0101:
0060
0102:
0001
0103:
1820MOVFF08H,FF02H
0104:
FF08
0105:
FF02
0106:
0004EI
0107:
3820ADDC0040H,0043H
0108:
0040
0109:
0043
010A:
4820SUB0040H,0041H
010B:
0040
010C:
0041
010D:
0460INC0040H
010E:
0044
010F:
0003RETI
结果分析:
执行INC0040H
按键请求中断,跳转到中断向量地址0100H,定义按键1为中断请求键,使红灯亮
执行到0106单元再次跳转到0060H,红灯亮,执行TEST操作,中断返回
继续执行0107的ADDC操作,再进行SUB和INC的操作,中断返回
回到0038H执行DEC操作,接下来进行MOV操作,停机
运行成功
四、设计中遇到的问题及解决办法
写微指令时遇到许多问题,刚开始没弄明白各条指令的意思,然后经过同学的讲解,弄懂了各个指令的意思,通过参考书籍,成功的写出了各个指令的微程序。
但是自己写出的调试程序执行后总会无限循环某几个指令,后来通过询问同学,获得了上面的调试程序,并且理解了这样做的意义,最终运行成功。
第六天检查和考核
一、设计目标
1.将学号后两位保存
2.对学号判断:
小于30则为一班,同时将1压栈,红灯亮;
大于等于30则为二班,同时将2压栈,绿灯亮
二、测试程序、数据及运行结果
0030:
1604;MOV#000BH,R4
0031:
000B;
0032:
1604;MOV#001FH,R3
0033:
001F;
0034:
1604;MOV#0001H,R1
0035:
0001;
0036:
1604;MOV#0002H,R2
0037:
0002;
0038:
9604;CMPR3,R4
0039:
0260;JNC0040H
003A:
0040;
003B:
0620;PUSHR2
003C:
1620;MOVR1,FF01H
003D:
FF01;
003E:
0000;HALT
0040:
0620;PUSHR1
0041:
1620;MOVR1,FF02H
0042:
FF02;
0043:
0000;HALT
运行结果正确,但程序过于简洁
总结:
这次关于微程序控制计算机微程序的课程设计,我受益匪浅,通过实验将实际问题和课本内容紧密的联系在一起,将知识运用到了实际之中,更加深入地掌握了微程序设计。
实验过程中按照老师的计划,每天完成一定的量,使我们能够更加清晰的了解计算机内部组成以及数据通路,并且对实例化的语句有所了解,通过自己编写的程序能够实现运算、转移、移位等功能,让我进一步加深了对微程序各种功能的理解。
实验中我们利用调试软件运行自己设计的程序,对自己的程序产生的错误进行改正,这使我们对调试软件的工作方式及程序的设计有了进一步的掌握。
在每天的设计过程中我也遇到了很多问题,但是以前在学习中没有发现的。
为此,我在通过仔细的研究课本及向老师和同学提问,拓宽了自己的知识面。
同时也深感实践对于我们这门学科的重要性。
同时,在经过老师的检查后发现自己在前面的实验中有些疏忽的问题,为此,在最后的两天时间里,对其进行了相应的修改,最后得以完美的测试结果。
另一方面,通过本次课程设计能够联系之前的学习内容,发现自己在理解的基础上,实践能力得到了很大的提升。
同时,也意识到自己存在的不足,在今后的学习中,一定要认真对待,学会多和同学交流,解决自身的知识盲点,让自己的学习能力得到强化。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 课程设计 61103
![提示](https://static.bingdoc.com/images/bang_tan.gif)