杭电计算机组成实验8(八)实现R型指令的CPU设计实验

已开源在GitHub上,欢迎各位大佬给Star

仓库地址
网站

实验内容

1. 掌握MIPS R型指令的数据通路设计,掌握指令流和数据流的控制方法
2. 掌握完整的单周期CPU顶层模块的设计方法
3. 实现MIPS R型指令的功能

解决方法

1. 分析MIPS R型指令的特点,OP均为000000b,可作为判断R型指令的依据
2. 两个源操作数分别在rs和rt字段所指定的寄存器中,而目的操作数则是在rd字段所指定的寄存器
3. 分析数据通路是从指令存储器取出的指令经过初级译码,将分解出的源寄存器rs、rt直接与寄存器堆的两个读端口A和B的寄存器地址连接,而将目的寄存器rd字段与寄存器堆的写端口地址相连,寄存器读出的A口数据和B口数据则直接连接到ALU的输入端A和B,ALU计算后的结果则送入寄存器堆的写数据端口
4. 分析时序,首先是取指令,然后进行指令译码,最后将运算结果送到目的寄存器,PC自增,指向下一条指令
5. 实验八中除译码模块,其他模块都已经前几个实验中完成,只需要将其连接,然后在译码模块中通过OP判断是否为R型,且将funct翻译成ALU的控制信号ALU_OP以及指定ALU的运算功能,由于此译码模块较为简单,我就在顶层模块实现了
6. 具体用到的实验是多功能ALU设计实验寄存器堆设计实验取指令与指令译码实验
7. 代码实现:

顶层模块

module CPU(clk,rst,op_code,funct,rs_addr,rt_addr,rd_addr,shamt,OF,ZF,F,ALU_OP,Inst_code);
input clk,rst;
output [31:0]Inst_code;
output [5:0]op_code,funct;
output [4:0]rs_addr,rt_addr,rd_addr,shamt;
output [31:0]F;
output OF,ZF;
output reg [2:0]ALU_OP;
reg Write_Reg;
wire [31:0]R_Data_A,R_Data_B;
PC pc1(clk,rst,Inst_code);
assign op_code = Inst_code[31:26];
assign rs_addr = Inst_code[25:21];
assign rt_addr = Inst_code[20:16];
assign rd_addr = Inst_code[15:11];
assign shamt = Inst_code[10:6];
assign funct = Inst_code[5:0];
Fourth_experiment_first F1(rs_addr,rt_addr,Write_Reg,R_Data_A,R_Data_B,rst,~clk,rd_addr,F);
Third_experiment_first T1(
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XdpCs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值