实验四 微程序控制器实验

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、实验步骤与实验结果

第一步:下图是数据通路的基本组成。

实验四 微程序控制器实验_第1张图片

图3.1数据通路

第二步:分析数据通路

实验四 微程序控制器实验_第2张图片

红色的代表的就是数据通路,被紫色框出来的就是对应的为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张图片

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

你可能感兴趣的:(计算机组成原理,嵌入式硬件,单片机,fpga开发)