“计算机组成原理”课程设计报告
微
程
序
控
制
器
的
设
计
班级:03042
学号:0304248
姓名:黄元佳
完成时间:2007.4.1
一、设计思路
按照要求设计指令系统,该指令系统能够实现数据传送,进行加、减运算和无条件转移,具有累加器寻址、寄存
器寻址、寄存器间接寻址、存储器直接寻址、立即数寻址等五种寻址方式。从而可以想到如下指令:
(1)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 做何种运算。
本实验还需用到的五条机器指令:IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、JMP(无条件转移),其指令
格式如下:
说明
“INPUT DEVICE”中的开关状态R0
助记符
IN
ADD addr
STA addr
OUT
addr
addr
JMP
机器指令码
0000
0000
0000 ××××
0001
0010
0000 ××××
0011 0000
0100
0000 ××××
R0+[addr] R0
R0 [addr]
×××× [addr] BUS
addrPC
其中 IN 为单字长(8 位),其余为双字长指令,××××××××为 addr 对应的二进制地址码。
为了向 RAM 写入、读出机器指令,并能启动程序执行,还须设计三个控制台操作微程序。
存储器读(KRD):拨动总清开关 CLR 后,控制台开关 SWB、SWA 为“0 0”时,按 START 微动开关,可对 RAM 连续手动读操
存储器写(KWE):拨动总清开关 CLR 后,控制台开关 SWB、SWA 为“0 1”时,按 START 微动开关,可对 RAM 连续手动写操
作。
作。
启动程序(RP):拨动总清开关 CLR 后,控制台开关 SWB、SWA 为“1 1”时,按 START 微动开关,即可转入到第 01 号“取
址”微指令,启动程序运行。
上述三条控制台指令用两个开关 SWB、SWA 的状态来设置,其定义如下:
SWB
0
0
1
SWA
0
1
1
控制台指令
读内存(KRD)
写内存(KWE)
启动程序(RP)
(二)在实验中使用的模型机的微指令格式如下表给定,长度共 24 位。
其中最后六位 uA0~uA5 为 6 位的下一条微指令的地址, 前面几位为直接控制字段,直接与相应的控制门连接,A,B,C 为 3
个译码字段,分别由三个控制位译码出多位。其含义如下:
A 字段
15 14
13
0
0
0
0
1
1
1
0
0
1
1
0
0
1
0
1
0
1
0
1
0
选择
LDRi
LDDR1
LDDR2
LDIR
LOAD
LDAR
B 字段
12 11
10
0
0
1
1
0
0
1
0
0
1
0
0
0
1
0
0
1
1
1
0
1
控制位含义
选择
RS-B
ALU-B
PC-B
9
0
0
0
0
1
1
1
C 字段
8
0
0
1
1
0
0
1
7
0
1
0
1
0
1
0
选择
P(1)
P(4)
LDPC
微程序控制器的结构与微指令的格式密切相关。
微程序控制器由控制存储器、微地址寄存器、微命令寄存器和地址转移逻辑几部分组成。微地址寄存器和微命令
寄存器两者的总长度即为一条微指令的长度,二者合在一起称为微指令寄存器。
●控制存储器(ROM)
ROM 中存放微程序,也就是全部的微指令。ROM 的容量取决于微指令的总数。假如控制器需要 128 条微指令,则微
地址寄存器长度为 7 位。ROM 的字长取决于微指令长度。如果微指令为 32 位,则 ROM 的字长就是 32 位。实际应用中 ROM
可采用 EPROM 或 E2PROM、EAROM,用户写入和修改微程序比较方便。
●微命令寄存器
微命令寄存器暂存由控制存储器中读出的当前微指令中控制字段与测试判别字段信息,可由 8D 寄存器组成。
●微地址寄存器
微地址寄存器暂存由控制存储器读出的当前微指令的下址字段信息。它可由带 RD、SD 强置端的 D 触发器组成。其
中时钟端和 D 端配合用做 ROM 的读出打入,用 SD 进行下址修改。
●地址转移逻辑
微指令由 ROM 读出后直接给出下一条微指令的地址,这个地址就放在微地址寄存器中。当微程序出现分支时通过
地址转移逻辑去修改微地址寄存器内容,并按修改好的微地址读出下条微指令。地址转移逻辑是一个组合逻辑电路,其
输入是当前微指令的判别测试字段 Pi、执行部件反馈的“状态条件”及时间因素 T4。
●控制时序信号
上图中标明了一个基本机器周期中的控制时序信号。例如用上一周期的 T4 时间按微地址寄存器内容从 ROM 中读一
条微指令,经过一段时间后被读出,用当前周期的 T1 时间打入到微指令寄存器。T2、T3 时间用来控制执行部件进行操
作。T4 时间修改微地址寄存器内容并读出下一条微指令。
二、设计步骤:
(一)、拟订指令系统
指令系统是设计计算机的依据 ,拟订指令系统将涉及基本字长、指令格式、指令种类、寻址方式等内容。
基本字长:
程序设计平台中配置的存储器容量为256*8,可知道基本字长定为8位。
指令格式:
指令格式可有单字长和双字长指令两种,在双字长格式中,第二字节一般定义为操作数或操作数地址。
指令格式为:
操作码OP
源操作数
目的操作数
指令类型:
模型机有单操作数指令、双操作数指
令和无操作数指令。
操作码OP共四位,最多可定义16条指令。
数据的传送单位为 8 位
数据的传送范围 R—>R R—>RAM RAM—>R
寻址方式:
由于指令较短,操作数字段仅两位,为了简化硬件设计,将操作数字段和目的操作数字段的寻址定义为不同的含义。
源操作数字段寻址方式
目的操作数寻址方式
00
01
10
11
R0
(R0)
I
D
00
01
10
11
R1
(R1)
I
D
Ri 表示操作数就在寄存器中
(Ri)表示操作数地址在寄存器中
I 指令的第二个字节为操作数或称立即寻址
(D)指令的第二个字节为操作数的地址
源操作数使用 R0 寻址
目的操作数 R1 寻址
(二)、确定总体结构
根据要求设计数据通路框图:
2.1 流程图
图 2-1 数据通路结构框图
PC->AR, PC+1
RAM->BUS,
P(1)
STA
OUT
JMP
IN
ADD
RW->R0
PC->AR,
PC->AR, PC+1
PC->AR, PC+1
PC->AR, PC+1
RAM->BUS,
RAM->BUS,
RAM->BUS,
RAM->BUS,
RAM->BUS,
RAM->BUS,
RAM->BUS,
R0->DR1
DR1->LED
(DR1)+(DR2) ->R0
图 2-2 微程序流程图
当拟定“取指”微指令时,该微指令的判别测试字段为 P(1)测试。由于“取指”微指令是所有微指令都使用的公用微指
令,因此 P(1)的测试结果会出现多路分支。我们使用指令寄存器的前 4 位(IR7-IR4)作为测试条件,出现 5 路分支,占用
5 个固定微地址单元。
控制台命令的微程序流程,01 为取指令微指令的地址:
图 2-3 控制台流程图
控制台操作作为 P(4)测试,它以控制开关 SWB,SWA 作为测试条件,出现了 3 路分支,占用 3 个固定微地址单元。当
分支微地址单元固定后,剩下的其他地方就可以一条微指令占用控存一个微地址单元随意填写。
2.2 微代码表
当全部微程序设计完毕后,将每条微指令代码化,把流程图按微指令格式转化成“二进制微代码表”,如下:
表 2-5 二进制微
代码表
2.3 确定连线图
根据各部件的功能,确定好电路各个
芯片的连接,如下:
微
地
址
00
01
02
03
04
05
06
07
10
11
12
13
14
15
16
17
20
21
22
23
24
25
26
27
30
S3
S2
S1
S0 M CN WE A9 A8 A
B
C
UA5…UA0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
0
1
1
1
1
0
0
0
1
1
0
0
1
1
1
1
0
0
0
1
1
0
1
0
1
0
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
0
0
1
0
1
000 000 100 010000
110 110 110 000010
100 000 001 001000
000 000 001 000100
011 000 000 000101
010 101 000 000110
001 101 000 000001
110 000 000 001101
001 000 000 000001
110 110 110 000011
110 110 110 000111
110 110 110 001110
110 110 110 010110
000 001 000 000001
110 000 000 001111
010 000 000 010101
110 110 110 010010
110 110 110 010100
010 000 000 010111
000 000 000 00000
010 000 000 011000
000 101 000 000001
101 000 110 000001
000 101 000 010000
000 101 000 010001
图 2-4 接线图
各部件功能:
指令寄存器(IR):指令寄存器用来保存当前正在执行的一条指令。当执行一行指令时。先把它从内存取到缓冲寄存器中,
然后在传至指令寄存器。指令划分为操作码和地址码字段,由二进制数构成,执行任何给定的指令,必须对操作码进行测试[P
(1)],通过节拍脉冲 T4 的控制以便识别所要求的操作。
指令译码器(ID):根据指令中的操作码译码强制微控器单元的微地址,使下一条微指令指向相应的微程序首地址。
输入设备(INPUT DEVTICE):是一种二进制代码开关,实现数据输入。输入时,二进制开关数据直接经过三态门送到总
线上,只要开关状态不变,输入的信息也不变。
输出设备(OUTPUT DEVICE):是一种数码块,完成数据输出。输出时,匠输出数据送到数据总线上,当写信号(W/R)
有效时,将数据打入输出锁存器,驱动数据块显示。
(三)设置情况
1、寄存器的设置:
R0,R1为通用寄存器,8位。
IR为指令寄存器,8位。
PC程序寄存器,8位。
MAR为地址寄存器,8位。
2、加法器的设置:
采用8位带串行进位并行加法器。
3、选择器的设置:
连入A选择器的数据来源是RAM的读出数据和R0寄存器的数据。连入B选择器的数据来源是PC的数据和R1的数据。
4、数据通路:
数据通路的设计,在总体结构中是最重要的一个问题,模型机的数据通路是以总线为基础,以CPU为核心的。
信息的传送路径:
取指令
MA
CPIR
RAM—>选择器 A—>Σ—>BUS—>IR
送指令地址
PB
CPMAR
PC—>选择器 B—>Σ—>BUS—>MAR
指令计数器+1
PB
C0
CPPC
PC—>选择器 B—>Σ—>BUS—>PC
R0—>R1
RA
CRR1
R0—>选择器 A—>Σ—>BUS—>R1
R1—>RAM
RB
WR
R1—>选择器 B—>Σ—>BUS—>RAM
(四)逻辑设计:
总体结构设计之后,便开始总体结构中各部件的逻辑设计和部件之间的连接。
1、加法器的逻辑设计:
如附图2所示,模型机中的加法器是由八个一位全加器构成,全加器之间采用简单的串行进位。全加器逻辑原理如附图3所
示:附图3如下
a
b
53
26
ci
19
I3
I4
I5
I7
I6
6
s
I2
a1
a0
I8
7
co
I1
I9
I10
I63
I62
I61
I60
z3
z2
z1
z0
2、选择器的设计:
选择器A和选择器B的结构形式一样,如附图4所示,在控制电位EN0和EN1的控制下,分别选择R0的或R1的数据通过选择器,
进入加法器。EN0和EN1是互斥的,高电平有效。
3、寄存器的设计:
不带复位的寄存器:
结构中 R0,R1 通用寄存器,可存入操作数或结果、中间结果,每个寄存器均由 8 个 D 触发器构成。在 CPRi 的作用下接收
总线的数据送入寄存器,输出连入选择器。结构如附图 5 所示。指令寄存器 IR 其结构同通用寄存器。
带复位的寄存器:
结构中 MAR 地址寄存器是一个带复位的寄存器,带复位是指当有复位信号时,MAR 清零。逻辑图如附图 6 所示。
程序计数器的设计:
程序计数器结构如附图 6 所示。PC 加 1 是通过加法器实现的。
复位信号 RET 的作用是有复位信号时,计数器 PC 清零。
部件之间的连接:
由系统结构可看出,部位之间的连接是采用以 CPU 为中心的总线连接方式。加法器的输出通过总线 BUS 连接到所有寄存器
和存储器的输入端,除指令寄存器 IR 和地址寄存器 MAR 的输出端外,其他部件的输出端分别送入选择器 A 和选择器 B。
连线图如附图1所示。
(五)、确定控制方式
控制命令是确定信息的流向,不同的数据通路需要不同的控制指令。即组合逻辑方式和微程序方式,模型机采用微程序方
式。微程序的执行方式采用增量、垂直方式。
1、微程序控制器的结构:
微程序控制器的部件由设计平台提供。
2、微程序控制器的时序:
微程序控制器的时序如图所示:
P
P’
P 脉冲的低电平用做控制存储器读命令µRD
P 脉冲的上升边沿将读出的微指令µIR
I97
I96
I95
I94
I93
I92
I91
I90
I89
I82
I88
负脉冲P的上升边沿将形成的后继地址送微程序计数器µPC,同时将运算结果(总线的数据)送指定的寄存器。
I87
3、微指令格式:
微指令格式由三部分组成,既微指令字段定义,微命令形成逻辑和后继微地址产生逻辑。
后继微地址产生逻辑:
I86
I85
I84
I83
I80
I79
I78
I77
I81
I76
I75
I74
为简单起见只选三种后继微地址生成方式即增量方式、无条件转移方式、按操作码转移方式。
当 EN=1 时,微程序计数执行加 1 操作
当 EN=0 且 JP=1 时,无条件转移
当 EN=0 且 QJP=1 时,按操作码转移
4、 微程序编写:
(1)程序
MOV1 05#,R0
MOV2 01#,R1
ADD R0,R1
MOV3 R1,(R0)
(2)操作码二进制代码
MOV1:0001
MOV2:0010
ADD:0011
MOV3:0100
(3)微程序入口(16进制代码)
取指令入口:00H
MOV1入口:10H
MOV2入口:20H
ADD入口:30H
MOV3入口:40H
(4)指令执行流程图:
指令流程:
00
RAM
PC+1
10
PC
IR
PC
20
30
MAR
PC
MAR
R0+R1
R1
PC+1
PC
PC+1
PC
PC
MAR
40
R0
R1
MAR
RAM
RAM
R0
RAM
R1
JP
PC
MAR
PC
MAR
PC
MAR
JP
JP
JP
(5)编制微程序
根据指令流程跟微指令格式开始编制微程序。
二-四译码器逻辑原理如附图3所示。
三-八译码器逻辑原理如附图8所示。
全部微程序如表1所示。
(六)分调
将模式开关至于分调
1、伟福系统
平台上的所有开关和发光二极管均随意编制用做数据输入和状态显示
典型部件如下:
选择器A
带复位的寄存器MAR
不带复位的寄存器R0
程序计数器PC
在部件设计无错、连线无错、1032E 的管脚定义无错时可生成下载文件下载到 1032E 中。
2、单片机系统
微程序经过检查无误后,将模式开关至分调后通过键盘写入响应的单元中。
(七)统调
将模式开关置于统调,此时平台上的开关及发光二极管的设置情况如下:
开关 K15--K0 无效,不可编程使用