Chinaunix首页 | 论坛 | 博客
  • 博客访问: 45245
  • 博文数量: 6
  • 博客积分: 705
  • 博客等级: 中士
  • 技术积分: 65
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-16 08:47
文章分类

全部博文(6)

文章存档

2021年(1)

2013年(4)

2010年(1)

分类: 其他平台

2021-11-07 07:39:14

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的主接口,很容易集成到使用AXI4总线的系统中
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)
直接跳转指令,jal 3 3
寄存器和立即数运算指令 3 3
寄存器和寄存器运算指令 3 4
分支指令 3 4
存储加载 5 5
存储写入 5 6
跳转指令jalr 6 6
移位操作 4-14 4-15
     

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

后续分析PicoRV32源码。

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

Claire Wolf 主页 PicoRV32 笔记 01 - jjinl的个人页面 - OSCHINA https://my.oschina.net/jjinl/blog/5283820

阅读(1033) | 评论(0) | 转发(0) |
0

上一篇:2013-01-09

下一篇:没有了

给主人留下些什么吧!~~