8指令CPU设计
设计8指令CPU执行冒泡排序汇编程序⭐
8指令CPU设计
单周期硬布线控制器
设计指令译码逻辑
首先从OpCode
和FUNCT
中提取选择的指令
根据表格中的OpCode
和FUNCT
的值来填写上面指令译码逻辑
首先对OpCode
进行分类
OpCode |
0 | 4 | 5 | 8 | 35 | 43 |
---|---|---|---|---|---|---|
指令 | ADD & SLT & SYSCALL | BEQ | BNE | ADDI | LW | SW |
填入对应的值
随后设计OpCode=0x00
时FUNCT
的逻辑,根据上面表格可以使用与门和比较器来实现。
其中的R_TYPE
引脚为除了SysCall
之外的R类型指令,所以其逻辑为(ADD^SLT) & ~SysCall
所以整体的指令译码逻辑为
ALU控制器逻辑
首先观察需要用到ALU_OP
控制的指令,一共有五个ADD
ADDI
LW
SW
和SLT
。其中前面四个进行加法运算ALU_OP = 5
而SLT进行比较运算ALU_OP = 11
,所以可以不使用给定的OP
和FUNC
隧道引脚,重新建立一个SLT隧道用多路选择器来选择ALU_OP
的值。
或者使用比较器和多路选择器也可以分离出SLT指令实现
机器输出信号的控制
根据各个控制信号产生的逻辑连接电路
最后,我连好的整个电路如下图所示