基于proteus的一个微程序CPU
指令集与CPU架构
本文将设计一个微程序CPU,微程序的原理请参见前述博客基于proteus的CPU控制器设计(微程序版)。设计CPU之初,首先要定义一套较完备的机器指令集,该指令集应满足用户所需的全部功能,包括程序结构(顺序、循环及分支),算术逻辑运算,IO外设控制等等。
本文所述CPU的指令集如下1所示,指令格式定义如下:指令OP码为指令第一字节的高四位,即指令寄存器IR的{I7,I6,I5,I4}位。而RA和RB是指由{I3,I2}和{I1,I0}定义的逻辑寄存器,RA或RB都可以选择四个物理寄存器(R0~R3)中的任何一个。
表1. 微程序CPU指令集
如下图1所示,微程序CPU由微程序控制器(CONTROLLER)、时序电路(CLOCK)及数据通路组成。数据通路包括:程序存储器ROM、数据存储器RAM及通用寄存器R0~R3;IO接口;算术逻辑运算器(74LS181)及附带移位寄存器(74LS194);程序计数器(PC)、ALU运算结果标志位寄存器(PSW)及其断点寄存器(BP_PC、BP_PSW)。数据通路的所有部件都共同挂在一条8位系统总线BUS上。
图1. 微程序CPU电路图
微程序CPU电路图1的架构如下图2所示,图2右侧是时序电路(CLOCK)和微程序控制器(CONTROLLER),左侧则是由8位系统总线BUS串联起来的数据通路,挂在总线BUS上的CPU部件包括:存储器ROM/RAM及其地址寄存器AR;指令寄存器IR;通用寄存器R0~R3;算术逻辑运算器ALU及其附属的缓存器DA(兼作移位功能)和DB;外设I/O接口;程序计数器PC及其断点寄存器(BP_PC);中断向量地址(IVA)。此外,数据通路还包括右边的运算结果标志位寄存器(PSW)及其断点寄存器(BP_PSW)。
图2. 微程序CPU架构
微程序控制器
微程序CPU的微指令结构如下图3所示,微指令字长24位,其中1-5位是下一条微指令地址,即下址字段[uA4, uA0];6-8位是判断字段P1~P3;9-24位则是微命令字段,对应数据通路的所有微操作信号:其中置1的位表示执行相应的微操作;反之,置0的位则是不执行相应的微操作。
图3. 微指令结构图
其中,微指令的15-13位和12-10位采用字段编译法(3-8译码),分别对应源部件输出到总线BUS和总线BUS打入目标部件的微操作信号,如下表2所示:
表2. 微指令字段编译列表
此外,由于微程序控制器和数据通路相互独立,两者操作可以并行执行,微程序CPU的微指令周期只需要T1和T2两个状态,微指令状态机循环输出节拍序列{T1,T2},使状态顺序转移:T1→T2→T1→…
表3. 微指令状态机
如下图4所示, 24位微指令存储器MROM1-3共存放了32条微指令,所以微地址是MABUS_4-0。当信号ON或T1节拍上升沿&