资源描述
《计算机组成原理》课程设计大纲
课 程 名 称:计算机组成原理课程设计 实验学时:1周/人
课 程 编 号: 学分:1
课 程 总 学 时:28 实验学时:28
课 程 总 学 分:1
适用专业及年级:计算机科学与技术三年级
课 程 负 责 人:许高攀
大 纲 主 撰 人:许高攀
编 写 日 期: 2006年9月
一、课程设计教学目的及基本要求
《计算机组成原理》课程设计是计算机科学与技术专业集中实践性环节之一,是学习完《计算机组成原理》课程后进行的一次全面的综合练习。其目的是综合运用所学计算机原理知识,设计并实现一台较为复杂的模型计算机,以便巩固所学的知识,提高分析问题和解决问题的能力。
二、课程设计内容及安排
根据COP2000模型机数据通路图实现80C51指令系统,画出微程序流程图,编写出微指令代码,以脱机方式在Cop2000实验平台下调试通过,最后以文件(.ins)的形式提交。
三、数据格式及指令系统
⒈ 数据格式
模型机规定采用定点补码表示数据,且字长为8位,其格式如下:
7
6 5 4 3 2 1 0
符 号
尾 数
其中第7位为符号位,数值表示范围是:-1≤X<1。
⒉ 指令格式
模型机设计四大类指令共16条,其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。
⑴ 算术逻辑指令
设计10条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:
7 6 5 4
3 2
1 0
OP-CODE
Rs
Rd
其中,OP-CODE为操作码,Rs为源寄存器,Rd为目的寄存器,并规定:
Rs或Rd
选定的寄存器
0 0
0 1
1 0
R0
R1
R2
9条算术逻辑指令的名称、功能和具体格式见表1。
⑵ 访问指令及转移指令
模型机设计2条访问指令,即存数(STA)、取数(LDA),2条转移指令,即无条件转移(JMP)、结果为零转移指令(JRZ),指令格式为:
7
6 5
4
3 2
1
0
M
0
OP-CODE
Rd
D
其中,OP-CODE为操作码,Rd为目的寄存器地址(LDA、STA指令使用)。D为位移量(正负均可),M为寻址模式,其定义如下:
寻址模式M
有效地址E
说 明
0 0
0 1
1 0
1 1
E= D
E=(D)
E=(IR)+D
E=(PC)+D
直接寻址
间接寻址
RI变址寻址
相对寻址
本模型机规定变址寄存器RI 指定为寄存器R2。
⑶ I/O指令
输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:
7 6 5 4
3 2
1 0
OP-CODE
0 0
Rd
其中(IN)指令,选中"INPUT DEVICE"中的开关组作为输入设备,而(OUT)指令,选中"OUTPUT DEVICE"中的LED作为输出设备。
⒊ 指令系统
模型机的缺省的指令集分几大类: 算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入/输出指令。用户可以通过COP2000计算机组成原理实验软件或组成原理实验仪来设计自己的指令集。
助记符
机器码1
机器码2
注释
_FATCH_
000000xx
实验机占用,不可修改。复位后,所有寄存器清0,首先执行 _FATCH_ 指令取指
000001xx
未使用
000010xx
未使用
000011xx
未使用
ADD A, R?
000100xx
将寄存器R?的值加入累加器A中
ADD A, @R?
000101xx
将间址存储器的值加入累加器A中
ADD A, MM
000110xx
MM
将存储器MM地址的值加入累加器A中
ADD A, #II
000111xx
II
将立即数II加入累加器A中
ADDC A, R?
001000xx
将寄存器R?的值加入累加器A中,带进位
ADDC A, @R?
001001xx
将间址存储器的值加入累加器A中,带进位
ADDC A, MM
001010xx
MM
将存储器MM地址的值加入累加器A中,带进位
ADDC A, #II
001011xx
II
将立即数II加入累加器A中,带进位
SUB A, R?
001100xx
从累加器A中减去寄存器R?的值
SUB A, @R?
001101xx
从累加器A中减去间址存储器的值
SUB A, MM
001110xx
MM
从累加器A中减去存储器MM地址的值
SUB A, #II
001111xx
II
从累加器A中减去立即数II加入累加器A中
SUBC A, R?
010000xx
从累加器A中减去寄存器R?的值,减进位
SUBC A, @R?
010001xx
从累加器A中减去间址存储器的值,减进位
SUBC A, MM
010010xx
MM
从累加器A中减去存储器MM地址的值,减进位
SUBC A, #II
010011xx
II
从累加器A中减去立即数II,减进位
AND A, R?
010100xx
累加器A“与”寄存器R?的值
AND A, @R?
010101xx
累加器A“与”间址存储器的值
AND A, MM
010110xx
MM
累加器A“与”存储器MM地址的值
AND A, #II
010111xx
II
累加器A“与”立即数II
OR A, R?
011000xx
累加器A“或”寄存器R?的值
OR A, @R?
011001xx
累加器A“或”间址存储器的值
OR A, MM
011010xx
MM
累加器A“或”存储器MM地址的值
OR A, #II
011011xx
II
累加器A“或”立即数II
MOV A, R?
011100xx
将寄存器R?的值送到累加器A中
MOV A, @R?
011101xx
将间址存储器的值送到累加器A中
MOV A, MM
011110xx
MM
将存储器MM地址的值送到累加器A中
MOV A, #II
011111xx
II
将立即数II送到累加器A中
MOV R?, A
100000xx
将累加器A的值送到寄存器R?中
MOV @R?, A
100001xx
将累加器A的值送到间址存储器中
MOV MM, A
100010xx
MM
将累加器A的值送到存储器MM地址中
MOV R?, #II
100011xx
II
将立即数II送到寄存器R?中
READ MM
100100xx
MM
从外部地址MM读入数据,存入累加器A中
WRITE MM
100101xx
MM
将累加器A中数据写到外部地址MM中
100110xx
未使用
100111xx
未使用
JC MM
101000xx
MM
若进位标志置1,跳转到MM地址
JZ MM
101001xx
MM
若零标志位置1,跳转到MM地址
101010xx
未使用
JMP MM
101011xx
MM
跳转到MM地址
101100xx
未使用
101101xx
未使用
_INT_
101110xx
实验机占用,不可修改。进入中断时,实验机硬件产生 _INT_ 指令
CALL MM
101111xx
MM
调用MM地址的子程序
IN
110000xx
从输入端口读入数据到累加器A中
OUT
110001xx
将累加器A中数据输出到输出端口
110010xx
未使用
RET
110011xx
子程序返回
RR A
110100xx
累加器A右移
RL A
110101xx
累加器A左移
RRC A
110110xx
累加器A带进位右移
RLC A
110111xx
累加器A带进位左移
NOP
111000xx
空指令
CPL A
111001xx
累加器A取反,再存入累加器A中
111010xx
未使用
RETI
111011xx
中断返回
111100xx
未使用
111101xx
未使用
111110xx
未使用
111111xx
未使用
表1 指令系统
四、复杂模型机数数据通路框图
图1 复杂模型机数数据通路框图
五、总体设计
1、复杂模型机微程序流程图设计
根据图1 复杂模型机数据通路框图和表1指令系统要求,设计出图3所示结构的微程序流程图。确定实现机器指令功能的微程序段的入口微地址,同时确定微程序流程图中各微指令的微地址。
01
Pc→Ar
Pc+1
02
Ram→Bus
Bus→Ir
P(1)
20
00(直接) 11(相对) IN RLC
20 26 28 2F
01
P(2)
08
Lad 1C Bzc 1F 01
Z=1
P(3)
01 0E
NO
1E 0E
01 01
图1-3 复杂模型机微程序流程框图
2、编写微指令代码
COP2000模型机包括了一个标准CPU所具备所有部件,这些部件包括:运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右移门R、寄存器组R0-R3、程序计数器PC、地址寄存器MAR、堆栈寄存器ST、中断向量寄存器IA、输入端口IN、输出端口寄存器OUT、程序存储器EM、指令寄存器IR、微程序计数器uPC、微程序存储器uM,以及中断控制电路、跳转控制电路。其中运算器和中断控制电路以及跳转控制电路用CPLD来实现,其它电路都是用离散的数字电路组成。微程序控制部分也可以用组合逻辑控制来代替。
模型机为8位机,数据总线、地址总线都为8位,但其工作原理与16位机相同。相比而言8位机实验减少了烦琐的连线,但其原理却更容易被学生理解、吸收。
模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数。指令码的最低两位用来选择R0-R3寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。模型机有24位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。24位控制位分别介绍如下:
XRD : 外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。
EMWR: 程序存储器EM写信号。
EMRD: 程序存储器EM读信号。
PCOE: 将程序计数器PC的值送到地址总线ABUS上。
EMEN: 将程序存储器EM与数据总线DBUS接通,由EMWR和EMRD决定是将DBUS数据写到EM中,还是从EM读出数据送到DBUS。
IREN: 将程序存储器EM读出的数据打入指令寄存器IR和微指令计数器uPC。
EINT: 中断返回时清除中断响应和中断请求标志,便于下次中断。
ELP: PC打入允许,与指令寄存器的IR3、IR2位结合,控制程序跳转。
MAREN:将数据总线DBUS上数据打入地址寄存器MAR。
MAROE:将地址寄存器MAR的值送到地址总线ABUS上。
OUTEN:将数据总线DBUS上数据送到输出端口寄存器OUT里。
STEN: 将数据总线DBUS上数据存入堆栈寄存器ST中。
RRD: 读寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。
RWR: 写寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。
CN: 决定运算器是否带进位移位,CN=1带进位,CN=0不带进位。
FEN: 将标志位存入ALU内部的标志寄存器。
X2: X2、X1、X0三位组合来译码选择将数据送到DBUS上的寄存器。
X1: 见16页表。
X0:
WEN: 将数据总线DBUS的值打入工作寄存器W中。
AEN: 将数据总线DBUS的值打入累加器A中。
S2: S2、S1、S0三位组合决定ALU做何种运算。
S1: 见14页表。
S0:
3.模型机寻址方式
模型机的寻址方式分五种:
累加器寻址: 操作数为累加器A,例如“CPL A”是将累加器A值取反,还有些指令是隐含寻址累加器A,例如“OUT”是将累加器A的值输出到输出端口寄存器OUT。
寄存器寻址: 参与运算的数据在R0-R3的寄存器中,例如 “ADD A,R0”指令是将寄存器R0的值加上累加器A的值,再存入累加器A中。
寄存器间接寻址:参与运算的数据在存储器EM中,数据的地址在寄存器R0-R3中,例如 “MOV A,@R1”指令是将寄存器R1的值做为地址,把存储器EM中该地址的内容送入累加器A中。
存储器直接寻址:参与运算的数据在存储器EM中,数据的地址为指令的操作数。例如“AND A,40H”指令是将存储器EM中40H单元的数据与累加器A的值做逻辑与运算,结果存入累加器A。
立即数寻址: 参与运算的数据为指令的操作数。例如 “SUB A,#10H”是从累加器A中减去立即数10H,结果存入累加器A。
4、脱机调试
(1) 点击桌面COP2000图标,进入集成实验环境。
(2) 选择新建指令系统,进入编辑与调试窗口。
六、课程设计报告要求
1、使用校发的统一课程设计报告用纸。
2、叙述微程序控制器原理、设计方法及步骤(参考理论课教材)。
3、画出复杂模型机数据通路图。
4、画出设计的复杂模型机微程序流程图。
5、写出脱机操作时的十六进制格式文件。
6、调试情况。
7、课程设计收获。
7
展开阅读全文