一、实验目的
了解微程序控制器的组成原理
二、实验设备
TEC-4实验系统、万用表
三、实验内容
1:阅读微指令格式和微程序控制器的组成,微指令由操作控制和顺序控制两部分组成,1条微指令的字长35位(一个存储单元35位,采用数据线为8位的EEPROM,因此使用了5片。容量为:2^6*5字节/byte,即2^6*5*8位/bit),其中操作控制为25位,顺序控制10位(4位判别测试,6位微地址:uA5-uA0)。
2:阅读机器指令功能与格式(即指令集)。
名称 | 助记符 | 功能 | 指令格式 | ||
R7 R6 R5 R4 | R3 R2 | R1 R0 | |||
加法 | 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 |
乘法 | MUL Rd,Rs | Rd*Rs->Rd | 0 0 1 0 | RS1 RS0 | RD1 RD0 |
逻辑与 | AND Rd,Rs | Rd&Rs->Rd | 0 0 1 1 | RS1 RS0 | RD1 RD0 |
存数 | STA Rd,[Rs] | Rd->[Rs] | 0 1 0 0 | RS1 RS0 | RD1 RD0 |
取数 | LDA Rd,[Rs] | [Rs]->Rd | 0 1 0 1 | RS1 RS0 | RD1 RD0 |
无条件转移 | JMP [Rs] | [Rs]->PC | 1 0 0 0 | RS1 RS0 | X X |
条件转移 | JC D | 若C=1则 PC+D->PC | 1 0 0 1 | D3 D2 | D1 D0 |
停机 | STP | 暂停运行 | 0 1 1 0 | X X | X X |
中断返回 | IRET | 返回断点 | 1 0 1 0 | X X | X X |
开中断 | INTS | 允许中断 | 1 0 1 1 | X X | X X |
关中断 | INTC | 禁止中断 | 1 1 0 0 | X X | X X |
3:阅读微程序流程图,其中每个方框上标出的是微地址,对于在P2处所产生的分支由P2条件起作用,并依据机器指令的OP字段做为每条机器指令(执行周期)的微程序的入口地址。
4:开关K5-TJI、K6-SKIP;K5、K6=0;将开关与控制器部分的有关信号连接。
5:令DP=1、DB=0、DZ=0(为单步执行)。
6:对不同控制台方式设置进行观察。
令SWC=0、SWB=0、SWA=1(KRD,读取端口存储器)。
按CLR#,从标有UA5-UA0的黄色LED上读出当前的微地址;按QD ,记录黄色LED的结果,即第一拍;继续重复上述步骤直到第五拍;按CLR#。
注意:5片EEPROM的地址A6(引脚4)直接与控制台开关SWC连接,当SWC=1时,微地址大于或者等于40H,当SWC=0时,微地址的范围为00H—3FH。SWC主要用于实现读寄存器堆的功能。
7:了解微程序控制器如何区分各机器指令并进入相应的微程。
令SWC=0、SWB=0、SWA=0。(PR,启动程序)。
观察加法指令(ADD)的取指、执行过程。
①按CLR#,观察并记录微地址LED的结果,记录本条微指令中设为有效的微命令信息。
②按QD,观察并记录微地址LED的结果,记录本条微指令中设为有效的微命令信息(有效微操作位对应的微命令)。
③按QD,观察并记录微地址LED的结果,记录本条微指令中设为有效的微命令信息。
④按QD,观察并记录微地址LED的结果,记录本条微指令中设为有效的微命令信息。
⑤按QD,观察并记录微地址LED的结果,记录本条微指令中设为有效的微命令信息。(仅在此步骤用万用表测试本条微命令有效的信号读数值;另外测量SW_BUS#、 RS_BUS#、IAR_BUS#的值)。
⑥按QD,观察并记录微地址LED的结果,记录本条微指令中设为有效的微命令信息。按CLR#。
注意:带有#的控制信号,低电平(0)为有效。其他信号控制信号,“1”有效。
四、实验结果
0:控制信号接线
控制开关与信号接口的一一对应关系如下所示:
开关 | K0 | K1 | K2 | K3 | K4 |
信号 | C | IR4 | IR5 | IR6 | IR7 |
同时,令TJ-TJ1-GND;SKIP-GND;即把三个信号均采用接地。
1:记录ADD指令取指和执行过程对应的一段微程序和每条微指令对应得微地址。
- 当SWC=0,SWB=0,SWA=1时,取指、执行ADD的黄色LED结果如下所示
观察黄色LED | 第1拍 | 第2拍 | 第3拍 | 第4拍 | 第5拍 |
P3 | |||||
P2 | |||||
P1 | |||||
P0 | |||||
uA5 | 1 | 1 | 1 | 1 | |
uA4 | 1 | 1 | 1 | 1 | 1 |
uA3 | 1 | 1 | 1 | 1 | |
uA2 | 1 | 1 | 1 | 1 | 1 |
uA1 | 1 | 1 | 1 | 1 | 1 |
uA0 | 1 | 1 | 1 |
- 当SWC=0,SWB=0,SWA=0时,取指、执行ADD的黄色LED结果如下所示
观察黄色LED | 第1拍 | 第2拍 | 第3拍 | 第4拍 | 第5拍 |
P3 | |||||
P2 | 1 | ||||
P1 | |||||
P0 | |||||
uA5 | 1 | 1 | |||
uA4 | 1 | 1 | 1 | ||
uA3 | 1 | ||||
uA2 | 1 | 1 | 1 | ||
uA1 | 1 | 1 | |||
uA0 | 1 | 1 | 1 |
- 当SWC=0,SWB=0,SWA=0时,取指、执行ADD的信号有效性记录如下所示
记录信号 | 第1拍 | 第2拍 | 第3拍 | 第4拍 | 第5拍 |
TJ |
|
|
|
|
|
S2 |
|
|
|
|
|
S1 |
|
|
| 1 |
|
S0 |
|
|
|
|
|
M1(M2) |
|
|
|
|
|
LDDR1(LDDR2) |
|
| 1 |
|
|
WRD |
|
|
|
| 1 |
LRW |
|
|
|
|
|
CEL# | 1 | 1 | 1 | 1 | 1 |
ALU_BUS |
|
|
| 1 |
|
RS_BUS# | 1 | 1 | 1 | 1 | 1 |
SW_BUS# |
| 1 | 1 | 1 | 1 |
IAR_BUS# | 1 | 1 | 1 | 1 | 1 |
LDER |
|
|
| 1 |
|
M3 |
|
|
|
|
|
AR1_INC |
|
|
|
|
|
LDAR1(LDAR2) |
| 1 |
|
|
|
LDIAR |
|
|
|
|
|
M4 | 1 |
|
|
|
|
PC_INC |
| 1 |
|
|
|
PC_ADD |
|
|
|
|
|
LDPC(LDR4) | 1 |
|
|
|
|
LDIR(CER) |
| 1 |
|
|
|
INTC |
|
|
|
|
|
INTS |
|
|
|
|
|
P3 |
|
|
|
|
|
P2 |
| 1 |
|
|
|
P1 |
|
|
|
|
|
P0 |
|
|
|
|
|
uA5 |
|
| 1 | 1 |
|
uA4 |
| 1 | 1 | 1 |
|
uA3 |
|
| 1 |
| 1 |
uA2 | 1 |
|
| 1 | 1 |
uA1 |
|
| 1 |
| 1 |
uA0 | 1 |
| 1 |
| 1 |
2:记录所有机器指令执行过程中的微指令的起始地址,并指出每一条机器指令执行过程中的有效微指令数目。
五、实验心得
1:本实验需万能表检测各信号的有效情况,但虚拟平台更方便导致时间花费多。
2:课后使用虚拟实验平台检测的信号有效值显示如下(第0拍至第5拍)
第0拍:
第1拍:
第2拍:
第3拍:
第4拍:
第5拍:
3:本实验中的控制存储器的容量是微指令数与字长的乘积,而控制存储器的字长就是微指令字的长度。因此,控制存储器的容量为:2^6*5字节/byte,即2^6*5*8位/bit。
4:微指令由操作控制和顺序控制两部分组成,1 条微指令的字长有 35 位。其中,操作控制25 位,顺序控制 10 位(4 位判别测试,6 位微地址:uA5-uA0)。
5:微命令是在微程序控制的计算机中,同时发出的控制信号所执行的一组微操作。在本实验的控制器流程图中,每个矩形方框代表一个微命令。
6:执行部件接受微命令后所执行的操作就叫做微操作。在本实验中,例如10H处的微命令中的 M1=0,LDDR1,M2=0等都是微操作。
7:ALU的全称为算术逻辑运算单元,需要记忆。
8:本实验的实验指导中的控制器流程图和虚拟试验平台的控制器流程图有所不同,在SJMP(1111)和JC(1001)处有所体现。
9:字扩展通过串联的方式,实现了位数不变、字数扩展的存储。
而本实验采用位扩展通过并联的方式,实现了位数扩展、字数不变的存储。
字扩展示例图:
位扩展示例图:
10:字扩展的计算方法
①求出所需芯片的数目。
②将各芯片片内的地址线,数据线,读写线分别并联。
③片选cs信号线单独连接。用高位地址经过译码器译码而产生的输出信号,作为各个芯片的片选信号。
11:位扩展的计算方法:
①求出所需芯片个数。
②将芯片的地址线,读写控制线,使能端并联。
③将各芯片的数据端按顺序输出到数据总线上。
12:字、位同时扩展的计算方法:(例如,用L×K位芯片扩展为M×N位存储器)
①求出需要( M×N )/( L×K )块芯片。
②扩展时分成M/L组。
③组内N/K片芯片进行位扩展,组间字扩展。