非 Zynq FPGA 上的 Rocket 芯片

Rocket Chip on Non-Zynq FPGAs

我想将 rocket 芯片移植到非 Zynq FPGA(altera Stratix V),该板不包含用于 运行 riscv-fesvr 的 ARM 内核。我怎样才能开始端口?另外,有没有人试过 运行 火箭芯片在这样的板上?我可以为此指出一些资源吗?

这主要是接口问题,因为 Rocket Chip 在内部不使用任何特定于 Zynq 的东西。如果此接口正确完成,您应该不需要更改 pk/linux 或 Rocket Chip 本身。您需要为目标 FPGA 包装 Rocket Chip 并与前端服务器 (fesvr) 连接。

为了包装 Rocket Chip,我会查看它期望的顶层 IO (RocketChip.scala), which most importantly includes HostIO (for HTIF) and MemIO (for DRAM). For additional information on those interfaces, I would consult the slides from the first workshop. Our current wrapper (rocketchip_wrapper.v) 通过 AXI 将这些接口多路复用到 运行ning fesvr 的主机 ARM 内核。

将您的提案发送到 运行ning fesvr 的邮件列表并通过 AXI 与它通信可以工作。这将需要修改 (fesvr-zedboard.cc) 以匹配 NIOS 提供给软件的 AXI 接口。这种方法可能需要最少的新开发,但软核会消耗 FPGA 资源并且速度可能较慢。

实现此目的的另一种方法是 运行 通过以太网连接到电路板的 PC 上的前端服务器。您需要在 Rocket Chip 的 MemIO 和板载 DRAM 之间架起一座桥梁。您还需要 运行 以太网上的 HTIF,这将需要 HostIO 和电路板以太网之间的另一个桥接 MAC。多年前 fesvr 支持这个 (fesvr-eth.cc),但该代码没有得到维护,几乎肯定需要更新。

这一切都假设您想要 运行 处理器以一种束缚的方式。要让它自启动需要做更多的工作。有一个平台规范可以对此进行标准化,但在那之前你需要自己设计或继续使用 Rocket Chip 系留。

看看在便携式VHDL顶层中使用Rocket-chip核心的例子。该项目与 Le​​on3 的结构非常相似,可能很容易移植到任何 FPGA 板上。参见:

https://github.com/sergeykhbr/riscv_vhdl

我已经在非 Zynq FPGA 上移植了单核 Rocket 芯片(板:ML605 和 KC705)并且我有兴趣将它移植到其他目标上(参见上面的消息'https://github.com/sergeykhbr/riscv_vhdl') .因此,如果您想使用建议的 vhdl 设计并准备好进行协作,我想我可以帮助您,并将 Quartus 项目文件添加到存储库中。

此外,还有可能重新使用 'grlib' 中实施的 GPL 许可外围设备:http://www.gaisler.com/index.php/downloads/leongrlib。 例如 MAC、SD-controller 等等。