本文作为SpinalHDL学习笔记第四十五篇,介绍SpinalHDL RiscV设计。
Note::本文仅记录在 SpinalHDL 中创造的第一代 RISC-V CPU。未记录 VexRiscV CPU,它是该CPU 的第二代,可在 此处 <https://github.com/SpinalHDL/VexRiscv> 获取,并提供更好的性能/面积/特性。
目录:
1.特性
2.基础 FPGA 项目
3.如何生成 CPU VHDL
4.调试
1.特性
RISC-V CPU
• 5 级流水线(获取解码执行 0 执行 1 回写)
• 多种分支预测模式:(禁用、静态或动态)
• 数据路径可在完全旁路和完全互锁之间进行参数化
扩展
• 一周期的乘法
• 34 个周期的除法
• 迭代移位器(N 次移位 -> N 个周期)
• 单周期移位器
• 中断控制器
• 调试模块(带有 JTAG 桥、 openOCD 端口和 GDB)
• 具有封装的突发内存接口的指令缓存,单向
• 具有清除/刷新整个缓存或特定地址的指令的数据缓存,单向
性能/面积(在 cyclone II 上)
• 小核 -> 846 LE, 0.6 DMIPS/Mhz
• 调试模块(无 JTAG) -> 240 LE
• JTAG Avalon 主控 -> 238 LE
• 带 MUL/DIV/全移位器/I$/中断/调试的大核 -> 2200 LE, 1.15 DMIPS/Mhz,至少 100Mhz(使用默认综合选项)
2.基础 FPGA 项目
可以在这里找到一个 DE1-SOC 项目,它将两个 CPU 实例与 MUL/DIV/全移位器/I$/中断/调试集成在一起:https://drive.google.com/drive/folders/0B-CqLXDTaMbKNkktb2k3T3lzcUk?usp=sharing CPU/JTAG/VGA IP 是预先生成的。 Quartus Prime: 15.1。
3.如何生成 CPU VHDL
警告: 最近版本的 SpinalHDL 中不存在该 Avalon 版本的 CPU。请考虑使用 VexRiscv 。
4.调试
你可以在这里找到 openOCD 分支:
https://github.com/Dolu1990/openocd_riscv
可以在此处找到示例目标配置文件:
https://github.com/Dolu1990/openocd_riscv/blob/riscv_spinal/tcl/target/riscv_spinal.cfg
然后就可以使用 RISCV GDB 了。