- 分析指令,确定需求
- 选择组件
- 连接组件,建立数据通路
- 分析指令实现,确定控制信号
步骤一:分析指令,确定需求
分析指令格式
需求1 存放指令的存储器,可读,地址和数据均为32位;
需求2 存放指令地址的32位寄存器
分析指令操作
需求3 一组存放数据的32位通用寄存器
需求4 同时读取寄存器的内容(rd
或者rt
)
需求5 改写一个寄存器的内容(rd
或者rt
)
需求6 提供加、减、逻辑或等三种功能的运算器,运算的操作数可以是寄存器或者立即数
需求7 将16位立即数零扩展到32位
步骤二:选择组件
- 组件1 算术逻辑单元
运算类型:加、减、或等
操作数:两个32位数,来自寄存器或者拓展后的立即数
完成需求:6 - 组件2 立即数扩展部件
功能:将1个16位的数扩展为32位数
拓展方式:零扩展
完成需求:7 - 组件3 程序计数器
类型:32位的寄存器
运算:支持两种加法,即加4或加一个立即数
完成需求:2 - 组件4 寄存器堆
内部构成:32个32位宽的寄存器
运算:支持读操作(rs和rt),支持写操作(rd或者rt)
完成需求:3+4+5 - 组件5 存储器
类型:指令存储器
运算:只读
操作数:地址和数据均为32位
完成需求:1
步骤三:建立数据通路
addu rd, rs, rt
步骤1 从指令存储器中取回指令:MEM[PC]
步骤2 执行指令的操作:R[rd]=R[rs]+R[rd]
步骤3 计算下一条指令的地址:PC=PC+4
步骤四: 确定控制信号
步骤1 确定取指令的控制信号
步骤2 确定加法指令操作的控制信号
步骤3 确定下一条指令计算的控制信号