计算机组成原理课程设计
模型机设计
1. 设计目的
(1)在掌握单元电路实验基础上,将各部分组成系统,构成一台基本模型计算
机。
(2)为其定义五条机器指令,并编写相应的微程序,具体上机调试掌握整机概
念。
2. 基本要求
了解并掌握计算机组成原理设计的一般方法,具备初步的独立分析和设计能
力; 通过该课程设计的学习,总结计算机组成原理课程的学习内容,层次化设
计方法、多路开关,逻辑运算部件,微程序控制的运算器设计、微程序控制的存
储器设计、简单计算机的设计。提高综合运用所学的理论知识和方法独立分析和
解决问题的能力。
具体内容: 1. 数据格式和指令系统
2. 数据通路
3. 时序系统
5. 微程序控制器
7. 微程序代码表
4. 微指令格式
6. 微程序流程图
3. 基本原理
在第一部分的单元实验中,所有的控制信号是人为用 SWITCH 单元产生的,
但是在实际的 CPU 中,所有的控制信号都是由 CPU 自动产生的。所以在本次
实验中用微程序来控制,自动产生各部件单元控制信号,实现特定指令的功能。
这里,计算机数据通路的控制将由微程序控制器来完成,CPU 从内存中取出一
条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即
一条机器指令对应一段微程序。
本实验设计了五条机器指令,其指令格式如下:
1
助记符
机器指令码
说明
IN
00000000
;输入,“INPUT”设备中的
开关状态→R0
ADD addr
00010000 XXXXXXXX
;二进制加法,R0+[addr]
→R0
STA addr
OUT addr
JMP addr
00100000 XXXXXXXX
;存数,R0→[addr]
00110000 XXXXXXXX
;输出,[addr]→BUS
01000000 XXXXXXXX
;无条件转移,addr→PC
机器指令码的前 4 位为操作码。其中 IN 为单字长,其余为双字长指令,
XXXXXXXX 为 addr 对应的二进制地址码。
为了向 RAM 中装入程序和数据,检查写入是否正确,并能启动程序执行,
还必须设计三个控制台操作微程序。
存储器读操作(READ):拨动总清开关 CLR 后,控制台开关 SWB、SWA
为“00”时,按 START 微动开关,可对 RAM 连续手动读操作。
存储器写操作(WRITE):拨动总清开关 CLR 后,控制台开关 SWB、SWA
设置为“01”时,按 START 微动开关可对 RAM 进行连续手动写入。
启动程序(RUN):拨动总清开关 CLR 后,控制台开关 SWB、SWA 设置
为“11”时,按 START 微动开关,即可转入到第 01 号“取址”微指令,启动
程序运行。
上述三条控制台指令用两个开关 SWB、SWA 的状态来设置,其定义如下:
SWB
SWA
0
0
1
0
1
1
控制台命令
读内存(READ)
写内存(WRITE)
启动程序运行(RUN)
根据以上要求设计数据通路框图,如图 1。微代码定义如表 1 所示。
2
图 l 数据通路框图
表 1
基本模型机微指令结构图
微程序
控制信号
2
0
1
9
1
8
2
1
2
2
2
3
1
2
7
4
S3 S2 S1 S0 M CN RD M1
7
1
5
1
4
A
1
6
M1
6
1
3
1
2
1
0
1
1
B
9 8 7 6
P
u
A
5
5
u
A
4
4
u
A
3
3
u
A
2
2
u
A
1
1
u
A
0
A 字段
13 控制信号 12
0
0
1
0
0
0
0
1
0
1
1
1
0
1
LDRI
LDDR1
LDDR2
LDIR
LOAD
LDAR
11
0
0
1
1
0
0
1
15
0
0
0
0
1
1
1
14
0
0
1
1
0
0
1
RS_G
B 字段
10 控制信号 9
0
0
1
0
0
0
0
1
0
1
1
1
0
1
ALU_G
PC_G
8
0
0
1
1
0
0
1
3
P1
P 字段
7 控制信号
0
1
0
1
0
1
0
LDPC
P4
系统涉及到的微程序流程见图 2,当拟定“取指令”微指令时,该微指令的
判别测试字段为 P1 测试。由于“取指令”微指令是所有微程序都使用的公用微
指令,因此 P1 的测试结果出现多路分支。本机用指令寄存器的高 4 位(I7—I4
操作码)作为测试条件,出现 5 路分支,占用 5 个固定微地址单元。
控制台操作为 P4 测试,它以控制台开关 SWB、SWA 作为测试条件,出现
了 3 路分支,占用 3 个固定微地址单元。当分支微地址单元固定后,剩下的其
它地方就可以一条微指令占用一个微地址单元随意填写。
当全部微程序设计完毕后,应将每条微指令代码化,表 2 即为将图 2 的微程
序流程图按微指令格式转化而成的“二进制微代码表”。
4
图 2 微程序流程图
表 2 二进制代码表
5
本系统有两种外部 I/O 设备,一种是二进制数码开关,作为输入设备(INPUT);
另一种是两位十六进制数 LED 数码管,作为输出设备(OUTPUT UNIT)。在输入
时,二进制开关数据直接经过三态门送到总线上。只要开关状态不变,输入的信
息也不变。输出时,将输出数据送到数据总线上,当写信号(WE)有效时,将数
据打入输出锁存器,驱动数码块显示。
4. 具体内容
(1)编写程序
根据该模型机的指令系统,编写一段程序。
6
本程序从输入设备(数码开关)读入数据,与 0A 单元的数据相加,然后送
到输出设备(LED 数码管)进行显示。本程序不断地循环运行,在运行中可改变
输入开关(INPUT)的值,观察输出显示的变化。
设计机器指令程序如下(机器码和地址为十六进制数据)。
地 址
内 容
助记符
说 明
00
01
定数据相加
02
03
04
05
06
07
08
0A
0B
00
10
0A
20
0B
30
0B
40
00
01
IN
;输入开关数据→R0,采集数据
ADD [0AH]
;R0+[0AH]→R0,输入数据与指
;地址
STA [0BH]
;R0→[0B]
;地址
OUT [0BH]
;[0BH] →BUS,输出显示
;地址
JMP [00H]
;00H→PC
;跳转地址
;加数,可自定
;求和结果保存在 0B 单元
(2)连接试验线路
按图 3 连接实验线路(图中箭头表示需要接线的地方,接总线和控制信号时
要注意高低位一一对应,可用彩排线的颜色来进行区分)。
(3)写程序
1 先将机器指令对应的微代码正确地写入 28C16 中,由于在实验 1.7 微程
序控制器的组成与微程序设计实验中已将微代码写入 E2PR0M 芯片中,对照表 2-5
校验正确后就可使用。
7
2 使用控制台 WRITE 和 READ 微程序进行机器指令程序的装入和检查,其
操作如下:
A.使 SIGNAL UNIT 单元的 SP03 为“STEP”状态,SP04 为“RUN”状态,
CONTROLUNIT 的开关 SP05 处于“NORM”状态,开关 SP06 处于“RUN” 状态。
B.拨动开关单元的总清开关 CLR(101),微地址寄存器清零,程序计
数器清零。然后使开关单元的 SWB、SWA 开关设置为“01”,按动一次控制台单
元的触动开关 START,微地址显示灯显示“010001”,再按动一次 START,微地
址灯显示“010100”,此时数据开关的内容(输入单元)置为要写入的机器指令
的内容,按动两次 START 键后,即完成该条指令的写入。若仔细阅读 WRITE 的流
程,就不难发现,机器指令的首地址总清后为零,以后每个循环 PC 会自动加 1。
所以,每次按动 START,只有在微地址灯显示“010100”时,才设置内容,直到
所有机器指令写完。
8