2.5 微程序控制器实验原理
微程序控制器的基本任务就是完成当前指令的翻译和执行, 既将当前指令的功能转换成可以控制的硬件逻辑部件工作的微命令序列,完成数据传送和各种处理操作
硬件组成
- 控制存储器: 采用三片2816的EEPROM组成
- 微命令寄存器: 18位, 包括P字段和控制字段
- 微地址寄存器: 6位 T2时刻下一条微指令的地址写入微地址寄存器(不进行判别测试时)
- ALU: Arithmetic logic unit
- MAR: Micro address register
- IR: Instruction register
- MCR: Micro command register
- NMA: Next micro address
微程序
$M 00 000001 ;NOP
$M 01 007070 ;CON(INS) -> IR,P<1>
$M 04 002405 ;R0->B
$M 05 04B201 ;A add B -> R0
$M 30 001404 ;RO->A
$M 32 183001 ;IN->R0
$M 33 280401 ;R0->OUT
$M 35 000035 ;NOP
运行流程
T2节拍 下一条微指令的地址存入 微地址寄存器
T3,T4节拍 执行T2产生的控制信号, 如果测试位有效, 则要根据机器指令及当前微地址寄存器中的内容进行译码, 实现微程序的分支
-
CLR按扭清除MAR KK2置为单步
-
置IN单元为
00100011(23)
, MC单元的NMA ==000001(NOP)
时, 置CON单元SD27~SD20 为 IN指令00100000
-
按动ST 开始执行微指令
000001(H)
,这里有一个P<1>标记,说明需要执行P<1>散转下址,从CON单元输入INS-
-
CON输入
00100000
-
当前指令为070707 MA5~MA0 = 110000
- I7I6=00
- SE5 = MA5 = 1
- SE4 = MA4 = 1
- SE3 = I7
- SE2 = I6
- SE1 = I5
- SE0 = I4
-
-
经过P<1>得到的微地址为
110010
(六位二进制)
-
-
地址32对应的指令为
18 30 01
-
RD=1 IOM=1 从IN单元读入
00100011
到R0 ??IN -> R0
读写控制器逻辑可以让CPU能控制MEM和I/O设备的读写。当RD=1,IOM=1时,CPU对I/O设备进行读操作,RD=1,IOM=0时,对MEM进行读操作。T3=1,IOM=0,WR=1时对MEM单元进行写操作;T3=1,IOM=1,WR=1时,对I/O设备进行写操作。
- MC/NMA=
000001
- 至此IN指令执行完成
-
-
-
回到地址
01
, 等待CON单元输入S27~S20- CON单元置
00000000
进入P<1>散转下址- 当前指令为007070 MA5~MA0 = 110000
- I7I6=00
- SE5=MA5=1
- SE4=MA4=1
- SE3=I7=0
- SE2=I6=0
- SE1=I5=0
- SE0=I4=0
-
经过P<1>得到的微地址为
110000
(30) -
地址30 的指令为
001404
- A字段
001
LDA - B字段
010
RO_B R0 -> A
- A字段
-
NMA=000100
-
地址04 的指令为
00 24 05
- A字段
010
LDB - B字段
010
RO_B R0 -> B
- A字段
-
NMA=
000101
-
地址05 的指令为
04B201
- A字段
011
LDRO - B字段
001
ALU_B R0 <- A+B
- A字段
- CON单元置
-
回到地址
01
,等待CON单元输入S27~S20-
CON单元置
00110000
-
P<1>得到
011011
33 -
地址35 的指令为
280401
-
WR=1 IOM=1 写入OUT单元
-
A字段
000
-
B字段
010
RO_BNMA
000001
-
-