组成原理课程设计报告.docx
《组成原理课程设计报告.docx》由会员分享,可在线阅读,更多相关《组成原理课程设计报告.docx(35页珍藏版)》请在冰豆网上搜索。
组成原理课程设计报告
《计算机组成原理》
课
程
设
计
报
告
院系名称计算机科学与工程学院
班级
姓名
学号
指导教师
题目一
1.问题描述
设计一个具有加法和直接寻址方式的模型机
(1)设计内容:
设计一台具有输入、输出、加法、存储和跳转功能的模型计算机,并写出工作程序和测试数据验证有设计的指令系统。
(2)设计要求:
所设计模型计算机的指令系统共包含五条机器指令:
IN(输入)、OUT(输出)、ADD(加法)、STA(存数)、JMP(无条件转移)。
STA和JMP为直接寻址。
2.题目分析及设计原理
通过IN单元输入数据送R0寄存器,然后寄存器和自身相加,再将结果保存到存储器并送OUT单元显示出来,最后无条件跳转,又重复执行。
结合数据通路图设计指令。
数据通路图
注意读写逻辑控制信号的控制。
读写控制逻辑如下:
3.指令设计及编码
模型机的指令系统及指令格式如下:
助记符
机器指令码
说明
INRD,P
XXXX
XX
RD
p
IN->RD
ADDRD,RS,D
XXXX
RS
RD
RS+RD->RD
STAMD,RD
XXXX
M
RD
D
R0->E
OUTP,RS
XXXX
RS
XX
P
RS->LED
JMPMD
XXXX
M
XX
D
E->PC
指令格式为:
指令编码为:
;//************StartOfMainMemoryData******//
$P0020;START:
INR0从IN单元读入数据送R0
$P0100;ADDR0,RO和自身相加,结果送
$P0210;STA将结果存入主存
$P0380;OUTR0输出结果
$P04E0;JMPSTART跳转到00单元
$P0500
$P0650;HLT停机
;//************EndOfMainMemoryData******//
4.微指令设计及编码
微指令格式
23
22
21
20
10
18-15
14-12
11-9
8-6
5-0
M23
CN
WR
RD
IOM
S3-S0
A字段
B字段
C字段
MA5-MA0
微指令数据流程图
PC->AR
PC+1
NOP
01
00
MEM->IR
03
P<1>
30
32
OUT
38
IN
ADD
IN->R0
01
R0->A
01
IN->AR
30
34
STA
JMP
HLT
NOP
35
R0->OUT
01
IN->AR
R0->MEM
31
12
01
35
R0->B
A+B->R0
MEM->R0
33
04
05
PC->AR
PC+1
MEM->PC
3C
1D
01
二进制微代码表
地址
十六进制
高五位
S3-S0
A字段
B字段
C字段
MA5-MA0
00
000001
00000
0000
000
000
000
000001
01
006D43
00000
0000
110
110
101
000011
03
107070
00010
000
111
000
001
110000
32
183001
00011
0000
011
000
000
000001
30
001404
00000
0000
001
010
000
000100
04
002405
00000
0000
010
010
000
000101
05
04B201
00000
1001
011
001
000
000001
31
186012
00011
00000
110
000
000
010010
12
200401
00100
0000
000
010
000
000001
38
186033
00011
0000
110
000
000
110011
33
103034
00010
0000
011
000
000
110100
34
280401
00101
0000
000
010
000
000001
3C
006D5D
00000
0000
110
110
000
011101
1D
105141
00010
0000
101
000
101
000001
35
000035
00000
0000
000
000
000
110101
根据指令译码原理图将指令代码译码为微指令入口地址。
指令译码原理图如下:
微指令编码为:
;//************StartOfMicroControllerData*******//
$M00000001;NOP
$M01006D43;PC->AR,PC加1
$M03107070;MEM->IR,P<1>
$M32183001;IN->R0
$M30001404;R0->A
$M04002405;R0->B
$M0504B201;A加B->R0
$M31186012;IN->AR
$M12200401;R0->MEM
$M38186033;IN->AR
$M33103034;MEM->R0
$M34280401;R0->OUT
$M3C006D5D;PC->AR,PC加1
$M1D105141;MEM->PC
$M35000035;NOP
;//**************EndofMicroControllerData*******//
5.运行结果及分析
1、取指令
将PC当前的内容送地址寄存器,在主存中找到该地址处的指令,然后取出指令,送指令寄存器,截图如下:
2、从IN单元输入数据送R0寄存器
3、R0寄存器和自身相加,结果送R0
(1)将寄存器R0中的数据送暂存器A,截图如下:
(2)将R0寄存器中的数据送暂存器B,截图如下:
(3)寄存器R0和自身相加,结果送到R0寄存器,截图如下:
4、将结果存入主存
首先通过IN单元输入一个地址,并在主存中找到该地址,截图如下:
5、取数
(1)通过IN单元输入地址,找到数据在主存中的存储地址,截图如下:
(2)将该地址中的数送到R0寄存器
6、将数据送OUT单元显示出来
题目二
1.问题描述
设计一个具有循环右移功能的模型机
1、设计内容
设计一台具有输入、输出、数据传送、带进位加法,循环右移、停机等功能的模型机,并写出工作程序和测试程序验证所设计的指令系统。
2、设计要求
所设计模型计算机的指令系统共包含六条机器指令:
IN(输入)、OUT(输出)、ADC(带进位加法)、RR(循环右移)、MOV(数据传送)、HALT(停机),各条指令的寻址方式为寄存器寻址。
2.题目分析及设计原理
通过IN单元输入数据送R0寄存器,然后将寄存器中的数送暂存器A,再通过IN单元输入数据送寄存器R0,并将数据送暂存器B,对A和B中的数据进行带进位位的加法运算,将结果保存到存储器R0,再将结果循环右移一位,然后将结果送OUT单元显示出来,最后停机。
结合数据通路图设计指令。
数据通路图
3.指令设计及编码
模型机的指令系统及指令格式如下:
助记符
机器指令码
说明
MOVRD,RS
XXXX
RS
RD
RS--->RD
ADCRD,RS
XXXX
RS
RD
RS+RD+cy--->RD
RR
XXXX
RS
RD
RS循环右移--->RD
INRD,P
XXXX
XX
RD
P
IN---->RD
OUTP,RS
XXXX
RS
XX
P
RS--->LED
HALT
XXXX
00
00
停机
指令格式为:
指令编码为:
;//************StartOfMainMemoryData******//
$P0020;START:
INR0
$P0110;R0->A
$P0220;IN->R0
$P0300;ADD
$P0440;RR
$P0530;OUTR0
$P0650;HLT停机
;//************EndOfMainMemoryData******//
4、微指令设计及编码
微指令格式
23
22
21
20
10
18-15
14-12
11-9
8-6
5-0
M23
CN
WR
RD
IOM
S3-S0
A字段
B字段
C字段
MA5-MA0
微指令数据流程图
PC->AR
PC+1
NOP
01
00
MEM->IR
03
P<1>
30
32
ADD
30
IN
IN->R0
01
R0->A
01
R0->B
A+B+cy->R0
31
04
RR
OUT
HLT
R0->A
A右移移位
->R0
R0->OUT
NOP
35
01
34
33
05
01
01
35
二进制微代码表
地址
十六进制
高五位
S3-S0
A字段
B字段
C字段
MA5-MA0
00
000001
00000
0000
000
000
000
000001
01
006D43
00000
0000
110
110
101
000011
03
107070
00010
000
111
000
001
110000
32
183001
00011
0000
011
000
000
000001
31
001404
00000
0000
001
010
000
000100
30
002405
00000
0000
010
010
000
000100
04
053201
00000
1010
011
001
000
000001
30
001405
00000
0000
001
010
000
000101
05
033201
00000
0110
011
001
000
000001
33
280401
00101
0000
000
010
000
000001
35
000035
00000
0000
000
000
000
110101
根据指令译码原理图将指令代码译码为微指令入口地址。
指令译码原理图如下:
微指令编码为:
;//************StartOfMicroControllerData*******//
$M00000001;NOP
$M01006D43;PC->AR,PC+1
$M03107070;MEM->IR,P<1>
$M32183001;IN->R0
$M31001401;R0->A
$M32183001;IN->R0
$M30002404;R0->B
$M04053201;A+B+CY->R0
$M34001405;R0->A
$M05033201;RR
$M33280401;R0->OOUT
$M35000035;NOP
;//**************EndofMicroControllerData*******//
5.运行结果及分析
1、取指令
将PC当前的内容送地址寄存器,在主存中找到该地址处的指令,然后取出指令,送指令寄存器,截图如下:
2、从IN单元输入数据送R0寄存器
3、将寄存器R0中的数据送暂存器A中
4、对数据进行带进位位的加法运算,结果送寄存器R0
5、将结果循环右移
(1)、首先将结果送入暂存器A
(2)、将结果循环右移后送R0寄存器
6、将最终结果送OUT单元显示出来
题目三
1.问题描述
设计一个具有带借位减法和存储功能的模型机
1、设计内容
设计一台具有输入、输出、数据传送、带借位减法,存数、取数等功能的模型机,并写出工作程序和测试程序验证所设计的指令系统。
2、设计要求
所设计模型计算机的指令系统共包含六条机器指令:
IN(输入)、OUT(输出)、SBC(带借位减法)、LDA(取数)、STA(存数)、MOV(数据传送),其中存数、取数指令的寻址方式为间接寻址。
2.题目分析及设计原理
通过IN单元输入数据送R0寄存器,然后将寄存器中的数送暂存器A,再通过IN单元输入数据送寄存器R0,并将数据送暂存器B,对A和B中的数据进行带借位的减法运算,将结果送存储器R0,再将结果保存到存储器,然后从存储器中取出数据送OUT单元显示出来,最后停机。
结合数据通路图设计指令。
数据通路图如下
3.指令设计及编码
模型机的指令系统及指令格式如下:
助记符
机器指令码
说明
MOVRD,RS
XXXX
RS
RD
RSàRD
SBCRD,RS
XXXX
RS
RD
RS-RD+cyàRD
LADMD,RD
XXXX
RS
RD
D
(D)àRD
STAMD,RD
XXXX
M
RD
D
RDà(D)
INRD,P
XXXX
XX
RD
P
INàRD
OUTP,RS
XXXX
RS
XX
P
RSàLED
指令格式为:
指令编码为:
;//************StartOfMainMemoryData******//
$P0020;START:
INR0
$P0100;R0->A
$P0220;IN->R0
$P0300;SBC
$P0440;STA
$P0560;LDA
$P0630;OUTR0
$P0750;停机
;//************EndOfMainMemoryData******//
4.微指令设计及编码
微指令格式
23
22
21
20
10
18-15
14-12
11-9
8-6
5-0
M23
CN
WR
RD
IOM
S3-S0
A字段
B字段
C字段
MA5-MA0
微指令数据流程图
00
PC->AR
PC+1
NOP
01
MEM->IR
03
P<1>
30
32
SBC
30
IN
IN->R0
01
R0->A
01
R0->B
A-B->R0
31
04
STA
OUT
HLT
IN->AR
R0->MEM
R0->OUT
NOP
35
01
34
33
05
01
01
35
IN->AR
MEM->R0
36
06
01
LDA
二进制微代码表
地址
十六进制
高五位
S3-S0
A字段
B字段
C字段
MA5-MA0
00
000001
00000
0000
000
000
000
000001
01
006D43
00000
0000
110
110
101
000011
03
107070
00010
000
111
000
001
110000
32
183001
00011
0000
011
000
000
000001
31
001404
00000
0000
001
010
000
000001
30
002404
00000
0000
010
010
000
000100
04
05B201
00000
1011
011
001
000
000001
34
186005
00011
00000
110
000
000
000101
05
200401
00100
0000
000
010
000
000001
36
186006
00011
0000
110
000
000
000110
06
103001
00010
0000
011
000
000
000001
33
280401
00101
0000
000
010
000
000001
35
000035
00000
0000
000
000
000
110101
根据指令译码原理图将指令代码译码为微指令入口地址。
指令译码原理图如下:
微指令编码为:
;//************StartOfMicroControllerData*******//
$M00000001;NOP
$M01006D43;PC->AR,PC+1
$M03107070;MEM->IR,P<1>
$M32183001;IR->A
$M31001401;R0->A
$M32183001;IR->R0
$M30002404;R0->B
$M0405B201;A-B->R0
$M34186005;IN->AR
$M05200401;R0->MEM
$M36186006;IN->AR
$M06103001;MEM->R0
$M33280401;R0->OUT
$M35000035;NOP
;//**************EndofMicroControllerData*******//
6.运行结果及分析
1、取指令
将PC当前的内容送地址寄存器,在主存中找到该地址处的指令,然后取出指令,送指令寄存器,截图如下:
2、从IN单元输入数据送R0寄存器
3、将寄存器R0中的数据送暂存器A中
4、从IN单元输入数据送R0寄存器
5、将寄存器R0中的数据送暂存器B中
6、对数据进行带借位减法运算后结果送R0寄存器
7、将结果保存到存储器
从IN单元输入要存入的地址,再将数据保存如该地址中。
截图如下:
8、从存储器中将数据取出送R0寄存器
9、将结果送OUT单元显示出来
课程设计总结
本次课程设计我们小组一共做了三道题,分别是设计一个具有加法和直接寻址方式的模型机、设计一个具有循环右移功能的模型机和设计一个具有带借位减法和存储功能的模型机。
共实现了输入、输出、相加、相减、存数、取数、无条件跳转、循环右移和停机这9条机器指令。
指令设计方面,在设计机器指令前,要先画出微程序流程图,根据简单模型机的数据通路图知道每条指令的数据通路。
最关键的是要正确的将机器指令的代码经过强制译码成微指令的入口地址。
其次在将微指令转换成二进制代码时,要知道每一字段的含义,首先最好根据指令的数据通路来确定每组信号,然后参考微指令格式将指令转换成二进制代码。
尤其是涉及到读写逻辑控制信号IOM、WR、RD的设置时,要具体分析。
对于存数和取数的指令,首先要确定数据的地址,然后再进行操作。
跳转是无条件跳转,即又重新执行每条指令。
对于所执行的各种加减算术运算和循环右移逻辑运算,主要是对S3、S2、S1和S0进行控制。
指令设计完成后要正确的连接线路图,再装载文件。
因为我们小组是用简单模型机完成各功能,只用到R0寄存器,没有进行寄存器和寄存器之间的数据传送。
实验过程中一定要认真,要有耐心。
开始我们不知道如何将机器指令代码译码成微指令的入口地址,后经老师讲解和我们小组成员之间积极讨论,终于明白如何译码。
在涉及到对存储器读写操作时,不能正确理解,后经过我们的讨论终于明白。
做题之前画出流程图非常重要,然后根据流程图并结合每条指令的数据通路写出微指令。
经过我们小组成员的共同努力,我们完成了本次课程设计。
通过这次课程设计,我对机器指令和微指令有了一定的理解,也加强了我们团队合作的意识。