模型机CPU设计——控制器(4)

控制器:
(1) 部件功能:
功能:根据译码器传送来的输入,cf,cz标志以及IR传送来的输入产生各个分部件的控制信号,指导各个分部件有序工作。
(2) 接口设计:
视图
模型机CPU设计——控制器(4)
输入:
MOVA,MOVB,MOVC,ALU,NOT0,SHR,SHL,JMP,JZ,JC,Z,C,NOP,HALT是由译码器传送的控制信号,用来做于控制信号的产生依据。
SM:由SM传送的时钟信号。
IR:由指令寄存器传送的RAM数据。
输出:
(1) SRG_WE,SRG_RA,SRG_WA指向寄存器组的控制信号,指导寄存器组的读写操作。
(2) MUX_MADD:指向选择器的控制信号,指导控制器进行选择。
(3) ALU_S,ALU_M:指向函数发生器的控制信号,指导函数发生器工作
(4) PC_LD,PC_INC:指向PC寄存器的控制信号,指导PC进行加一和跳转操作
(5) RAM_XL,RAM_DL:指向RAM的控制信号指导RAM进行读写或高阻状态
(6) shift_FBUS,shift_FR,shift_FL:指向移位寄存器的控制信号指导移位寄存器进行左右移位,传送以及高阻状态的执行
(7) IR_LD:指令寄存器的控制信号,指导IR进行载入
(8) CF_EN,ZF_EN:C,Z寄存器的控制信号,指导C,Z寄存器的工作
(9) SM_EN:SM时钟发生器的控制信号,指导其工作
功能实现
SRG_WE:当指令MOVA,MOVC传送指令,运算指令ALU,取反NOT0,左右移位SHR,SHL,输入寄存器I0N,以及SM为1时,SRG_WE为0,表示执行写入操作,否则为1表示写入。
SRG_WE<=not(MOVA or MOVC or ALU or NOT0 or SHR or SHL or IN0 or SM)
SRG_RA:取机器码IR(1 downto 0)位,选择对ABC三个寄存器的读取
SRG_WA:取机器码IR(3 downto 2)位,选择对ABC的写入和读取
MUX_MADD:当SM=‘0’时,MUX_MADD=“00”选择第一个输入,接通PC,当SM为1且MOVC=1时MUX_MADD=“01”接通A口,当SM=1且MOVB,MUX_MADD=“10”接通C口
ALU_S取机器码IR(7 downto 4)高四位,由此进行相应运算判断
ALU_M:当 IR(7 downto 4)="1001"or IR(7 downto 4)="0110"or IR(7 downto 4)=“1011” or IR(7 downto 4)="0101"即执行加减或非运算时为1
PC_LD当(Jz and Z) or (JC AND C) or JMP为1时PC_LD为1执行跳转操作
PC_INC当(JZ and (NOT Z)) or (JC and (not C)) or NOP or(not SM)为1执行PC加一操作
RAM_XL当传送指令MOVB=1时为1写入RAM
RAM_DL当MOVC or JMP or(Z and JZ) or (Z and JC) or (not SM)为1时执行读取操作
shift_FR<=SHR;右移
shift_FL<=SHL;左移
shift_FBUS当MOVA or MOVB or ALU or NOT0 or SHR or SHL即执行AB类传送指令算数运算以及左右移位为1时shift_BUS为1表示执行相应操作或提供数据通道
IR_LD:not SM即当取址周期时IR_LD为1进行数据载入
CF_EN:当ALU or SHR or SHL为1。即执行函数运算以及左右移位时可能产生标志位这时开放CF_EN通道
ZF_EN:当ALU为1。即执行函数运算时可能产生标志位这时开放ZF_EN通道
SM_EN当not HALT为1,即非停机时SM时钟持续发生
VHDL设计:
模型机CPU设计——控制器(4)
(4)功能仿真验证:
.
模型机CPU设计——控制器(4)
模型机CPU设计——控制器(4)

仿真结果:
时钟15ns时:指令MOVA,MOVC,ALU,NOT0,SHR,SHL,IN0,SM=1,SRG_WE=1
任何时间都有SRG_RA=IR后2位,SRG_WA=IR高2位
时钟15ns:MUX_MADD:SM=‘0’,MUX_MADD=“00”;
时钟20ns:SM为1且MOVC=1,MUX_MADD=“01”
时钟10ns:SM=1且MOVB,MUX_MADD=“10”
任何时间ALU_S=IR(7 downto 4)高四位
时钟20ns:IR(7 downto 4)="1001"or IR(7 downto 4)="0110"or IR(7 downto 4)=“1011” or IR(7 downto 4)=“0101”,ALU_M=1
时钟25ns:PC_LD=1,(Jz and Z) or (JC AND C) or JMP为1
时钟15ns:PC_INC=1,(JZ and (NOT Z)) or (JC and (not C)) or NOP or(not SM)
时钟20ns:RAM_XL=1,MOVB=1时为1写入RAM
时钟25ns:RAM_DL=1,MOVC or JMP or(Z and JZ) or (Z and JC) or (not SM)为1
时钟45ns:shift_FR<=SHR
时钟50ns:shift_FL<=SHL
时钟50ns:shift_FBUS=1,MOVA or MOVB or ALU or NOT0 or SHR or SHL=1
时钟15ns:IR_LD=1:not SM=1
时钟55ns:CF_EN=1:ALU or SHR or SHL=1
时钟60ns:ZF_EN=1:ALU=1
时钟65ns:SM_EN=1,not HALT为1
结论:仿真结果满足功能要求,设计正确