计算机组成原理实验之微程序控制器实验
(实验四 微程序控制器实验)
课程 计算机组成原理实验
实验日期 2015 年 12 月 1 日
一、实验目的
1.掌握时序发生器的组成原理。
2.掌握微程序控制器的组成原理。
二、实验内容
1.实验电路
(1)时序发生器电路
本实验所用的时序电路见图4.1。电路由一个500KHz晶振、2片GAL22V10、一片74LS390组成,可产生两级等间隔时序信号T1-T4、W1-W3,其中一个W由一轮T1-T4组成,相当于一个微指令周期或硬连线控制器的一拍,而一轮W1-W3可以执行硬连线控制器的一条机器指令。另外,供数字逻辑实验使用的时钟由MF经一片74LS390分频后产生。
图4.1 时序信号发生器
(2)微程序控制器电路
图4.2微程序控制器电路
微地址转移逻辑表达式:
A5=D5=μA5;
A4=D4=C•P2+μA4;
A3=D3=IR7•P1+μA3;
A2=D2=IR6•P1+SWC•P0+μA2;
A1=D1=IR5•P1+SWB•P0+μA1;
A0=D0=IR4•P1+SWA•P0+μA0。
2.一些关键技术
(1) 微指令格式
图4.3微指令格式
(2)指令功能与格式
表4-1 指令功能与格式
名称 |
助记符 |
功能 |
指令格式 |
||
IR7 IR6 IR5 IR4 |
IR3 IR2 |
IR1 IR0 |
|||
加法 |
ADD Rd, Rs |
Rd + Rs→Rd |
0 0 0 0 |
Rs1 Rs0 |
Rd1 Rd0 |
减法 |
SUB Rd, Rs |
Rd - Rs→Rd |
0 0 0 1 |
Rs1 Rs0 |
Rd1 Rd0 |
逻辑与 |
AND Rd, Rs |
Rd & Rs→Rd |
0 0 1 0 |
Rs1 Rs0 |
Rd1 Rd0 |
存数 |
STA Rd, [Rs] |
Rd→[Rs] |
0 0 1 1 |
Rs1 Rs0 |
Rd1 Rd0 |
取数 |
LDA Rd, [Rs] |
[Rs]→Rd |
0 1 0 0 |
Rs1 Rs0 |
Rd1 Rd0 |
条件转移 |
JC R3 |
若C=1, 则R3→PC |
0 1 0 1 |
1 1 |
× × |
停机 |
STP |
暂停执行 |
0 1 1 0 |
× × |
× × |
输出 |
OUT Rs |
Rs→DBUS |
0 1 1 1 |
Rs1 Rs0 |
× × |
(3)上述8条指令的微程序流程图如图4.4所示
图4.4微程序流程图
(4)微程序代码表
表4-2 微程序代码表
微指令 KT RRF WRF RRM WRM PR
当前微地址 00 0C 1E 06 07 0B 1D 0D 0E 0A 02 03 09 04 05 08 0F
下一微地址 08 1E 06 07 1E 1D 0D 0E 1D 02 03 02 04 05 04 0F 10
P0 1 . . . . . . . . . . . . . . . .
P1 . . . . . . . . . . . . . . . . 1
P2 . . . . . . . . . . . . . . . . .
备用 . . . . . . . . . . . . . . . . .
TJ . 1 . . 1 1 . 1 1 . 1 . 1 . 1 . .
LDIR . . . 1 . . . 1 . . . . . . . . 1
PC+1 . . . . . . . . . . . . . . . . .
LDPC# . 1 . . . 1 . . . . . . . . . 1
AR+1 . . . . . . . . . . . 1 . . 1 . .
LDAR# . 1 . . . 1 . . . 1 . . 1 . . . .
LDDR1 . . . . . . . . . . . . . . . . .
LDDR2 . . . . . . . . . . . . . . . . .
LDRi . . . . . . . . 1 . . . . . . . .
SW_BUS# . 1 1 . . 1 1 . 1 1 . . 1 1 . 1 .
RS_BUS# . . . . 1 . . . . . . . . . . . .
ALU_BUS# . . . . . . . . . . . . . . . . .
RAM_BUS# . . . . . . . . . . 1 . . . . . .
CER# . . . 1 . . . 1 . . . . . . . . 1
CEL# . . 1 . . . 1 . . . 1 . . 1 . . .
LR/W# . . 0 . . . 0 . . . 1 . . 0 . . .
Cn# . . . . . . . . . . . . . . . . .
M . . . . . . . . . . . . . . . . .
S0 . . . . . . . . . . . . . . . . .
S1 . . . . . . . . . . . . . . . . .
S2 . . . . . . . . . . . . . . . . .
S3 . . . . . . . . . . . . . . . . .
表4-2 微程序代码表(续)
微指令 ADD SUB AND STA LDA JC STP OUT
当前微地址 10 18 11 19 12 1A 13 1B 14 1C 15 1F 16 17
下一微地址 18 0F 19 0F 1A 0F 1B 0F 1C 0F 0F 0F 0F 0F
P0 . . . . . . . . . . . . . .
P1 . . . . . . . . . . . . . .
P2 . . . . . . . . . . 1 . . .
备用 . . . . . . . . . . . . . .
TJ . . . . . . . . . . . . 1 1
LDIR . . . . . . . . . . . . . .
PC+1 . 1 . 1 . 1 . 1 . 1 1 . 1 1
LDPC# . . . . . . . . . . . 1 . .
AR+1 . . . . . . . . . . . . . .
LDAR# . . . . . 1 . 1 . . . . .
LDDR1 1 . 1 . 1 . 1 . . . . . . .
LDDR2 1 . 1 . 1 . . . . . . . . .
LDRi . 1 . 1 . 1 . . . 1 . . . .
SW_BUS# . . . . . . . . . . . . . .
RS_BUS# . . . . . . 1 . 1 . . 1 . 1
ALU_BUS# . 1 . 1 . 1 . 1 . . . . . .
RAM_BUS# . . . . . . . . . 1 . . . .
CER# . . . . . . . . . . . . . .
CEL# . . . . . . . 1 . 1 . . . .
LR/W# . . . . . . 0 . 1 . . . .
Cn# . . . 1 . . . . . . . . . .
M . 0 . 0 . 1 . 0 . . . . . .
S0 . 1 . 0 . 1 . 0 . . . . . .
S1 . 0 . 1 . 1 . 0 . . . . . .
S2 . 0 . 1 . 0 . 0 . . . . . .
S3 . 1 . 0 . 1 . 0 . . . . . .
注:后缀为#的信号都是低电平有效信号,为了在控存ROM中用“1”表示有效,这些信号在控制器中经过反相后送往数据通路。
3.实验任务
(1)按实验要求,连接实验台的电平开关K0-K15、时钟信号源和微程序控制器。连接完成后应仔细检查一遍,然后才可以加上电源。
注意:本次实验只做微程序控制器本身的实验,故微程序控制器输出的微命令信号与执行部件(数据通路)的连线不连接。
(2)观察时序信号
用双踪示波器观测时序发生器的输入、输出信号:MF、T1-T4、W1-W3。比较相位关系,画出其波形图,并标注出测量所得的脉冲频率(f)、周期(T)及脉宽(tp)。观察时须将DB、DP开关置为0状态。先按CLR#,然后按QD按钮,则时序电路不停地在运行,直到按CLR# 按钮为止。
(3)熟悉微指令格式的定义,按此定义将图4.4所示的全部微程序变换成二进制代码,并列表登记。此表请在预习时完成。
(4)控制台操作的功能由SWC、SWB、SWA三个二进制开关的状态配合P0判断来决定。用单拍(DP)方式执行控制台操作微程序,观察判别字段和微地址指示灯的显示,跟踪微指令的执行情况,并与上表数据对照。
(5)深刻理解0FH微指令的功能和P1测试的状态条件(IR7-IR4),用二进制开关设置IR7-IR4的不同状态,观察ADD至OUT八条机器指令对应微程序的微命令信号,特别是微地址转移的实现,并与上面表格进行对照。
三、实验环境
软件: WIN XP、串口调试助手软件
硬件:1.微机 1台
2.TEC-5实验系统 1台
3.数字双踪示波器 1台
4.逻辑测试笔 1支
5.编程器 公用
四、实验步骤和实验结果
1.观察时序信号波形
(1)接线表
时序电路 |
TJ |
SKIP |
固定电平 |
地 |
地 |
注意:接线表中的TJ是时序电路中的TJ,不是控制器中的TJ(该TJ由控制器产生,不能接输入信号),切记勿接错。
(2)时序信号的波形如下所示:
按顺序依次是M,T1:
T2,T3:
T4,W1:
W2,W3:
2.控制台操作微指令编码测试
接线表如下:
控制器 |
C |
IR4 |
IR5 |
IR6 |
IR7 |
模拟开关 |
K0 |
K1 |
K2 |
K3 |
K4 |
时序电路 |
TJ |
SKIP |
固定电平 |
地 |
地 |
控制台微代码在58C65的D0—D7输出,D0是最低位,D7是最高位,CM0是最低字节,CM3是最高字节。D0—D7对应于58C65的引脚11、12、13、15、16、17、18、19。对于控存的输出,有相应的32个指示灯指示。
(1)写存储器WRM工作模式
置DP = 1,DB =0,使实验系统处于单拍状态。置SWC = 0、SWB = 0、SWA = 1,实验系统处于写存储器WRM工作模式。按CLR#按钮,使实验系统处于初始状态,微地址为00H,测得的微码是00H 00H 00H 48H。按一次QD按钮,微地址为09H,测得的微码是00H 08H 84H 04H。按一次QD按钮,微地址为04H,测得的微码是01H 08H 00H 05H。按一次QD按钮,微地址为05H,测得的微码是00H 00H 44H 04H。按一次QD按钮,微地址为04H。由于微地址又返回04H,停止测试。
(2)读存储器RRM工作模式
置DP = 1,DB =0,使实验系统处于单拍状态。置SWC = 0、SWB = 1、SWA = 0,实验系统处于读存储器RRM工作模式。按CLR#按钮,使实验系统处于初始状态,微地址为00H,测得的微码是00H 00H 00H 48H。按一次QD按钮,微地址为0AH,测得的微码是00H 08H 80H 02H。按一次QD按钮,微地址为02H,测得的微码是03H 40H 04H 03H。按一次QD按钮,微地址为03H,测得的微码是00H 00H 40H 02H。按一次QD按钮,微地址为02H。由于微地址又返回02H,停止测试。
(3)写寄存器WRF工作模式
置DP = 1,DB =0,使实验系统处于单拍状态。置SWC = 0、SWB = 1、SWA = 1,实验系统处于写寄存器WRF工作模式。按CLR#按钮,使实验系统处于初始状态,微地址为00H, 测得的微码是00H 00H 00H 48H。按一次QD按钮,微地址为0BH,测得的微码是00H 08H A4H 1DH。按一次QD按钮,微地址为1DH,测得的微码是01H 08H 00H 0DH。按一次QD按钮,微地址为0DH,测得的微码是00H 80H 0CH 0EH。按一次QD按钮,微地址为0EH,测得的微码是00H 0CH 04H 1DH。按一次QD按钮,微地址为1DH。由于微地址又返回1DH,停止测试。
(4)读寄存器RRF工作模式
置DP = 1,DB =0,使实验系统处于单拍状态。置SWC = 1、SWB = 0、SWA = 0,实验系统处于读寄存器工作模式。按CLR#按钮,使实验系统处于初始状态,微地址为00H, 测得的微码是00H 00H 00H 48H。按一次QD按钮,微地址为0CH,测得的微码是00H 08H A4H 1EH。按一次QD按钮,微地址为1EH,测得的微码是01H 08H 00H 06H。按一次QD按钮,微地址为06H,测得的微码是00H 80H 08H 07H。按一次QD按钮,微地址为07H,测得的微码是00H 10H 04H 1EH。按一次QD按钮,微地址为1EH。由于微地址又返回1EH,停止测试。
(5)实验系统处于PR工作模式
置DP = 1,DB =0,使实验系统处于单拍状态。置SWC=0、SWB = 0、SWA = 0,实验系统处于PR工作模式。按CLR#按钮,使实验系统处于初始状态,微地址µA5-µA0为00H。按一次QD按钮,微地址为08H,测得的微码是00H 08H 20H 0FH。按一次QD按钮,微地址为0FH,测得的微码是00H 80H 08H 90H。由于以后的微码与机器指令有关,停止测试。
深刻理解0FH微指令的功能和P1测试的状态条件(IR7-IR4),用二进制开关设置IR7-IR4的不同状态,观察ADD至OUT八条机器指令对应微程序的微命令信号,特别是微地址转移的实现。
0FH微指令的功能是根据程序计数器PC从存储器取指令,送往指令寄存器IR。0FH微指令的下一微指令地址是10H。不过,10H只是一个表面的下一微地址,由于该微指令中P1 = 1,因此实际的微指令地址的低4位要根据IR7—IR4确定,实际微地址为10H + IR7 IR6 IR5 IR4。
① 置DP = 1,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按CLR#按钮,使实验系统处于初始状态,微地址是00H。按一次QD按钮,微地址变为08H,微代码为00H 08H 20H 0FH。按一次QD按钮,微地址变为0FH,微代码为00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=0,K2(IR5)= 0,K1(IR4)= 0,相当于ADD指令的操作码。按一次QD按钮,微地址变为10H,微代码是(00H 03H 00H 18H)。按一次QD按钮,微地址变为18H,微代码是(90H 24H 10H 0FH)。按一次QD按钮,微地址回到0FH。
② 置DP = 1,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按CLR#按钮,使实验系统处于初始状态,微地址是00H。按一次QD按钮,微地址变为08H,微代码为00H 08H 20H 0FH。按一次QD按钮,微地址变为0FH,微代码为00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=0,K2(IR5)= 0,K1(IR4)= 1,相当于SUB指令的操作码。按一次QD按钮,微地址变为11H,微代码是(00H 03H 00H 19H)。按一次QD按钮,微地址变为19H,微代码是(04H 24H 10H 0FH)。按一次QD按钮,微地址回到0FH。
③ 置DP = 1,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按CLR#按钮,使实验系统处于初始状态,微地址是00H。按一次QD按钮,微地址变为08H,微代码为00H 08H 20H 0FH。按一次QD按钮,微地址变为0FH,微代码为00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=0,K2(IR5)= 1,K1(IR4)= 0,相当于AND指令的操作码。按一次QD按钮,微地址变为12H,微代码是(00H 03H 00H 1AH)。按一次QD按钮,微地址变为1AH,微代码是(B8H 24H 10H 0FH)。按一次QD按钮,微地址回到0FH。
④ 置DP = 1,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按CLR#按钮,使实验系统处于初始状态,微地址是00H。按一次QD按钮,微地址变为08H,微代码为00H 08H 20H 0FH。按一次QD按钮,微地址变为0FH,微代码为00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=0,K2(IR5)= 1,K1(IR4)= 1,相当于STA指令的操作码。按一次QD按钮,微地址变为13H,微代码是(00H 11H 80H 1BH)。按一次QD按钮,微地址变为1BH,微代码是(01H 20H 10H 0FH)。按一次QD按钮,微地址回到0FH。
⑤ 置DP = 1,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按CLR#按钮,使实验系统处于初始状态,微地址是00H。按一次QD按钮,微地址变为08H,微代码为00H 08H 20H 0FH。按一次QD按钮,微地址变为0FH,微代码为00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=1,K2(IR5)= 0,K1(IR4)= 0,相当于LDA指令的操作码。按一次QD按钮,微地址变为14H,微代码是(00H 10H 80H 1CH)。按一次QD按钮,微地址变为1CH,微代码是(00H 44H 10H 0FH)。按一次QD按钮,微地址回到0FH。
⑥ 置DP = 1,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按CLR#按钮,使实验系统处于初始状态,微地址是00H。按一次QD按钮,微地址变为08H,微代码为00H 08H 20H 0FH。按一次QD按钮,微地址变为0FH,微代码为00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=1,K2(IR5)= 0,K1(IR4)= 1,相当于JC指令的操作码。按一次QD按钮,微地址变为15H,微代码是(00H 00H 11H 0FH)。令K0(C)=0。按一次QD按钮,微地址变为0FH,微代码为00H 80H 08H 90H。按一次QD按钮,微地址变为15H。令K0(C)=1,按一次QD按钮,微地址变为1FH,微代码是(00H 10H 20H 0FH)。按一次QD按钮,微地址回到0FH。
⑦ 置DP = 1,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按CLR#按钮,使实验系统处于初始状态,微地址是00H。按一次QD按钮,微地址变为08H,微代码为00H 08H 20H 0FH。按一次QD按钮,微地址变为0FH,微代码为00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=1,K2(IR5)= 1,K1(IR4)= 0,相当于STP指令的操作码。按一次QD按钮,微地址变为16H,微代码是(00H 00H 14H 0FH)。按一次QD按钮,微地址回到0FH。
⑧ 置DP = 1,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按CLR#按钮,使实验系统处于初始状态,微地址是00H。按一次QD按钮,微地址变为08H,微代码为00H 08H 20H 0FH。按一次QD按钮,微地址变为0FH,微代码为00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=1,K2(IR5)= 1,K1(IR4)= 1,相当于OUT指令的操作码。按一次QD按钮,微地址变为17H,微代码是(00H 10H 14H 0FH)。按一次QD按钮,微地址回到0FH。
五、实验结果与讨论
(1)实验任务(2)结果讨论:
实验得出的波形图如下所示:
结论:测量结果与理论值相符。
(2)实验任务中的(4)和(5)所测的控制存储器代码如下表:
微地址 |
CM3 |
CM2 |
CM1 |
CM0 |
00 |
00 |
00 |
00 |
48 |
01 |
00 |
00 |
00 |
00 |
02 |
03 |
40 |
04 |
03 |
03 |
00 |
00 |
40 |
02 |
04 |
01 |
08 |
00 |
05 |
05 |
00 |
00 |
44 |
04 |
06 |
00 |
80 |
08 |
07 |
07 |
00 |
10 |
04 |
1E |
08 |
00 |
08 |
20 |
0F |
09 |
00 |
08 |
84 |
04 |
0A |
00 |
08 |
80 |
02 |
0B |
00 |
08 |
A4 |
1D |
0C |
00 |
08 |
A4 |
1E |
0D |
00 |
80 |
0C |
0E |
0E |
00 |
0C |
04 |
1D |
0F |
00 |
80 |
08 |
90 |
10 |
00 |
03 |
00 |
18 |
11 |
00 |
03 |
00 |
19 |
12 |
00 |
03 |
00 |
1A |
13 |
00 |
11 |
80 |
1B |
14 |
00 |
10 |
80 |
1C |
15 |
00 |
00 |
11 |
0F |
16 |
00 |
00 |
14 |
0F |
17 |
00 |
10 |
14 |
0F |
18 |
90 |
24 |
10 |
0F |
19 |
64 |
24 |
10 |
0F |
1A |
B8 |
24 |
10 |
0F |
1B |
01 |
20 |
10 |
0F |
1C |
03 |
44 |
10 |
0F |
1D |
01 |
08 |
00 |
0D |
1E |
01 |
08 |
00 |
06 |
1F |
00 |
10 |
20 |
0F |
结论:测量结果与理论值相符。
六、思考题
请问图4.4微程序流程图中的0BH微地址是如何产生的?
答:根据微指令产生后继微地址的多路转移方式的逻辑表达式:
A5=D5=μA5; A4=D4=C•P2+μA4;
A3=D3=IR7•P1+μA3; A2=D2=IR6•P1+SWC•P0+μA2;
A1=D1=IR5•P1+SWB•P0+μA1; A0=D0=IR4•P1+SWA•P0+μA0。
而由此时的流程图可知,WRF(011)指令,SWC、SEB、SWA分别为0、1、1。
且P1=0,P0=1。
故A5=0,A4=0,A3=1,A2=0,A1=1,A0=1。于是,产生001011地址,即0BH微地址。
七、总结
(一) 本次实验按时按量完成。
(二) 通过本次实验我掌握时序发生器的组成原理和微程序控制器的组成原理。
(三) 在观察时序信号波形时,如果出现红色的波形,则按MATH按钮即可消除。如果出现红色的横条或竖条线,则通过显示按钮来调节。
(四) 向AR送地址时地址指示灯AR不随SW7-SW0数据的变化而改变。主要原因是LDAR#接触不良.同理向PC送地址时PC地址指示灯不随SW7-SW0数据的变化而改变.主要原因是LDPC#接触不良。
posted on 2016-01-03 16:14 CuriousZero 阅读(31804) 评论(0) 编辑 收藏 举报