一、实验内容
构造一台模型机并完成调试,掌握整机概念。8位模型机CPU的电路原理图,如图1.1所示。
图 1.1 8位模型机CPU的顶层设计电路原理图
实验任务
指令执行周期的微程序的编码。
指令 | 功能 | 指令码 | 微操作 | 微命令 | 微指令码 | 微地址 |
LDI Rd,data | data→Rd | 0001Rdxx data | (1)PC→MUX→AR,PC+1→PC (2)RAM→BUS,BUS→Rd | |||
ADD Rd,Rs | (Rd)加(Rs)→Rd | 1001RdRs | +,ALU→BUS,BUS→Rd | |||
HALT | 停机 | 1111xxxx | STOP |
根据上表列出的3种指令,写出微操作、微命令、微指令编码和微地址。将微指令码写入到控制存储器的初始化文件ROM_5.mif中。
地址 | 汇编语言 | 指令格式 | 16进制 机器码 | 功能 | |
操作码 | 地址码 | ||||
00 | LDI R1,31 | 0001 | 0100 0011 0001 | 14 31 | 31→R1:R1=31 |
02 | LDI R0,55 | 0001 | 0000 0101 0101 | 10 55 | 55→R0 :R0=55 |
04 | ADD R1,R0 | 1001 | 0100 | 94 | (R1)+(R0)→R1:R1=86 |
05 | HALT | 1111 | 0000 | F0 | 停机 |
对上表的程序指令编码写入到程序存储器的初始化文件RAM_2.mif中,编译、仿真,仿真正确后,锁定引脚,再编译,下载到实验系统中,完成单步硬件调试。在调试过程中,注意观察指令所对应微程序的微指令编码的正确性。
二、实验步骤与实验结果
第一步:根据图1.1电路进行设计
图2.1 模型机的逻辑图
第二步:分析数据通路
图2.2 LDI Rd,data的数据通路
图2.3 ADD Rd,Rs的数据通路
第二步:分析微指令。
指令 | 功能 | 指令码 | 微操作 | 微命令 | 微指令码 | 微地址 |
LDI Rd,data | data→Rd | 0001Rdxx data | (1)PC→MUX→AR,PC+1→PC (2)RAM→BUS,BUS→Rd | PC_B=1,LDAR=1,PCINC=1,RAM_B=1,LDRI=1 即 M23,M20,M21,M13,M17为1 | 00B22000H | 01H |
ADD Rd,Rs | (Rd)加(Rs)→Rd | 1001RdRs | +,ALU→BUS,BUS→Rd | M=0,CN=0,S[3..0]为1001时做加法运算。 ALUB=1,LDRI=1 即 M27-M24=1001,M28=0,M29=0,M17=1,M12=1 | 09021000H | 09H |
HALT | 停机 | 1111xxxx | STOP | M18=1 | 00040000H | 0FH |
第三步:进行仿真。仿真图如下:
图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文件,讲微指令写入进去,注意第一条对应的就是取指令的微指令。