当前位置: 首页 > 工具软件 > PicoRV32 > 使用案例 >

PicoRV32 笔记 01

太叔超英
2023-12-01

PicoRV32是一个RISC-V的IMC实现,可以配置为RV32E,RV32I, RV32IM,RV32IMC,并包含一个内置的中断控制器。

PicoRV32是一个开源的RISC-V的软核,他遵循ISC的许可证,ISC许可证类似于MIT许可证

RV32E:包含16个寄存器

RV32I:RISC-V基础指令集

RV32IM:基础指令集+乘法指令集

RV32IMC:基础指令集+乘法指令集+压缩指令集

1.PicoRV32在xilinx的7系列FPGA上能达到很小的面积,大约(700-2000)lut,因为xilinx的7系列FPGA都是6输入LUT,一个LUT可以实现更大的的组合逻辑,PicoRV32中有大量的组合逻辑,使用6输入lut更节省资源,同样spartan6也是6输入。

2.在xilinx的7系列上,可以实现250M-450M的fmax的极限频率。

3.可选择原生mem接口或者axi4-lite的接口

4.可通过选项配置,禁用x16-x31寄存器

5.可以通过配置选项选择:单口或者双口RAM来实现CPU的寄存器。双口RAM实现寄存器有更好的性能。

6.PicoRV32源码中有picorv32接口,picorv32_axi接口, picorv32_wb接口

   

picorv32接口是一个原生的存储接口,接口简单易用
picorv32_axi提供一个axi4-lite的主接口,很容易集成到使用AXI总线的系统中
picorv32_wb提供了一个Wishbone总线的主接口
picorv32_axi_apapter提供一个桥,原生存储接口到AXI4总线的转接桥

7.可选的IRQ控制器可以捕获外部事件。

8.可选的PCPI接口,是一个协处理器接口,他可以实现一些非跳转的指令。picorv32代码中通过pcpi接口实现了M扩展,实现标准的MUL[H[SU|U]]和DIV[U]/REM[U]指令

指令周期

在使用双口RAM实现CPU寄存器,并且一个时钟访问存储器的情况下,平均指令周期CPI为4,下表列出对应指令周期

指令名称平均指令周期(双口RAM)平均指令周期(单口RAM)
直接跳转指令,jal33
寄存器和立即数运算指令33
寄存器和寄存器运算指令34
分支指令34
存储加载55
存储写入56
跳转指令jalr66
移位操作4-144-15

由上表可以看出,当原操作数2为寄存器时候,单口ram实现的寄存器需要两个时钟周期,双口RAM只需要一个时钟周期即可取出操作数。

后续分析PicoRV32源码。

PicoRV32作者为 Claire Wolf ,非常厉害,编写综合器Yosys,后续看PicoRV32代码就会感叹,编写综合器的牛人写的verilog太博大精深...

Claire Wolf 主页 http://www.clifford.at/

 类似资料: