杭电计算机组成实验10(十)实现R-I-J型指令的CPU设计实验

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

仓库地址
网站

实验内容

1. 掌握MIPS R型、I型和J型指令的综合数据通路设计,掌握各种转移类指令的控制流和指令流的多路选通控制方法
2. 掌握J型、I型和R型转移指令的指令格式和寻址方式,学习转移地址的产生方法,掌握无条件转移指令和条件转移指令的实现方法
3. 编程实现MIPS的部分J型、I型和R型转移指令的功能

解决方法

1. 分析MIPS J型指令的特点,由6位OP字段和26位的address字段构成
2. 分析转移指令的数据通路,转移地址的产生有三种方式,转移地址产生后,要送入PC,才能完成跳转
3. R型指令还添加了一条无条件跳转指令,要在原来的PC模块判断R型指令的地方进行修改,不能在I型指令下判断,这样会产生冲突
4. 对于条件转移指令beq和bne要使用ALU做减法,判断是否全为零,也就是用ZF判断是否转移
5. J型指令可以接着I型指令的case结构写下来,与J型case结构无冲突
6. 由于实验九和实验十想法十分接近,主要是控制信号的改变,及其译码模块的改变
7. 涉及实验: 具体用到的实验是多功能ALU设计实验寄存器堆设计实验取指令与指令译码实验
8. 代码展示

顶层模块

module CPU(clk,rst,OF,ZF,F,ALU_OP,M_R_Data,w_r_s,imm_s,rt_imm_s,Mem_Write,Write_Reg,PC,PC_s,clk_M,R_Data_B,Inst_code);
input clk,rst,clk_M;
output [31:0]Inst_code;
wire [5:0]op_code,funct;
wire [4:0]rs_addr,rt_addr,rd_addr,shamt;
output [31:0]F;
output OF,ZF;
output [31:0]M_R_Data;
output [2:0]ALU_OP;
wire [31:0]Mem_Addr;
wire [4:0]W_Addr;
output imm_s,rt_imm_s,Mem_Write,Write_Reg;
output [1:0]w_r_s;
wire [31:0]imm_data;
wire [31:0]R_Data_A;
output [31:0]R_Data_B;
wire [15:0]imm;
wire [31:0]ALU_B;
wire [31:0]W_Data;
output [1:0]PC_s;
wire [25:0]address;
wire [1:0]wr_data_s;
wire [31:0]PC_new;
output [31:0]PC;
PC pc1(clk,rst,Inst_code,PC_s,R_Data_A,address,PC,imm_data,PC_new);
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];
assign imm = Inst_code[15:0];
assign address = Inst_code[25:0];
OP_Func op(op_code,funct,Write_Reg,ALU_OP,w_r_s,imm_s,rt_imm_s,Mem_Write,wr_data_s,PC_s,ZF);
assign W_Addr = (w_r_s[1])?5'b11111:((w_r_s[0])?rt_addr:rd_addr);
assign imm_data = (imm_s)?{
   {
   16{
   imm[15]}},imm}:
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

XdpCs

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

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

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

打赏作者

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

抵扣说明:

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

余额充值