《计算机组成原理课程设计2422.pdf》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计2422.pdf(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 计算机组成原理课程设计 The pony was revised in January 2021 计算机组成原理课程设计报告 专业名称:软件工程 班 级:1401 学 号:学生姓名:李 威 指导教师:丁 伟 设计时间:2015 年 6 月 20 日2015 年 6 月 28 日 第一天:熟悉微程序的设计和调试方法 一、设计目标 1、掌握微程序的设计方法 2、熟悉利用调试软件运行、调试微程序的方法 二、操作提示 1、准备工作 从课程资源网站下载 PPT。2、下载 FPGA 配置数据 利用软件将下载到 FPGA。3.输入微程序 利用调试软件将微程序写入控存。设置实验方式和观察信号。微程序如下:.
2、取指令微程序 微地址(H)微指令(H)微指令字段(H)微命令 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 000 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
3、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 2 4 0 0 0 0 0 0 0 006 GRSoe,TRce 009 2 0 0 0 2 0 0 0 0 015 GRSoe,ARce 00A 1 0 0 0 2 0 0 0 0 010 PCoe,ARce 00B 1 0 0 0 2 0 0 0 0 012 PCoe,ARce 00C 1 0 0 0 2 0 0 0 0 013 PCoe,ARce 00D 1 0 0 0 2 0 0 0 0 017 PCoe,ARce 0
4、0E 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 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
5、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 ARo
6、e,RD,DRce,PCinc 01B D400001C 6 5 0 0 0 0 0 0 0 01C DRoe,Ace 01C 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 1 0 1 3 0 0 0 0 0 020 PCoe,ADD,SVce 020 3 0 0 0 2 0 0 0 0 015 Soe,ARce.取目的操作数为寄存器寻址的微程序 微地址(H)微指令
7、(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 2 5 0 0 0 0 0 0 0 007 GRSoe,Ace 029 2 0 0 0 2 0 0 0 0 035 GRSoe,ARce 02A 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 1 0 0 0 2 0 0 0 0 033 PCoe,ARce 02D 1 0 0 0 2 0 0 0 0 037 P
8、Coe,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 3 2 0 0 0 0 0 0 0 035 Soe,GRSce 032 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 0
9、35 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
10、03B D400003C 6 5 0 0 0 0 0 0 0 03C DRoe,Ace 03C 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 1 0 1 3 0 0 0 0 0 032 PCoe,ADD,SVce.单操作数的微程序 其中,运算指令如下:指令助记符 入口地址 Inc 071H Dec 072H Not 073H 补全执行结果存入目的操作数的微程序 4、
11、输入调机程序 INC FF02H DEC(0040H)JMP 0030H 5、调试微程序。运行前的截图如下:运行后的截图如下:结果显示,LED 输出寄存器自加成功,间接寻址的自减也正确 第二天:双操作数指令的微程序设计与调试 一、设计目标 完成双操作数指令的微程序设计和验证;取源操作数阶段和取目的操作数阶段相关的寻址方式的微程序设计和验证 二、运算指令微程序入口地址 指令 微程序入口地址 助记符 操作码 二进制 十六进制 MOC 0001B 001000001B 041H ADD 0010B 001000010B 042H ADDC 0011B 001000011B 043H SUB 0100
12、B 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 ADD 0010H,(R0)ADDC#FFFF,(0010H)运行结果:首先将数值移动进寄存器中:然后进行加减
13、法的运算:五、设计中遇到的问题及解决办法 调试双操作数指令执行微程序,先要写出双操作数指令执行微程序的微地址,微命令,然后写微程序,最后上机调试,判断是否正确,检查微程序运行结果是否正确是一项稍繁琐的事情,需要检查每步的寄存器、标志位、总线上的地址和数据。但经过几天的熟悉,我们已慢慢熟悉掌握。第三天:条件转移指令的微程序设计与调试 一、设计目标 为 CPU 扩充转移指令,完成转移指令的微程序设计与调试 二、设计任务(1)根据第二章介绍的微地址形成方法,算出条件转移指令的微程序入口地址 指令助记符 入口地址 JC 068H JNC 069H JO 06AH JNO 06BH JZ 06CH JN
14、Z 06DH JS 06EH JNS 06FH JMP 070H(2)转移指令的微程序设计 第一天已经完成所有单操作入口的设计,其中 068h-070h 是转移指令的微程序 补全其它操作:HALT:058H NOP:059H 三、测试程序、数据及运行结果 测试程序:0030H:MOV#0001H,R1 CMP#0002H,R1 JC 003A MOV#0001H,FF01H HALT 003AH:MOV#0080H,FF01H HALT 运行结果:无跳转:有跳转:运行前 运行后:四、设计中遇到的问题和解决方法 由于不是很理解转移指令的操作方式,导致了设计测试程序出现问题,后来经过同学的指正,得
15、出了以上三图 第四天:移位指令的微程序设计与调试 一、设计目标 为 CPU 扩充移位指令,完成移位指令的微程序设计与调试 二、单操作数运算和移位指令微程序入口地址 入口地址:指令助记符 入口地址(H)SAR 061 SHL 062 SHR 063 ROL 064 ROR 065 RCL 066 RCR 067 三、单操作数和移位指令微程序设计 微程序:四、测试程序、数据及运行结果 移位运算微程序 0030:1601 MOV#0001H,R0 0031:0001 0032:00C0 SHR R0 0033:0238 JC FFFDH(PC)0034:FFFD 0035:0000 HALT 运行前
16、:运行后:五、设计中遇到的问题及解决办法 由于操作设计简单,依照参考书和指导手册,并没有什么问题,同时我了解了移位类指令的作用方式,位移指令对二进制进行操作,把目的操作数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 F
17、8 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)中断隐
18、指令 三、测试程序、数据及运行结果 测试程序 1:0030:1600 MOV#0041H,R0 0031:0041 0032:0060 PUSH R0 0033:0620 PUSH 0040H 0034:0040 0035:0648 POP (R0)0036:0641 POP R1 运行结果及分析:运行前:运行后:测试程序 2:0030:1600 MOV#0100H,0000H 0031:0100 0032:0000 0033:0004 INC 0040H 0034:0040 0035:0004 EI 0036:0460 INC 0041H 0037:0410 0038:04A0 DEC 00
19、43H 0039:0043 003A:1A01 MOV(0040H),R1 003B:0040 003C:HALT:0060:1820 MOV FF0AH,FF02H 0061:FF0A 0062:FF02 0063:A260 TEST(R1),0040H 0064:0040 0065:0003 RETI 0100:1620 MOV#0060H,0001H 0101:0060 0102:0001 0103:1820 MOV FF08H,FF02H 0104:FF08 0105:FF02 0106:0004 EI 0107:3820 ADDC 0040H,0043H 0108:0040 0109
20、:0043 010A:4820 SUB 0040H,0041H 010B:0040 010C:0041 010D:0460 INC 0040H 010E:0044 010F:0003 RETI 结果分析:执行 INC 0040H 按键请求中断,跳转到中断向量地址 0100H,定义按键 1 为中断请求键,使红灯亮 执行到 0106 单元再次跳转到 0060H,红灯亮,执行 TEST 操作,中断返回 继续执行 0107 的 ADDC 操作,再进行 SUB 和 INC 的操作,中断返回 回到 0038H 执行 DEC 操作,接下来进行 MOV 操作,停机 运行成功 四、设计中遇到的问题及解决办法 写
21、微指令时遇到许多问题,刚开始没弄明白各条指令的意思,然后经过同学的讲解,弄懂了各个指令的意思,通过参考书籍,成功的写出了各个指令的微程序。但是自己写出的调试程序执行后总会无限循环某几个指令,后来通过询问同学,获得了上面的调试程序,并且理解了这样做的意义,最终运行成功。第六天检查和考核 一、设计目标 1.将学号后两位保存 2.对学号判断:小于 30 则为一班,同时将 1 压栈,红灯亮;大于等于 30 则为二班,同时将 2 压栈,绿灯亮 二、测试程序、数据及运行结果 0030:1604;MOV#000BH,R4 0031:000B;0032:1604;MOV#001FH,R3 0033:001F;
22、0034:1604;MOV#0001H,R1 0035:0001;0036:1604;MOV#0002H,R2 0037:0002;0038:9604;CMP R3,R4 0039:0260;JNC 0040H 003A:0040;003B:0620;PUSH R2 003C:1620;MOV R1,FF01H 003D:FF01;003E:0000;HALT 0040:0620;PUSH R1 0041:1620;MOV R1,FF02H 0042:FF02;0043:0000;HALT 运行结果正确,但程序过于简洁 总结:这次关于微程序控制计算机微程序的课程设计,我受益匪浅,通过实验将实际
23、问题和课本内容紧密的联系在一起,将知识运用到了实际之中,更加深入地掌握了微程序设计。实验过程中按照老师的计划,每天完成一定的量,使我们能够更加清晰的了解计算机内部组成以及数据通路,并且对实例化的语句有所了解,通过自己编写的程序能够实现运算、转移、移位等功能,让我进一步加深了对微程序各种功能的理解。实验中我们利用调试软件运行自己设计的程序,对自己的程序产生的错误进行改正,这使我们对调试软件的工作方式及程序的设计有了进一步的掌握。在每天的设计过程中我也遇到了很多问题,但是以前在学习中没有发现的。为此,我在通过仔细的研究课本及向老师和同学提问,拓宽了自己的知识面。同时也深感实践对于我们这门学科的重要性。同时,在经过老师的检查后发现自己在前面的实验中有些疏忽的问题,为此,在最后的两天时间里,对其进行了相应的修改,最后得以完美的测试结果。另一方面,通过本次课程设计能够联系之前的学习内容,发现自己在理解的基础上,实践能力得到了很大的提升。同时,也意识到自己存在的不足,在今后的学习中,一定要认真对待,学会多和同学交流,解决自身的知识盲点,让自己的学习能力得到强化。