8 位 CISC 计算机设计
班级:09 电子 C
学号:091524****
***
8 位 CISC 计算机设计
班级:09 电子信息工程 C 班
学号:091524****
姓名:***
日期:2012 年 4 月 26 日
8 位 CISC 计算机设计
班级:09 电子 C
学号:091524****
***
一.实验目的
1.深入理解基本模型计算机的功能、组成知识;
2.深入学习计算机各类典型指令的执行流程;
3.学习微程序控制器的设计过程和相关技术,掌握 LPM_ROM 的配置方法。
4.在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构造一台基本模型计算机。
5.定义五条机器指令,并编写相应的微程序,上机调试,掌握计算机整机概念。掌握微程序的设计方法,学会编写二
进制微指令代码表。
6.通过熟悉较完整的计算机的设计,全面了解并掌握微程序控制方式计算机的设计方法。
二.实验原理
1.在部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本实验将能在微过程控制下自动产生各部件单元
控制信号,实现特定的功能。实验中,计算机数据通路的控制将由微过程控制器来完成,CPU 从内存中取出一条机器指令
到指令执行结束的一个指令周期,全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。
2.指令格式
(1)指令格式
采用寄存器直接寻址方式,其格式如下:
位
功能
7
6
5
OP-CODE
4
3
2
1
0
rs
rd
本实验采用五条机器指令:IN(输入)、
ADD(二进制加法)、STA(存数)、OUT
(输出)、JMP(无条件转移),其指令格
式如下(最高 4 位二进制数为操作码):
其中,OP-CODE 为操作码,rs 为源寄存器,rd 为目的寄存器,并规定:
Rs 或 rd
选定的寄存器
00
01
10
R0
R1
R2
助记符
ADD addr
STA addr
OUT addr
JMP addr
机器指令码
0 0H
1 0H
2 0H
3 0H
4 0H
Addr 地址码
功能说明
“INPUT”中的数据→R0
XX H
XX H
XX H
XX H
R0+[addr] ->R0
R0 -> [addr]
[addr] -> BUS
addr →PC
其中 IN 为单字长(8 位二进制),其余为双字长指令,XX H 为 addr 对应的十六进制地址码。为了向 RAM 中装入程
序和数据,检查写入是否正确,并能启动程序执行,还必须设计三个控制台操作微程序。
8 位 CISC 计算机设计
班级:09 电子 C
学号:091524****
***
1,存储器读操作(KRD):下载实验程序
后按总清除按键(CLR)后,控制台 SWA、
SWB 为“0 0”时,可对 RAM 连续手动读入
操作。
2,存储器写操作(KWE):下载实验程序
后按总清除按键(CLR)后,控制台 SWA、
SWB 为“0 1”时,可对 RAM 连续手动写操
作。
3、启动程序(RP):下载实验程序后按
总清除按键(CLR)后,控制台 SWA、SWB
为“1 1”时,即可转入到微地址“01”号“取
指令”微指令,启动程序运行。
SWB
SWA
0
0
1
0
1
1
控制台指令
读内存(KRD)
写内存(KWE)
启动程序(RP)
根据以上
要求设计
数据通路
框图,如
图 6-1 数据通路框图
图 5-1 所示。
表 6-1 24 位微代码定义:
24
S3
23
S2
22
S1
20
19
21
18
S0 M Cn WE
17
16
A9 A8
A
15 14 13
12 11 10
9 8 7
6
uA5
5
uA4
4
uA3
3
uA2
2
uA1
1
uA0
表 6-2 A、B、C 各字段功能说明:
A 字段
13
0
1
0
1
0
1
0
选择
LDRi
LDDR1
LDDR2
LDIR
LOAD
LDAR
14
0
0
1
1
0
0
1
15
0
0
0
0
1
1
1
12
0
0
0
0
1
1
1
C
B 字段
B
11
0
0
1
1
0
0
1
10
0
1
0
1
0
1
0
选择
RS-B
ALU-B
PC-B
9
0
0
0
0
1
1
1
8
0
0
1
1
0
0
1
P(1)
C 字段
7 选择
0
1
0
1
0
1
0
P(4)
LDAR
LDPC
24 位微代码中各信号的功能
(1) uA5—uA0:微程序控制器的微地址输出信号,是下一条要执行的微指令的微地址。
(2) S3、S2、Sl、S0:由微程序控制器输出的 ALU 操作选择信号,以控制执行 16 种算术操作或 16 种逻辑操作中的某
一种操作。
(3) M:微程序控制输出的 ALU 操作方式选择信号端。M=0 执行算术操作;M=l 执行逻辑操作。
(4) Cn:微程序控制器输出的进位标志信号,Cn=0 表示 ALU 运算时最低位有进位,Cn=1 则表示无进位。 (5)WE:
微程序控制器输出的 RAM 控制信号。当/CE=0 时,如 WE=0 为存储器读;如 WE=1 为存储器写。 (6) A9、A8——译码
后产生 CS0、CS1、CS2 信号,分别作为 SW_B、RAM、LED 的选通控制信号。 (7) A 字段(15、14、13)——译码后产
生与总线相连接的各单元的输入选通信号(见表 6-1)。
(8) B 字段(12、11、10)——译码后产生与总线相连接的各单元的输出选通信号。
(9) C 字段(9、8、7) ——译码后产生分支判断测试信号 P(1)~P(4)和 LDPC 信号。
系统涉及到的微程序流程见图 6-2。当执行“取指令”微指令时,该微指令的判断测试字段为 P(1)测试。由于“取指
令”微指令是所有微程序都使用的公用微指令,因此 P(1)的测试结果出现多路分支(见图 6-2 左图)。用指令寄存器的高 4
位(IR7-IR4)作为测试条件,出现 5 路分支,占用 5 个固定地址单元。
控制台操作为 P(4)测试(见图 6-2 右图),它以控制台信号 SWB、SWA 作为测试条件,出现了 3 路分支,占用 3 个固
定微地址单元。当分支微地址单元固定后,剩下的其它地方就可以一条微指令占用控制存储器的一个微地址单元,随意填
写。注意:微程序流程图上的微地址为 8 进制!
当全部微程序设计完毕后,应将每条微指令代码化,表 6-2 即为图 6-2 的微程序流程图按微指令格式转化而成的“二
8 位 CISC 计算机设计
班级:09 电子 C
学号:091524****
***
进制微代码表”。
表 6-2 二进制微代码表
微指令
S 3 S 2 S 1 S 0 M C N W E A 9 A 8
1
0
0 1 8 1 1 0
0
1
0 0 E D 8 2
1
0
0 0 C 0 4 8
1
0
0 0 E 0 0 4
0
1
0 0 B 0 0 5
1
0
0 1 A 2 0 6
1
9 1 9 A 0 1
1
0 0 E 0 0 D 0
1
0
0
0 0 1 0 0 1
1
0
0 0 E D 8 3
0 0 E D 8 7
0
1
1
0 0 E D 8 E 0
1
0
0 0 E D 9 6
0 3 8 2 0 1
0
1
1
0
0 0 E 0 0 F
1
0
0 0 A 0 1 5
0 1 E D 9 2
0
1
1
0
0 1 E D 9 4
1
0
0 0 A 0 1 0
1
0
0 0 8 0 0 1
0 6 2 0 1 1
0
0
0
0
0 7 0 A 0 1
0 0 D 1 8 1
0
1
1
0
0
0
0
1
1
0
0
0
0
0
1
1
0
0
1
1
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
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
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
微地址
0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
2 0
2 1
2 2
2 3
2 4
2 5
2 6
A
0 0 0
1 1 0
1 0 0
1 1 0
0 1 1
0 1 0
0 0 1
1 1 0
0 0 1
1 1 0
1 1 0
1 1 0
1 1 0
0 0 0
1 1 0
0 1 0
1 1 0
1 1 0
0 1 0
0 0 0
0 1 0
0 0 0
1 0 1
B
0 0 0
1 1 0
0 0 0
0 0 0
0 0 0
0 0 1
1 0 1
0 0 0
0 0 0
1 1 0
1 1 0
1 1 0
1 1 0
0 0 1
0 0 0
0 0 0
1 1 0
1 1 0
0 0 0
0 0 0
0 0 0
1 0 1
0 0 0
C
1 0 0
1 1 0
0 0 1
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
1 1 0
1 1 0
1 1 0
1 1 0
0 0 0
0 0 0
0 0 0
1 1 0
1 1 0
0 0 0
0 0 0
0 0 0
0 0 0
1 1 0
UA5—UA0
0 1 0 0 0 0
0 0 0 0 1 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 1 0 1
0 0 0 1 1 0
0 0 0 0 0 1
0 0 1 1 0 1
0 0 0 0 0 1
0 0 0 0 1 1
0 0 0 1 1 1
0 0 1 1 1 0
0 1 0 1 1 0
0 0 0 0 0 1
0 0 1 1 1 1
0 1 0 1 0 1
0 1 0 0 1 0
0 1 0 1 0 0
0 1 0 0 0 0
0 0 0 0 0 1
0 1 0 0 0 1
0 0 0 0 0 1
0 0 0 0 0 1
指令寄存器(IR):指令寄存器用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到缓冲寄存器
中,然后再传送至指令寄存器。指令划分为操作码和地址码段,由二进制数构成,为了执行任何给定的指令,必须对操作
码进行测试“P(1)”,通过节拍脉冲 T4 的控制,以便识别所要求的操作。
指令译码器: 根据指令中的操作码强置微控制器单元的微地址,使下一条微指令指向相应的微程序首地址。
8 位 CISC 计算机设计
班级:09 电子 C
学号:091524****
***
图 6-3 模型计算机电路原理图
说明:1、指令 IN 为单字节指令,指令码:00,其功能是将输入口 IN 的数据送到寄存器 R0;
2、指令 ADD [0AH]为双字节指令,指令码:100A,其功能是将 R0 中的数据加上 RAM 地址 0AH 中的数据(34H);
3、指令 STA [0BH]为双字节指令,指令码:200B,其功能是将 R0 中的数据送到 RAM 的 0BH 地址单元中;
4、指令 OUT[0BH]为双字节指令,指令码:300B,其功能是将 RAM 的 0BH 地址单元中的数据送到 OUT 输出口上;
5、指令 JMP [12H] 为双字节指令,指令码:4012,其功能是将其操作码下一地址单元(08H)的数据作为转跳地址。
三.CPU 顶层文件
CPU 组成部件:时钟发生器 ;指令寄存器 IR;算术逻辑运算单元 ALU;数据寄存器;状态控制器 ;程
序计数器 PC;地址寄存器 AR;微控制器;微指令译码器;微地址寄存器;微程序存储器 ROM;地址寄存
器 RAM;三态门
8 位 CISC 计算机设计
班级:09 电子 C
学号:091524****
***
8 位 CISC 计算机设计
班级:09 电子 C
学号:091524****
***
四.测试波形
程序执行过程如下:
CPU 部分波形仿真
STEP(1):M 输入微指令 018110,控制台执行 P(4),进行“读/写/运行”功能判断
STEP(2):检测到 SWA、SWB=11 后,进入程序运行 RP(11)方式。
STEP(3):进入程序运行的流程,执行微地址为 23 的微指令 018001(十六进制),选通 LDAR,PC_B,LDPC,后续微地址 uA
为 01(八进制)。
STEP(4):执行微地址为 01 的 M 微指令 01ED82,执行的操作为 PC→AR=00H,PC+1=01H→PC,AR 指向 RAM 存储器地
址 00H,后续微地址 uA 为 02。
STEP(5):执行微地址为 02 的 M 微指令 00C048,选通 RAM,LDIR,P(1),执行取指令操作,将 RAM 中的指令 00 通过内部
总线 Bus,送指令寄存器 IR:RAM(00H)=00→BUS→IR=00H。执行 IN 指令,目的寄存器为 R0。
STEP(6):执行微地址为 10 的 M 微指令 001001,执行的操作 SW_B 打开,允许输入装置键盘 SW 的数据送往数据总线 BUS;
LDRi 打开,允许向寄存器写数据,而指令编码为 00,其中目标寄存器 rd=00 指向 R0,因此输入数据 56H 送入寄存器 R0,
执行结果 R0=56H。后续微地址 uA 为 01。
STEP(7):同(4),执行 01ED82,取指令操作:PC→AR=01H,PC+1=02H,AR 指向 RAM 存储器地址 01H,后续微地址 02。
STEP(8):执行微地址 02 的微指令 00C048,选通 RAM,LDIR,P(1),取指令,经分支判断 P(1),读出地址为 01H 单元的内
容 10H,经 BUS 送到指令寄存器 IR:RAM(01H)=10H→BUS→IR=10H。
STEP(9):执行微地址为 11 的微指令 01ED83,进入加法运算微程序。选通 LDAR,PC_B,LDPC,通过间接寻址获得加法运
算的另一个操作数,地址寄存器 AR 指向取数的间接地址:PC→AR=02H,PC+1=03H,AR 指向 RAM 的 02 单元。
STEP(10):执行微地址为 03 的微指令 00E004,选通 LDAR,RAM,RAM_B 为高电平,Ram 的(02)单元的内容通过 BUS
送 AR,取数地址(AR)=0AH,即要从 RAM 的(0AH)单元取操作数:RAM(02)=0AH→BUS→AR=0AH。
STEP(11):执行微地址为 04 的微指令 00B005,选通 LDDR2,RAM,RAM_B 仍然为高电平,Ram 的(0AH)单元的内容
34H 送到 BUS,此时 LDDR2 为高电平,BUS 上的数据就送给了 DR2,执行结果:RAM(0AH)=34H→BUS→DR2=34H。
STEP(12):执行微地址为 05 的微指令 01A206,选通 LDDR1,RS_B,将 R0 的数据送 DR1。R0_B=1,允许 R0 的内容 56H
8 位 CISC 计算机设计
班级:09 电子 C
学号:091524****
***
送往 BUS,此时 LDDR1 为高电平,BUS 上的数据 56H 写入 ALU 的数据缓冲器 DR1,执行结果:(R0)=56H→BUS→DR1=56H。
STEP(13):执行微地址为 06 的微指令 919A01,选择 ALU 的加法功能,选通 LDRi,AR,完成加法运算:(DR1)+(DR2) →
R0,56H+34H=8AH→R0=8AH。
STEP(14):同(7),执行 01ED82,取指令操作:PC→AR=03H,PC+1=04H,AR 指向 RAM 存储器地址 03H,后续微地址 02。
STEP(15):执行微地址 02 的微指令 00C048,选通 RAM,LDIR,P(1),取指令,经分支判断 P(1),读出地址为 03H 单元的
内容 20H,经 BUS 送到指令寄存器 IR:RAM(03H)=20H→BUS→IR=20H。
STEP(16):执行微地址为 12 的微指令 01ED87,选通 LDAR,PC_B,LDPC,进入程序存储微程序。地址寄存器 AR 指向存数
的间接地址:PC→AR=04H,PC+1=05H,AR 指向 RAM 的 04 单元。
STEP(17):执行微地址为 07 的微指令 00E00D,选通 RAM,LDAR,存数地址送 AR:RAM(04)=0BH→BUS→AR=0BH。
STEP(18):执行微地址为 15 的微指令 038201,选通 WE,RS_B,R0 的内容存入 RAM(0BH)单元:(R0)=8AH→BUS→
RAM(0BH)=8AH。
STEP(19):同(14),执行 01ED82,取指令操作:PC→AR=05H,PC+1=06H,AR 指向 RAM 存储器地址 05H,后续微地址
02。
STEP(20):执行微地址 02 的微指令 00C048,选通 RAM,LDIR,P(1),取指令,经分支判断 P(1),读出地址为 05H 单元的
内容 30H,经 BUS 送到指令寄存器 IR:RAM(05H)=30H→BUS→IR=30H。
STEP(21):执行微地址为 13 的微指令 01ED8E,选通 LDAR,PC_B,LDPC,地址寄存器 AR 指向间接寻址取数地址:PC→
AR=06H,PC+1=07H。
STEP(22):执行微地址为 16 的微指令 00E00F,选通 RAM,LDAR,取数地址送 AR:RAM(06)=0BH→BUS→AR=0BH。
STEP(23):执行微地址为 17 的微指令 00A015,选通 RAM,LDDR1,从 RAM 中取数送 DR1:RAM(0BH)=8AH→BUS→
DR1=8AH。
STEP(24):执行微地址为 25 的微指令 010A01,选通 LED,ALU_B,DR1 的内容送输出单元 OUT:DR1=8AH→BUS→
OUT=8AH。
STEP(25):同(19),执行 01ED82,取指令操作:PC→AR=07H,PC+1=08H,AR 指向 RAM 存储器地址 07H,后续微地址
02。
STEP(26):执行微地址为 02 的微指令 00C048,选通 RAM,LDIR,P(1),取指令,经分支判断 P(1),读出地址为 07H 单元
的内容 40H,经 BUS 送到指令寄存器 IR:RAM(07H)=40H→BUS→IR=40H。
STEP(27):执行微地址为 14 的微指令 01ED96,选通 LDAR,PC_B,LDPC,地址寄存器 AR 指向间接寻址转移地址:PC→
AR=08H,PC+1=09H。
STEP(28):执行微地址为 26 的微指令 00D181,选通 RAM,LOAD,LDPC,转移地址送 PC,转到 00H:RAM(08H)=00→BUS
→PC=00H。
STEP(29):执行微地址为 01 的微指令 01ED82,执行第一条指令——程序循环:PC→AR=00H,PC+1=01H
STEP(30):执行微地址为 10 的微指令 00C048,取指令