一个基于RISC-V指令集架构的CPU设计项目,包含单周期和流水线两种实现。
特别感谢:xuanhao44 的项目包含的单周期cpu数据通路图以及流水线cpu数据通路图。
本项目实现了一个简化的RISC-V CPU,支持基本的RISC-V指令集。项目包含两个主要版本:
- 单周期版本 (
single/): 简单的单周期CPU实现 - 流水线版本 (
pipeline/): 五级流水线CPU实现,包含数据前递和冒险检测,控制冒险使用简单的流水线暂停
miniRV_CPU/
├── readme.md
├── single/ # 单周期CPU实现
│ ├── ALU.v # 算术逻辑单元
│ ├── Bridge.v # 总线桥接模块
│ ├── CONTROL.v # 控制单元
│ ├── defines.vh # 宏定义文件
│ ├── DIG.v # 数码管显示模块
│ ├── EX.v # 执行阶段模块
│ ├── ID.v # 译码阶段模块
│ ├── IF.v # 取指阶段模块
│ ├── LED.v # LED控制模块
│ ├── miniRV_SoC.v # 顶层模块
│ ├── myCPU.v # CPU顶层模块
│ ├── NPC.v # 下一PC计算模块
│ ├── PC.v # 程序计数器
│ ├── RF.v # 寄存器堆
│ ├── SEXT.v # 符号扩展模块
│ └── timer.v # 定时器模块
└── pipeline/ # 流水线CPU实现
├── ALU_MUX_A.v # ALU A输入多路选择器
├── ALU_MUX.v # ALU B多路选择器
├── ALU.v # 算术逻辑单元
├── Bridge.v # 总线桥接模块
├── CONTROL.v # 控制单元
├── defines.vh # 宏定义文件
├── DIG.v # 数码管显示模块
├── DRAM_MUX.v # 内存数据多路选择器
├── EX.v # 执行阶段模块(不需要)
├── HAZARD.v # 冒险检测单元
├── ID.v # 译码阶段模块(不需要)
├── IF.v # 取指阶段模块(不需要)
├── LED.v # LED控制模块
├── miniRV_SoC.v # 顶层模块
├── myCPU.v # CPU顶层模块
├── NPC_JUMP.v # 跳转NPC计算模块
├── NPC.v # 下一PC计算模块
├── PC.v # 程序计数器
├── REG_EX_MEM.v # EX/MEM流水线寄存器
├── REG_ID_EX.v # ID/EX流水线寄存器
├── REG_IF_ID.v # IF/ID流水线寄存器
├── REG_MEM_WB.v # MEM/WB流水线寄存器
├── RF_MUX.v # 寄存器堆写回多路选择器
├── RF.v # 寄存器堆
├── SEXT.v # 符号扩展模块
└── timer.v # 定时器模块
- 算术运算指令: ADD, ADDI, SUB, LUI, AUIPC
- 逻辑运算指令: AND, ANDI, OR, ORI, XOR, XORI
- 移位运算指令: SLL, SLLI, SRL, SRLI, SRA, SRAI
- 加载存储指令: LW, SW
- 分支跳转指令: BEQ, BNE, BLT, BGE, BLTU, BGEU, JAL, JALR
- 比较指令: SLT, SLTI, SLTU, SLTIU
- 五级流水线:IF → ID → EX → MEM → WB
- 数据前递机制
- 冒险检测和处理 (
HAZARD) - 流水线寄存器同步
Bridge: 连接CPU和外设的总线桥miniRV_SoC: chip 系统,集成CPU、内存和外设
- 模块化设计: 清晰的模块划分,便于理解和维护
- 完整的外设支持: 包含常用的I/O外设接口
- 调试接口: 支持RUN_TRACE模式进行调试
- 可配置性: 通过宏定义支持不同配置
使用Vivado或其他Verilog仿真工具:
- 选择对应版本(single或pipeline)
- 将所有.v文件添加到项目中
- 设置顶层模块为
miniRV_SoC - 进行综合和实现
在 defines.vh 中定义 RUN_TRACE 宏以启用调试功能:
`define RUN_TRACE- 指令存储器 (IROM): 程序代码存储
- 数据存储器 (DRAM): 数据存储
- 外设地址空间:
- 数码管:
0xFFFF_F000 - LED:
0xFFFF_F060 - 开关:
0xFFFF_F070 - 按钮:
0xFFFF_F078 - 定时器:
0xFFFF_F020
- 数码管:
项目仓库: https://github.com/xuanhao44/HITSZ-miniRVCPU
本项目遵循 GPL 开源许可证。
