1.相关控制信号说明
ALU的选通信号ALU_BUS;PC的选通信号PC_B;RAM8的选通信号RAM_BUS;地址寄存器AR的锁存信号LDAR;存储器RAM8的写使能WR=1允许写,WR=0禁止写,允许读;时钟脉冲Ti,控制微控制信号发出的先后顺序;程序计数器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。
2.实验任务
取指周期微程序的编码。在前三个实验的工作的基础上,读懂数据通路构成及其工作原理,根据下表列出的取指周期的微操作,结合微指令格式,给出取指周期的微命令和微指令的编码。
微指令码 |
微操作 |
微命令 |
微指令码 |
微地址 |
取指周期微指令 |
(1)PC→MUX→AR,PC+1→PC (2)RAM→BUS,BUS→IR,P1 |
将微指令码写入到控制存储器的初始化文件ROM_5.mif中,编译、仿真。
3、实验步骤与实验结果
第一步:下图是数据通路的基本组成。
图3.1数据通路
第二步:分析数据通路
红色的代表的就是数据通路,被紫色框出来的就是对应的为1的控制信号。
第三步:分析微指令。
微指令码 |
微操作 |
微命令 |
微指令码 |
微地址 |
取指周期微指令 |
(1)PC→MUX→AR,PC+1→PC (2)RAM→BUS,BUS→IR,P1 |
PC_B=1, LDAR=1 PCINC=1 RAM_B=1 LDIR=1 P1=1 即: M23,M20,M21,M13,M19,M7 |
00B82080H |
00H |
第四步:进行仿真。仿真图如下:
图3.2 利用微程序取指令的仿真图
4、实验讨论与总结
(1)在微指令地址形成电路中,当CF 或ZF有效时,对其输出uA[5..0]有何影
响?如何实现对程序的控制/转移功能?
问题解答:当P3P2P1P0取值为0100的时候且NuA[0]=0,此时CF有效,此时的为微地址就与CF有关,uA[5..0]=NuA[5..1]和CF组成。同理当P3P2P1P0取值为1000时,
此时ZF有效,此时的为微地址就与ZF有关,uA[5..0]=NuA[5..1]和ZF组成。通过P3P2P1P0的不同取值实现对程序的控制/转移功能。
(2)说明P[3..0]信号分别有效时,对微指令控制电路中输出uA[5..0]有何影响?
问题解答:P[3..0]的不同取值决定了微指令的下地址,P[3..0]全为0时NuA[5..0]作为下地址;P[3..0]为0001时,由SW[2..0]和NuA[5..3]决定,且NuA[2..0]全为0;P[3..0]为0010时,由指令作为下地址,且NuA[3..0]全为0,下地址由NuA[5..4]和IR[7..4]共同决定;当P3P2P1P0取值为0100的时候且NuA[0]=0,此时CF有效,此时的为微地址就与CF有关,uA[5..0]=NuA[5..1]和CF组成。同理当P3P2P1P0取值为1000时,此时ZF有效,此时的为微地址就与ZF有关,uA[5..0]=NuA[5..1]和ZF组成。
(3)当控制信号SWA、SWB、SWC取不同的值时,对微指令控制电路中输出 uA[5..0]有何影响?
问题解答:SWA、SWB、SWC取不同的值时,决定了微指令的下地址的不同。
(4)如何建立存储器初始化文件?如何向LPM_ROM、LPM_RAM中配置初始化数据?
问题解答:建立ROM.mif文件,讲微指令写入进去,注意第一条对应的就是取指令的微指令。