计算机组成原理课程设计.docx
- 文档编号:27288691
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:16
- 大小:555.59KB
计算机组成原理课程设计.docx
《计算机组成原理课程设计.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
计算机组成原理课程设计
课程设计报告
课程设计名称:
计算机组成原理
系:
学生姓名:
班级:
学号:
成绩:
指导教师:
开课时间:
2011-2012学年2学期
一、设计题目
计算机组成原理课程设计——简单模型机的微程序设计
二、主要内容
通过课程设计更清楚地理解下列基本概念:
1.计算机的硬件基本组成;
2.计算机中机器指令的设计;
3.计算机中机器指令的执行过程;
4.微程序控制器的工作原理。
5.微指令的格式设计原则;
在此基础上设计可以运行一些基本机器指令的微程序的设计
三.具体要求
1.通过使用作者开发的微程序分析和设计仿真软件,熟悉介绍的为基本模型机而设计的微程序的执行过程。
必须充分理解并正确解释下些问题:
(1)微程序中的微指令的各个字段的作用。
哪些字段是不译码的,哪些字段是直接译码的,哪些字段又可以看成是字段间接编码的。
(2)微程序中的微指令是否是顺序执行的,如果不是,那么次地址是如何产生的。
什么情况下,次地址字段才是将要执行的微指令的地址。
(3)在微程序中如何根据机器指令中的相关位实现分支,据此,
在设计机器指令时应如何避免和解决与其它指令的微指令的微
地址冲突。
(4)哪些微指令是执行所有指令都要用到的。
(5)解释一条机器指令的微程序的各条微指令的微地址是否连续?
这些微指令的微地址的安排的严重原则是什么?
(6)为什么读写一次内存总要用两条微指令完成?
(7)机器程序中用到的寄存器是R0,是由机器指令中哪些位决定的?
如果要用R1或R2,是否要改写微程序或改写机器指令?
如果要,应如何改写?
2.在原有5条机器指令的基础上增加实现下述各功能的机器指令,试设计相应的机器指令的格式并改写原来的微程序使其可以运行所有的机器指令。
新增加的机器指令的功能是:
求反指令NOTRS,RD:
/(RS)→(RD)
与指令ANDRD,(addr):
(RD)与(addr)→(RD)
异或指令XORRD,(addr):
(addr)异或(RD)→(RD)
或指令ORRD,(addr):
(RD)或(addr)→(RD)
减法指令SUBRD,RS:
(RS)减(RD)→(RD)
其中的RS、RD可以是R0、R1、R2中的任何一个。
四.进度安排
共1.5周11天的时间,具体安排如下:
1~2天:
对整个课程设计的内容做详细的讲解,并辅导学生完成课程设计指导书的学习,使其掌握和理解课程设计的核心内容;
3~5天:
学生在机房学习熟悉课程设计所使用的仿真软件,并深入了解该仿真软件所实现的模型机的指令系统(原有的5条指令)和微程序设计方法;
6~9天:
在原有5条机器指令的基础上增加实现下述各功能的机器指令,试设计相应的机器指令的格式并改写原来的微程序使其可以运行所有的机器指令。
10~11天:
根据自己设计的微程序系统写出相应的课程设计实验报告
五.成绩评定
正文
一、模型机的CPU及系统硬件
二、设计思想
①实现分支:
每一条机器指令执行完之后,就进行一次P
(1)测试,根据P
(1)测试跳到下一条机器指令的微地址。
机械指令执行中则是根据微指令的后六位来确定下一条微指令的地址。
②微地址的安排,将各条机械指令
(IN、ADD、STA、OUT、JMP、NOT、AND、XOR、OR、SUB)通过P
(1)测试,将每条机器指令的入口微地址的首位置为微指令01单元6~5位对应的数值。
如微指令02单元6~1位为000000,则每条机器指令的入口微地址的首位为0,IN对应的为03,ADD对应的为04,STA对应的为05,OUT对应的为06,JMP对应的为07,NOT为08,AND对应的为09,XOR为0A,OR对应的为0B,SUB对应的为0C,然后将完成各条指令的其它微指令的微地址设置为连续的
在指令寄存器IR中的8~5位的数值则由微指令02单元的后六位和对应的机械指令的入口微地址推出。
③模型机指令设计:
该模型机共有十条机器指令:
与指令AND、异或指令XOR、或指令OR、求反指令NOT、减法指令SUB、外设输入指令IN、二进制加法指令ADD、存数指令STA、输出到外设指令OUT、无条件转移指令JMP。
指令格式如下:
助记符机器指令码
AND10010001××××××××
XOR10100001××××××××
OR10110001××××××××
SUB11000001
NOT10000001
IN00110000
ADD01000000××××××××
STA01010000××××××××
OUT01100000××××××××
JMP01110000××××××××
说明:
指令SUB、NOT、IN为单字节指令,其余均为双字节指令,××××××××为要读写的主存储器单元的二进制地址码。
④微指令的编码:
先分析各条机器指令的功能,然后针对其功能将其用微指令表示的微指令流程图画好(如下所示),最后针对图中每条微指令要完成的功能设计好编码。
微流程图如下:
细化微流程图如下:
三、编写微程序
基本模型机的微指令格式
本模型机的微指令长共24位,基本采用水平型微指令字段直接编码方式,其控制位顺序如下:
1.编写的微指令代码如下:
01:
000001011110110110000010
02:
000001001100000001000000
03:
000001000001000000000001;IN
04:
000001011110110110001101;ADD
05:
000001011110110110010001;STA
06:
000001011110110110010011;OUT
07:
000001011110110110010110;JMP
08:
000001011010001000010111;NOT
09:
000001011110110110011000;AND
0A:
000001011110110110011100;XOR
0B:
000001011110110110100000;OR
0C:
000001011010001000100100;SUB
0D:
000001001110000000001110
0E:
000001001011000000001111
0F:
000001011010001000010000
10:
100101011001101000000001
11:
000001001110000000010010
12:
000001101000001000000001
13:
000001001110000000010100
14:
000001001010000000010101
15:
000001110000101000000001
16:
000001001101000110000001
17:
000010011001101000000001
18:
000001001110000000011001
19:
000001001010000000011010
1A:
000001011011010000011011
1B:
101110011001101000000001
1C:
000001001110000000011101
1D:
000001001010000000011110
1E:
000001011011010000011111
1F:
011010011001101000000001
20:
000001001110000000100001
21:
000001001010000000100010
22:
000001011011010000100011
23:
111010*********000000001
24:
000001011011010000100101
25:
011000011001101000000001
2.编写的机器指令代码如下:
00H:
10010001;ANDR1,ADDR1→R1
01H:
00010010;即00与14得00→R1
02H:
10100001;XORR1,ADDR1→R1
03H:
00010011;即12异或00得12→R1
04H:
10110001;ORR1,ADDR1→R1
05H:
00010100;即08或12得1A→R1
06H:
11000001;SUB(R0)-(R1)→R1即00-1A得E6→R1
07H:
10000001;NOTR0求反→R1即00求反得FF→R1
08H:
00110000;IN置数开关SW→R0
09H:
01000000;ADD(R0)+(0A)→R0
0AH:
00010101;即00+17得17→R0
0BH:
01010000;STA(R0)→(16H)
0CH:
00010110;即
0DH:
01100000;OUT(16H)→LED
0EH:
00010110;即输出为17
0FH:
01110000;JMP00→pc
10H:
00000000
11H:
12H:
00001110
13H:
00010010
14H:
00001000
15H:
00010111
测试过程具体分析:
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
09
微指令000001011110110110011000
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
18
微指令000001001110000000011001
执行的操作是:
存储器CE有效,存储器读,LDAR,转微地址:
19
微指令000001001010000000011010
执行的操作是:
存储器CE有效,存储器读,LDDR1,转微地址:
1A
微指令000001011011010000011011
执行的操作是:
R1→B,LDDR2,转微地址:
1B
微指令101110011001101000000001
执行的操作是:
逻辑:
AB,ALU→B,LDR1,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
0A
微指令000001011110110110011100
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
1C
微指令000001001110000000011101
执行的操作是:
存储器CE有效,存储器读,LDAR,转微地址:
1D
微指令000001001010000000011110
执行的操作是:
存储器CE有效,存储器读,LDDR1,转微地址:
1E
微指令000001011011010000011111
执行的操作是:
R1→B,LDDR2,转微地址:
1F
微指令011010011001101000000001
执行的操作是:
逻辑:
A异或B,ALU→B,LDR1,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
0B
微指令000001011110110110100000
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
20
微指令000001001110000000100001
执行的操作是:
存储器CE有效,存储器读,LDAR,转微地址:
21
微指令000001001010000000100010
执行的操作是:
存储器CE有效,存储器读,LDDR1,转微地址:
22
微指令000001011011010000100011
执行的操作是:
R1→B,LDDR2,转微地址:
23
微指令111010*********000000001
执行的操作是:
逻辑:
A+B,ALU→B,LDR1,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
0C
微指令000001011010001000100100
执行的操作是:
R0→B,LDDR1,转微地址:
24
微指令000001011011010000100101
执行的操作是:
R1→B,LDDR2,转微地址:
25
微指令011000011001101000000001
执行的操作是:
算术:
A减B,ALU→B,LDR1,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
08
微指令000001011010001000010111
执行的操作是:
R0→B,LDDR1,转微地址:
17
微指令000010011001101000000001
执行的操作是:
逻辑:
/A,ALU→B,LDR1,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
03
微指令000001000001000000000001
执行的操作是:
输入开关SWB有效,LDR0,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
04
微指令000001011110110110001101
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
0D
微指令000001001110000000001110
执行的操作是:
存储器CE有效,存储器读,LDAR,转微地址:
0E
微指令000001001011000000001111
执行的操作是:
存储器CE有效,存储器读,LDDR2,转微地址:
0F
微指令000001011010001000010000
执行的操作是:
R0→B,LDDR1,转微地址:
10
微指令100101011001101000000001
执行的操作是:
算术:
A加B,ALU→B,LDR0,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
05
微指令000001011110110110010001
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
11
微指令000001001110000000010010
执行的操作是:
存储器CE有效,存储器读,LDAR,转微地址:
12
微指令000001101000001000000001
执行的操作是:
存储器CE有效,写存储器,R0→B,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
06
微指令000001011110110110010011
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
13
微指令000001001110000000010100
执行的操作是:
存储器CE有效,存储器读,LDAR,转微地址:
14
微指令000001001010000000010101
执行的操作是:
存储器CE有效,存储器读,LDDR1,转微地址:
15
微指令000001110000101000000001
执行的操作是:
算术:
A,数码管LEDB有效,写LED,ALU→B,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
07
微指令000001011110110110010110
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
16
微指令000001001101000110000001
执行的操作是:
存储器CE有效,存储器读,PCLOAD,允许PC加1(LDPC=1),转微地址:
01
四、问题回答
(1)微程序中的微指令的各个字段的作用。
哪些字段是不译码的,哪些字段是直接译码的,哪些字段又可以看成是字段间接编码的。
答:
不译码:
S3-B0。
A字段,B字段为间接译码,UA6-UA1在P
(1),P
(2),P(3),P(4)测试时为间接译码。
C字段为直接译码
(2)微程序中的微指令是否是顺序执行的,如果不是,那么次地址是如何产生的。
什么情况下,次地址字段才是将要执行的微指令的地址。
答:
微程序中的微指令不是顺序执行的,如果遇到P
(1)~P(4)测试时,则根据机器指令,uA5~uA0字段及其他有关部件的内容,产生下一条微指令在空存中的微地址,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行等。
例如遇到P
(1)测试,则下一条微指令在空存中的微地址的4~1位是用次地址字段NA(4~1位)或指令寄存器IR(8~5位)所产生,下一条微指令的微地址仍为NA字段的6~5位。
如果没有遇到P
(1)~P(4)测试的话,那么次地址即为该微指令地址字段所指向的微地址。
(3)在微程序中如何根据机器指令中的相关位实现分支,据此,在设计机器指令时应如何避免和解决与其它指令的微指令的微地址冲突。
答:
微程序中是根据测试程序的机器指令中的8~5位和微程序中后六位进行“或”运算来实现分支的。
避免和解决与其它指令的微指令的微地址冲突的方法就是不用已经被其它微指令用过的微地址。
(4)哪些微指令是执行所有指令都要用到的。
答:
01:
000001011110110110000010
02:
000001001100000001000000
(5)解释一条机器指令的微程序的各条微指令的微地址是否连续?
这些微指令的微地址的安排的严重原则是什么?
答:
不连续。
严重原则是将各条机器指令的入口微地址置于地址连续的地址单元中,避免其它微指令乱用这一段地址。
(6)为什么读写一次内存总要用两条微指令完成?
答:
读写内存需要地址寄存器AR中所对应的地址,读写内存时第一步是读地址,第二步是在地址中读出或写入数据。
(7)机器程序中用到的寄存器是R0,是由机器指令中哪些位决定的?
如果要用R1或R2,是否要改写微程序或改写机器指令?
如果要,应如何改写?
答:
是由机器指令中的2~1位决定。
如果要用到R1或R2,那么不需要改写微程序,但得改写机器指令的低两位,即2~1位,若要用到R1,则将其改为01,若要用R2,则将其改为10。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)