Skip to content

An implementation of 5-stages RISC-V CPU

Notifications You must be signed in to change notification settings

Jacky-0918/RV32I-CPU

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RISC-V 32I CPU

文件结构

├─Figures           # 存放数据通路图
│   Design-Figure.drawio
│   Design-Figure.png
│
├─Simulation        # 存放仿真文件及测试数据
│   ...
│   testBench.v     # 仿真文件
│
├─Source            # CPU源代码
│  ├─Cache          # 数据和指令cache
│  ├─CSR            # CSR有关部件
│  ├─ExMemSegReg    # 级间寄存器
│  ├─IdExSegReg
│  ├─IfIdSegReg
│  └─MemWbSegReg
│    ALU.v          
│    BranchDecision.v
│    ControllerDecoder.v
│    DataExtend.v
│    GeneralRegister.v
│    Hazard.v
│    ImmExtend.v
│    NPCGenerator.v
│    Parameters.v
│    PC.v
│    RV32ICore.v
│
└─TestTools         #测试数据生成工具
    ├─ExampleCode   #示例代码
    └─Utils         #转换工具

CPU基本情况

本仓库实现了一个基于RISC-V 32I指令集的五段流水线CPU, 支持的指令有:

SLLI、SRLI、SRAI、ADD、SUB、SLL、SLT、SLTU、XOR、SRL、SRA、OR、AND、ADDI、SLTI、SLTIU、XORI、ORI、ANDI、

LUI、AUIPC、JALR、JAL、

LB、LH、LW、LBU、LHU、

SB、SH、SW、

BEQ、BNE、BLT、BLTU、BGE、BGEU、

CSRRW、CSRRS、CSRRC、CSRRWI、CSRRSI、CSRRCI

RISC-V 32I的指令类型定义如下:


CPU数据通路如下:


仿真

Vivado开发为例, 新建工程, 将Source的代码导入, Simulation文件夹下的testBench.v作为仿真文件导入, 并将testBench.v设置为Simulation的Top文件。之后直接进行仿真即可, 仿真文件会自动将.inst.data的文件加载进Instruction CacheData Cache, 并开始执行。

示例如下图所示:


对于测试样例, 若运行正确, 则gp1.

testBench.v定义了四个宏:

  • DataCacheContentLoadPath: Data Cache的写入文件路径
  • InstCacheContentLoadPath: Instruction Cache的写入文件路径
  • DataCacheContentSavePath: Data Cache导出内容的存放路径
  • InstCacheContentSavePath: Instruction Cache导出内容的存放路径

请根据需要自行修改。

TestTools文件夹内包含.inst.data文件转换工具, 使用说明见文件夹内的README文档

About

An implementation of 5-stages RISC-V CPU

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Verilog 81.9%
  • Assembly 15.2%
  • C 1.5%
  • Makefile 1.4%