二、实验目的
1.掌握微程序控制器的工作原理和组成结构;
2.掌握微程序的编写、输入方法,观察微程序的执行过程。
三、实验环境
PC计算机
四、实验内容
取指周期微程序的编码。在实验1、实验2和实验3工作的基础上,读懂图4.4电路的构成及其工作原理,根据下表列出的取指周期的微操作,结合微指令格式,给出取指周期的微命令和微指令的编码。
微指令码 | 微操作 | 微命令 | 微指令码 | |
取指周期微指令 | (1)PC→MUX→AR,PC+1→PC (2)RAM→BUS,BUS→IR,P1 | |||
LDI Rd,data | data→Rd | (1)PC→MUX→AR,PC+1→PC (2)RAM→BUS,BUS→Rd | ||
ADD Rd,Rs | (Rd)加(Rs)→Rd | +,ALU→BUS,BUS→Rd | ||
HALT | 停机 | STOP | ||
将微指令码写入到控制存储器的初始化文件ROM_5.mif中,编译、仿真。
五、实验步骤与实验结果
实验步骤:
1.控制存储器设参考计
从控制存储器中取出一条“取指令”用的微指令,送到微指令寄存器中。这是一条公用的微指令,一般可存放在控制存储器的0号或1号地址单元。微命令字段产生相关的控制信号,从主存中读取指令,送到指令寄存器IR中(按PC指向取指令),完成了取指令的任务。控制存储器设计如图4.2所示。
图4.2 控制存储器
2.微指令格式设计
计算机系统中,CPU中集成了运算器ALU、多个通用寄存器GPR、计数器PC、指令寄存器IR、地址寄存器AR等硬件资源,它们是为实现指令的功能,包括从存储器中取指令和执行指令服务的。因此,微指令设计时,应考虑控制这些硬件资源的控制信号。数据通路参考电路,如图4.5所示。
图4.5 数据通路电路
相关控制信号说明:ALU的选通信号ALU_BUS;PC的选通信号PC_BUS;RAM8的选通信号RAM_BUS;地址寄存器AR的锁存信号LDAR;存储器RAM8的写使能WR=1允许写,WR=0禁止写,允许读;读写脉冲T1;程序计数器PC的锁存信号LDPC;指令寄存器IR的锁存信号LDIR。
本实验微指令采用水平型微指令编码格式,共32位,由操作控制字段和顺序控制字段组成,顺序控制字段分为测试字段和下地址字段,微指令格式如下表所示。
M31 | M30 | M29 | M28 | M27 | M26 | M25 | M24 | M23 | M22 | M21 | M20 | M19 | M18 | M17 | M16 |
Res | Res | CN | M | S3 | S2 | S1 | S0 | PC_B | LDPC | PCINC | LDAR | LDIR | STOP | LDRI | WREN |
M15 | M14 | M13 | M12 | M11 | M10 | M9 | M8 | M7 | M6 | M5 | M4 | M3 | M2 | M1 | M0 |
Res | Res | RAM_B | ALU_B | SW_B | DO_B | P3 | P2 | P1 | P0 | NuA5 | NuA4 | NuA3 | NuA2 | NuA1 | NuA0 |
M31:保留
M30:保留
M29:CN,最低进位控制信号。
M28:M,算术还是逻辑运算控制信号。
M27-M24:S3S2S1S0,ALU运算控制信号。
M23:PC_B,程序计数器到数据总线控制信号。
M22:LDPC,将程序地址打入程序计数器PC控制信号。
M21:PCINC,程序计数器PC自增1控制信号。
M20:LDAR,将地址打入地址寄存器控制信号。
M19:LDIR,将指令打入指令寄存器控制信号。
M18:STOP,停止程序运行控制信号。
M17:LDRI,写寄存器控制信号。
M16:WREN,RAM存储器读写控制信号,高电平写,低电平读。
M15:保留
M14:保留
M13:RAM_B,存储器单元到数据总线控制信号。
M12:ALU_B,ALU运算结果释放到数据总线控制信号。
M11:SW_B,按键输入数据到数据总线控制信号。
M10:DO_B,数据总线到输出设备控制信号。
M9-M6: 是4个测试位,P3P2P1P0。P0、P1、P2和P3的作用如下表所示:
测试位 | 功能 |
P0 | =1时,根据后继微地址NµA5~NµA0和模式开关SWC、SWB、SWA确定下一条微指令的地址。 |
P1 | =1时,根据后继微地址NµA5~NµA0和指令操作码IR7~IR4确定下一条微指令的地址。 |
P2 | =1时,根据后继微地址NµA5~NµA0和进位标志C确定下一条微指令的地址。 |
P3 | =1时,根据后继微地址NµA5~NµA0和结果为0标志Z确定下一条微指令的地址。 |
M5-M0:是后继微地址NuA5-NuA0。
实验结果:
根据下表列出的取指周期的微操作,结合微指令格式,给出取指周期的微命令和微指令的编码。
指令 | 功能 | 指令码 | 微操作 | 微命令 | 微指令码 | 微地址 |
取指周期 | (1)PC→MUX→AR,PC+1→PC (2)RAM→BUS,BUS→IR,P1 | M23,M21,M20,M5-M0 M19,M13,M7, | 00B0003f 00082080 | 00 3f | ||
LDI Rd,data | data→Rd | 0001Rdxx data | (1)PC→MUX→AR,PC+1→PC (2)RAM→BUS,BUS→Rd | M23,M21,M20,M4,M1 M17,M13 | 00B00012 00022000 | 01 12 |
ADD Rd,Rs | (Rd)加(Rs)→Rd | 0101RdRs | (1)M=0,S3S2S1S0=1001,CN=0(“+”) (2)ALU→BUS,BUS→Rd | M31, M17,M12 | 8C9021000 | 05 |
HALT | 停机 | 1111xxxx | STOP | M18 | 00040000 | 0F |
附件一、原理图