计算机组成原理课程设计报告
班级:10 计算机
2
班
姓名: 岳明轩
学号: 20102682
完成时间:
2013/1/1
一、课程设计目的
1.在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程
序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;
2.通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机
系统的概念;
3.培养综合实践及独立分析、解决问题的能力。
二、课程设计的任务
针对 COP2000 实验仪,从详细了解该模型机的指令/微指令系统入手,以实现乘法和除
法运算功能为应用目标,在 COP2000 的集成开发环境下,设计全新的指令系统并编写对应
的微程序;之后编写实现乘法和除法的程序进行设计的验证。
三、 课程设计使用的设备(环境)
1.硬件
COP2000 实验仪
PC 机
2.软件
COP2000 仿真软件
四、课程设计的具体内容(步骤)
1.详细了解并掌握 COP 2000 模型机的微程序控制器原理,通过综合实验来实现
(1)模型机指令系统特点
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 寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存
储器,找到执行该指令的微程序。而在组合逻辑控制方式中,按时序用指令码产生相应的控
制位。在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个
状态周期产生不同的控制逻辑,实现模型机的各种功能。
模型机的缺省的指令集分几大类: 算术运算指令、逻辑运算指令、移位指令、数据传
输指令、跳转指令、中断返回指令、输入/输出指令。
COP2000 模型机指令的最低两位(IR0 和 IR1)用来寻址 R0~R3 四个寄存器;IR2 和 IR3
与 ELP 微控制信号,Cy 和 Z 两个程序状态信号配合,控制 PC 的置数即程序的转移。各种
转移的条件判断逻辑如下所示:
当 ELP=1 时,不允许 PC 被预置
当 ELP=0 时:
当 IR3=1 时,无论 Cy 和 Z 什么状态,PC 被预置
当 IR3=0 时,若 IR2=0,则当 Cy=1 时 PC 被预置,若 IR2=1,则当 Z=1 时 PC 被
预置
(2)模型机微指令系统特点(包括其微指令格式的说明等)
模型机有 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、X1、X0:三位组合来译码选择将数据送到 DBUS 上的寄存器。
X2 X1 X0
0
0
1
0
0
0
1
0
0
1
1
1
0
1
1
1
0
0
1
1
0
0
1
1
输出寄存器
IN_OE
IA_OE
ST_OE
PC_OE
D_OE
R_OE
L_OE
没有输出
外部输入门
中断向量
堆栈寄存器
PC 寄存器
直通门
右移门
左移门
WEN: 将数据总线 DBUS 的值打入工作寄存器 W 中。
AEN: 将数据总线 DBUS 的值打入累加器 A 中。
S2、S1、S0:三位组合决定 ALU 做何种运算。
S2 S1 S0
0
0
0
1
0
0
1
0
1
0
1
1
0
1
1
1
0
0
1
1
0
0
1
1
或
减
加
功能
A+W
A-W
A|W
A&W
A+W+C 带进位加
A-W-C
带进位减
A 取反
~A
A
输出 A
与
2。计算机中实现乘法和除法的原理
(1)无符号乘法
①实例演示(即,列 4 位乘法具体例子演算的算式):
0
0
1
1
×
1
0
1
1
0
0
0
0
1
1
0
1
0
0
1
1
1
0
0
0
1
0
0
0
0
1
0
0
0
0
0
1
0
1
1
+
+
+ 0
0
1
+ 0
1
0
0
0
0
1
0
②硬件原理框图:
③算法流程图:
(2) 无符号除法
①实例演示(即,列 4 位除法具体例子演算的算式):
1
0
0
1
0
1
0
0
0
0
1
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
0
1
0
1
1
0
1
0
1
1
0
0
1
1
0
1
0
1
1
1
1
0
②硬件原理框图:
1
0
0
0 ……………………………………1
1
0
1
1
0
1
0
0
0 ……………………………………0
1
0
0
0
0
1
1
0 ……………………………………1
0
0
0
0
1
0
1
1
0 ……………………………………1
0
0
0
0
1
③算法流程图:
3.对应于以上算法如何分配使用 COP2000 实验仪中的硬件
(1)无符号乘法
符号乘法对应于 COP2000 实验仪的硬件具体分配使用情况如下表所示:
硬件名称
寄存器 R0
寄存器 R1
寄存器 R2
累加器 A
寄存器 W
左移门 L
表 3 无符号乘法的硬件分配情况
实现算法功能描述
存放被乘数
存放乘数
存放中间结果,最后变为积
执行 ADD A,R?(加法)、SUB A,R?(减法)SHL
一位)、SHR
器。
R?(左移
R?(右移一位)等命令时所必须使用的寄存
A,#II(与运算)、SUB
执行 ADD
(减法)等双操作数命令时所必须使用的寄存器。
A,R?(加法)、AND
R?,A
用来实现相应数据左移一位的运算,并能够控制该运算后
的结果是否输出到数据总线。
直通门 D
用来控制 ALU 的执行结果是否输出到数据总线。
右移门 R
用来实现相应数据右移一位的运算,并能够控制该运算后
的结果是否输出到数据总线。
程序计数器 PC
① 控制程序按顺序正常执行;
② 当执行转移指令时,从数据线接收要跳转的地址,使程
序能够按需要自动执行。
③ 当要从 EM 中读取数据时,由 PC 提供地址。
存储器 EM
存储指令和数据。
微程序计数器μPC 向微程序存储器μM 提供相应微指令的地址。
微程序存储器μM 存储相应指令的微指令。
(2)无符号除法
无符号除法对应于 COP2000 实验仪的硬件具体分配使用情况如下表所示:
硬件名称
寄存器 R0
寄存器 R1
寄存器 R2
寄存器 R3
累加器 A
寄存器 W
表 4 无符号除法的硬件分配情况
实现算法功能描述
存放被除数,计算后变为余数。
存放除数;
存放中间结果,最后为商。
当作计数器使用,初始为 4。
① 计算时用来存放中间结果;
② 执行 ADD A,R?(加法)、SUB A,R?(减法)等命令时所
必须使用的寄存器。
执行 ADD A,R?(加法)、SUB
令时所必须使用的寄存器。
A,R?(减法)等双操作数命
左移门 L
用来实现相应数据左移一位的运算,并能够控制该运算后
的结果是否输出到数据总线。
直通门 D
用来控制 ALU 的执行结果是否输出到数据总线。
右移门 R
用来实现相应数据右移一位的运算,并能够控制该运算后
的结果是否输出到数据总线。
程序计数器 PC
① 控制程序按顺序正常执行;
② 当执行转移指令时,从数据线接收要跳转的地址,使程
序能够按需要自动执行。
③ 当要从 EM 中读取数据时,由 PC 提供地址。
存储器 EM
存储指令和数据。
微程序计数器μPC 向微程序存储器μM 提供相应微指令的地址。
微程序存储器μM 存储相应指令的微指令。
4.在 COP2000 集成开发环境下设计全新的指令/微指令系统
(1) 新的指令集
(设计两个不同指令集要分别列表)
助记符
_FATCH_
MOV
MOV
MOV
MOV
ADD
ADD
SUB
SUB
SHL
SHR
JC
JZ
JMP
NOP
AND
R?, #II
A, R?
R?, A
A, #II
R?, A
R?, #II
A, R
R?, #II
R?
R?
MM
MM
MM
A, #II
机器码 1
000000xx
000001xx
000010xx
000011xx
000100xx
000101xx
000110xx
000111xx
001000xx
001001xx
001011xx
001100xx
001101xx
001110xx
001111xx
010000xx
00-03
04-07
08-0B
0C-0F
10-13
14-17
18-1B
1C-1F
20-23
24-27
28-2B
30-33
34-37
38-3B
3C-3F
40-43
机器码 2
指令说明
实验机占用,不可修改。复位后,所有寄存
器清 0,首先执行 _FATCH_ 指令取指。
立即数存入 R?
R?A
AR?
立即数存入 A
R?R?+A
R?R?+立即数
AA-R?
R?R?-立即数
R?不带进位左移,标志位不改变
R?不带进位右移,标志位不改变
标志位 Cy=1 时跳转
标志位 Z=1 时跳转
无条件跳转
空指令
A 和立即数与运算存入 A
II
II
II
II
MM
MM
MM
II
(2) 新的微指令集