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文件,讲微指令写入进去,注意第一条对应的就是取指令的微指令。