RiscV

警告

本页仅记录在SpinalHDL中创造的第一代RISC-V CPU。本页面未记录VexRiscV CPU,它是该CPU的第二代,可在 此处 <https://github.com/SpinalHDL/VexRiscv> 获取,并提供更好的性能/面积/特性。

特性

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(使用默认综合选项)

基础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。

如何生成CPU VHDL

警告

最近版本的SpinalHDL中不存在该Avalon版本的CPU。请考虑使用 VexRiscv

如何调试

你可以在这里找到openOCD分支:

https://github.com/Dolu1990/openocd_riscv

可以在此处找到示例目标配置文件:

https://github.com/Dolu1990/openocd_riscv/blob/riscv_spinal/tcl/target/riscv_spinal.cfg

然后就可以使用RISCV GDB了。

Todo

  • 文档

  • 通过将行命中条件向前移动到组合路径来优化指令/数据缓存FMax。

联系spinhdl@gmail.com了解更多信息