新增ADD指令:支持中断的单总线结构MIPS处理器:微程序控制器+硬布线控制器(6条指令)+硬布线状态机、组合逻辑看法解析

一、新增ADD指令:微程序控制器(支持【中断】的单总结结构MIPS处理器)

第1步:先修改一下指令译码器,增加一个ADD指令。

然后在微程序控制器中加上指令译码信号ADD

第2步:修改入口查找判别逻辑

这里唯一比较困惑的是:原本无中断的ADD是25(二进制11001),现在被ERET占用,看了一下控制存储器总共有28条指令,我就怀疑ADD的入口地址应该是28,如下图:

 

把所有引脚准备好,然后把表达式全部复制进来,生成的入口查找判别逻辑如下图:

然后修改一下微程序控制器中的入口查找逻辑:


第3步:增加ADD的微指令

似乎支持中断的微指令中并没有下址字段,而且红框里的内容着实令我感到疑惑,但我猜测黄色部分应该是中断相关的信号,P0~P2应该在ADD指令中用不到。

所以我猜测下面应该就是:

下面应该就是微指令的16进制

 第4步:修改ALU,但看了一下已经支持ADD,所以不必要修改。

以下是测试环节: 

运行老师给的程序,300行是冒泡排序从大到小的结果,310行应该是累加和37,不知道成功了没有,但应该是成功了。

 二、新增ADD指令:硬布线控制器(支持【中断】的单总结结构MIPS处理器)

硬布线控制器组合逻辑单元用于产生指令执行所需要的所有控制信号序列,

可能有同学会有疑惑:硬布线的状态机要怎么看?

如下两张图所示,一共有11个状态,从S0~S10,可以看到,lw、sw、beq信号

第1步:老规矩还是先修改指令译码器,增加ADD指令

第2步:修改状态机

第3步:修改硬布线控制器组合逻辑

第4步:修改硬布线控制器

三、分析“支持中断控制的单总线结构 MIPS 处理器(单级中断+硬布线控制器+5条指令)” 的电路原理

1、数据通路电路

2、中断逻辑电路

3、硬布线控制器电路

输入指令字,通过指令译码器生成不同的指令译码信号。指令译码信号通过状态机,生成次态,存入状态寄存器,然后将现态传入输出函数,输出Mif、Mcal、Mex、Mint、T1、T2、T3、T4等信号,然后集合到M&T隧道中。Mint、Mex、ERET、T1、T2传入中断控制信号,生成IntSignals和PCout、PCin隧道。将Mex、Mcal、Mif、BEQ、SW、LW、T1、T2、EQUAL等。硬布线控制器在数据通路电路中有三个输出分别是控制总线(ControlBus),中断控制信号(IntSignls),状态节拍信号(M&T),括号里对应的是控制器电路的输出引脚。

4、指令译码器电路

5、状态机电路

6、输出函数电路

     

7、中断控制信号产生电路

8、中断控制器电路

 IntR是用于生成中断请求信号,与开中断和关中断结合,生成中断请求。IntNo.用于输出最高优先级的中断源。CLK是时钟,Clr是用于开中断。key0~key3分别对应的是IRQ0到IRQ3,IR0W~IR3W分别对应IRQ0~IRQ3。EDU_TEST应该是一个人为设置的中断位,会被分解为EDU_INT0到EDU_INT3。原理就是:在中断优先编码器的左侧分别代表的是4个中断源。倘若有一个及以上的中断源产生中断信号,IntR就会是高电平,代表要对数据通路进行中断操作。IntNo.会输出最高优先级的中断源。译码器的输入是开中断信号和最高优先级的中断源,用于选择Clr0~Clr3其中一个开中断信号。