8指令CPU设计

设计8指令CPU执行冒泡排序汇编程序

8指令CPU设计

单周期硬布线控制器

设计指令译码逻辑

image-20220501012729107

首先从OpCodeFUNCT中提取选择的指令

img

根据表格中的OpCodeFUNCT的值来填写上面指令译码逻辑

首先对OpCode进行分类

OpCode 0 4 5 8 35 43
指令 ADD & SLT & SYSCALL BEQ BNE ADDI LW SW

填入对应的值

image-20220501013631417

随后设计OpCode=0x00FUNCT的逻辑,根据上面表格可以使用与门和比较器来实现。

image-20220501014446968

其中的R_TYPE引脚为除了SysCall之外的R类型指令,所以其逻辑为(ADD^SLT) & ~SysCall

image-20220501014814608

所以整体的指令译码逻辑为

image-20220501014853472

ALU控制器逻辑

首先观察需要用到ALU_OP控制的指令,一共有五个ADD ADDI LW SWSLT。其中前面四个进行加法运算ALU_OP = 5而SLT进行比较运算ALU_OP = 11,所以可以不使用给定的OPFUNC隧道引脚,重新建立一个SLT隧道用多路选择器来选择ALU_OP的值。

img

或者使用比较器和多路选择器也可以分离出SLT指令实现

机器输出信号的控制

img

image-20220501104727455

根据各个控制信号产生的逻辑连接电路

image-20220501105122410

最后,我连好的整个电路如下图所示

image-20220501105251275

连接数据通路

image-20220501105717653