Final Project for Application and Design of Digital Logics (ADDL) Challenge Course @ 2024-2025 Spring, Glasgow College, UESTC.
本项目实现了一个基本的 RISC-V 架构 CPU,支持部分 RV32I 指令集,包含完整的指令解码、执行和内存访问功能;同时实现了一个适配该 CPU 的汇编器,支持将 RISC-V 汇编代码转换为适配 IP 核和仿真用途的机器码。
项目在 Verilog 部分使用 Visual Studio Code + DigitalIDE 插件,支持 Icarus Verilog 仿真,带有 Xilinx IP 核的模块使用 Vivado 进行仿真测试。汇编器部分使用 Rust 实现。
ADDL_RISCV_CPU/
├── readme.md # 项目说明文件(本文件)
├── .vscode/ # VS Code 配置目录
│ └── property.json # DigitalIDE 属性配置文件
├── prj/ # 项目构建目录 (项目自动生成)
│ └── ... # 自动生成的文件
├── utils/ # 项目相关工具
│ └── ... # 其他工具文件
└── user/ # 用户代码
├── data/ # 数据文件
├── ip/ # IP 核文件
├── sim/ # 仿真文件
│ ├── sim.md # 测试说明文档
│ └── ... # 其他测试文件
└── src/ # 源代码
├── src.md # 源代码说明文档
└── ... # 源代码文件
项目构建相关文件:
- icarus/: Icarus Verilog 仿真器构建文件
- netlist/: 网表生成相关文件,包含综合脚本和日志
用户代码和相关资源:
user/data/: 存放数据文件user/ip/: 存放 IP 核文件user/sim/: 存放仿真相关文件user/src/: 存放源代码文件
更具体的文件说明见各个目录下对应的 markdown 文件
存放项目相关的工具文件,具体而言是一个适配了项目要求的 RV32I 指令集的汇编器,支持将简单的 RISC-V 汇编代码转换为机器码,格式可选为 hex 或 coe。其中, utils/assember-rs 是汇编器的具体代码实现,utils/asm-programs 目录下包含一些用 RV32I 汇编语言编写的示例程序。
更具体的文件说明见 README.md。