Coder Social home page Coder Social logo

mips-multi-cycle-cpu's Introduction

MIPS-Multi-Cycle-CPU

注意事项

  • 不支持异常
  • 采用有限状态机与逻辑电路相结合的方式构建控制模块,减少至11个状态
  • 数据存储均在时钟下降沿触发
  • 为防止险象的发生,在时钟上升沿进行状态的跳转

如何使用

test.txt中写入16进制指令序列,仿真mips_tb.v即可。

支持的指令

MIPS-C2={LB、LBU、LH、LHU、LW、SB、SH、SW、ADD、ADDU、SUB、SUBU、SLL、SRL、SRA、SLLV、SRLV、SRAV、AND、OR、XOR、NOR、SLT、SLTU、ADDI、ADDIU、ANDI、ORI、XORI、LUI、SLTI、SLTIU、BEQ、BNE、BLEZ、BGTZ、BLTZ、BGEZ、J、JAL、JALR、JR}

R-type={ADD、ADDU、SUB、SUBU、SLL、SRL、SRA、SLLV、SRLV、SRAV、AND、OR、XOR、NOR、SLT、SLTU}

I-type={ADDI、ADDIU、ANDI、ORI、XORI、LUI、SLTI、SLTIU}

Save={SB、SH、SW}

Load={LB、LBU、LH、LHU、LW}

Branch={BEQ、BNE、BLEZ、BGTZ、BLTZ、BGEZ}

Jump={J、JAL}

Jump Register={JALR、JR}

状态含义

状态 指令 执行内容
0 MIPS-C2 开始周期,无具体执行内容
1 MIPS-C2 取指令,并将其写入IR;
PC+4
2 MIPS-C2 译码,读取寄存器中的rs,rt备用;
计算b型指令跳转地址备用
3 R-type、I-type ALU执行运算,结果存入ALUout
4 R-type、I-type 将ALUot中的内容写回寄存器
5 Load&Save 数据内存寻址
6 Save 向数据内存写入数据
7 Load 从数据内存读取数据,并存入MDR
8 Load 将MDR中的数据写入寄存器中
9 Branch ALU判断是否满足跳转条件,若是则跳转
10 Jump 将target部分写入PC;JAL还需将PC写入$ra
11 Jump Register 将($rs)写入PC;JALR还需将PC写入$rd

状态的跳转规则

状态 指令 跳转至
0 MIPS-C2 1
1 MIPS-C2 2
2 MIPS-C2 3(R、I-type)、5(S&L)、9(branch)、
10(jump)、11(jump register)
3 R-type、I-type 4
4 R-type、I-type 1
5 Load&Save 6(save)、7(load)
6 Save 1
7 Load 8
8 Load 1
9 Branch 1
10 Jump 1
11 Jump Register 1

控制信号的含义

信号 信号的含义 信号内容
IRWr IR写入控制 0:不可写
1:可写
RFWr RF写入控制 0:不可写
1:可写
DMWr DM写入控制 0:不可写
1:可写
PCWrite PC写入控制 0:不可写
1:可写
PCWriteCond PC条件写入控制 0:不可写
1:可写(需同时满足跳转条件)
RegWAd 寄存器写入地址选择 0:rt部分
1:rd部分
2:立即数31
RegWDa 寄存器写入数据选择 0:ALU输出寄存器
1:数据内存输出
2:PC
PCSource PC写入数据选择 0:ALU直接输出
1:ALU输出寄存器
2:J型指令低26位
ALUOp ALU控制指令 详见alu_def.v
ALUSrcA ALU输入1数据选择 0:PC
1:寄存器输出
2:shamt
ALUSrcB ALU输入2数据选择 0:寄存器输出
1:立即数4
2:符号扩展
3:符号扩展左移两位
4:无符号扩展

各模块功能

模块 模块功能
ALU.v 运算单元
alu_def.v 运算单元的指令宏定义
B.v branch指令判断部分的逻辑处理
BE.v save指令数据内存操作码生成器
ctrl.v 控制单元
dm.v 数据内存
flopr.v 简单触发器(时钟下降沿触发)
im.v 指令内存
LHANDLE.v 数据内存读取附加处理模块
mips.v CPU整体控制
mips_tb.v 测试模块
mux.v 多路选择器
PC.v PC存储器
RF.v 寄存器
SE.v 符号扩展
UE.v 无符号扩展

mips-multi-cycle-cpu's People

Contributors

harboryuan avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.