/MIPS_pipeline

Primary LanguageSystemVerilog

MIPS五段流水线设计

文件介绍

define.sv: 宏定义
pc_new.sv:时钟更新模块
IF_ID.sv: 取指-译码流水切割段
ID_EX.sv: 译码-执行流水切割
EX_MEM.sv: 执行-访存流水切割
MEM_WB.sv: 访存-写回流水切割
memory_read.sv : 代码文件
control.sv: 控制信号生成
ALUcon.sv : 生成ALU控制信号
alu.sv : ALU运算
register_file.sv : 寄存器文件
select_signal : 旁路控制单元,解决数据冒险
memory_data.sv : 存储器
top.sv : 顶层模块
TestBench.sv : 测试
SimSrcGen.sv : 测试时钟、复位信号生成

支持指令

R型:

SLL SRA SRL ADD ADDU SUB AND OR SLT SLTU JR

分支跳转指令:

J BNE BEQ JAL

I型指令:

ADDI ANDI ADDIU ALTI ORI LW SW

初步测试

用下面代码进行测试

ADDI $18, $0, #8

ADDI $16, $0, #1

Label:

ADD $20, $16,$0

JAL f

BNE $18, $16,Label

J exit

f:

SW $16, 4($0)

LW $17, 4($0)

ADD $17,$17,$17

ADD $16,$17, $0

JR $ra

exit:

ADD $21, $20, $0

最终结果应该是

$16: 0X00000008 $17: 0X00000008 $18: 0X00000008 $20: 0X00000004 $21: 0X00000004