FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
登录
首页-所有问题-其他-正文

想用FPGA实现一个RISC-V CPU核作为毕设,但不知道从何下手,有哪些开源的软核和教程可以推荐?

Verilog练习生Verilog练习生
其他
6小时前
0
0
0
我是电子相关专业的本科生,想做一个有挑战性的FPGA毕业设计,决定做一款简易的RISC-V CPU。但网上资料太多太杂,不知道哪个开源软核(比如PicoRV32、VexRiscv)最适合初学者入门和修改。希望有经验的前辈能推荐一个文档齐全、结构清晰、易于在FPGA上综合和测试的RISC-V核,并给出一个大概的学习和实现路线图。
Verilog练习生

Verilog练习生

这家伙真懒,几个字都不愿写!
1600
分享:
使用Vivado进行FPGA开发时,如何利用Tcl脚本自动化实现设计流程(如编译、约束、报告分析),提升效率?上一篇
数字IC验证工程师,在工作中如何高效地分析和调试一个‘死锁’或者‘活锁’问题?有什么方法论或工具?下一篇
回答列表总数:9
  • 硅基探索者

    硅基探索者

    作为过来人,我推荐你先从PicoRV32入手。这个核非常精简,代码量小(就一个Verilog文件),文档和示例都比较全,特别适合理解CPU基本流水线和RISC-V指令集。你可以先下载源码,在Vivado或Quartus里建个工程,把核加进去,再配上简单的RAM和UART,就能在FPGA板子上跑起来。

    学习路线可以这样规划:第一步,先通读PicoRV32的README和源码注释,重点看CPU接口和状态机;第二步,用现成的测试程序(比如C程序编译成hex)加载到RAM里,用仿真看波形,理解指令执行过程;第三步,尝试修改或添加一条简单指令(比如ADDI),验证功能;第四步,可以尝试增加外设,比如GPIO或定时器。

    注意,PicoRV32性能不高,但作为毕设足够展示你的能力。网上有很多基于它的项目(比如在小脚丫FPGA上跑的),可以找找参考。关键是要动手,光看资料容易懵。

    3小时前
  • FPGA学号1

    FPGA学号1

    推荐VexRiscv,虽然比PicoRV32复杂点,但它用SpinalHDL(基于Scala)编写,可配置性极强,而且有大量现成的插件。你不需要懂Scala,直接用它生成的Verilog就行。GitHub上搜VexRiscv,找到Murax或Genesys2的示例项目,里面通常有完整的FPGA工程。

    路线图建议:先找个现成的VexRiscv SoC工程(比如针对Digilent Arty板子的),直接烧录跑通,感受下。然后重点研究CPU的流水线结构——VexRiscv是五级流水,文档里有详细图解。你可以尝试关掉某些优化(比如分支预测),对比性能变化。

    做毕设时,可以基于VexRiscv添加一个自定义协处理器,比如做简单的图像处理指令。这样既有深度又不至于太难。注意:VexRiscv的配置系统需要一点学习成本,但它的论坛(SpinalHDL社区)很活跃,问题基本都能找到答案。

    4小时前
  • 电子技术新人

    电子技术新人

    毕设做RISC-V CPU挺有挑战性的,但选对起点很重要。我当初用PicoRV32入门的,它代码量小(就一个Verilog文件),文档和示例都齐全,特别适合理解CPU基本流水线和总线接口。你可以先到GitHub搜PicoRV32,把源码下下来,用Verilator或Icarus Verilog做仿真,看每条指令是怎么执行的。然后找块FPGA开发板(比如国产的EG4S20那种便宜货就行),把PicoRV32综合进去,跑个简单的汇编程序,比如让LED闪烁。这样你就能建立起从仿真到硬件的完整流程。

    关键步骤:1. 安装仿真工具,编译PicoRV32的测试用例;2. 修改源码,比如加一条自定义指令(毕设亮点);3. 写个简单的SoC,挂上RAM和UART,用串口打印“Hello RISC-V”。注意避开坑:PicoRV32的内存接口是握手信号,初学者容易搞错时序,一定要看源码里的注释。另外,别一开始就追求高性能,先保证功能正确。

    4小时前
  • Verilog新手村

    Verilog新手村

    从“易于修改”角度,我推荐VexRiscv。它用SpinalHDL(基于Scala)编写,虽然要学新语言,但它的可配置性极高,通过配置文件就能开关流水线阶段、加硬件乘除法器等,适合毕设做差异化修改。

    路线图:1. 安装SpinalHDL环境(用SBT或Mill),把VexRiscv的Git仓库拉下来,先跑通生成Verilog的示例;2. 重点看它的配置文件(如src/main/scala/vexriscv/demo/GenSmallest.scala),理解如何调整参数生成不同核;3. 用生成的Verilog在FPGA上测试,建议用Digilent的Arty板(有官方支持),用OpenOCD调试。

    坑点:SpinalHDL有学习曲线,但掌握后改核效率比Verilog高。如果时间紧,可以先用它生成一个最小核,再基于Verilog修改。文档看官方Wiki和SpinalHDL电子书。

    4小时前
  • 电子系小白

    电子系小白

    先抓痛点:资料杂、不知选哪个核、缺路线图。推荐PicoRV32,因为它代码极简(就一个Verilog文件),文档和实例丰富,特别适合入门理解流水线原理。

    步骤:1. 去GitHub搜PicoRV32,把源码和文档下到本地,先用Icarus或Verilator仿真,跑通自带的测试程序;2. 重点看核心的fetch/decode/execute几个模块,对照RISC-V指令集手册(网上有中文版)理解每条指令如何实现;3. 在FPGA上部署:选个简单开发板(比如Basys3),写个顶层模块连接PicoRV32和内存(用Block RAM),烧录后通过UART打印“Hello World”验证。

    注意事项:别一开始就改流水线,先确保原核能跑起来。遇到仿真问题,多用$display打印调试。扩展功能可以后续加自定义指令或外设。

    4小时前
  • FPGA探索者

    FPGA探索者

    做RISC-V CPU毕设,关键是要选一个社区活跃、工具链完善的开源核,这样调试时容易找到帮助。除了PicoRV32,你也可以看看VexRiscv,它用SpinalHDL(基于Scala)写的,虽然语言门槛稍高,但配置性极强,文档也很全,而且性能更好,支持流水线。如果你是Verilog/VHDL初学者,可能PicoRV32更直接;但如果你愿意学一点新东西,VexRiscv生成的代码结构清晰,模块化好,方便你修改和添加功能(比如加中断、缓存)。教程方面,GitHub上的VexRiscv仓库有详细说明,还有针对不同FPGA板的示例项目。另外,可以关注“RISC-V国际”官网和国内“芯来科技”等公司的开源资料,它们提供Nuclei内核的简化版(比如蜂鸟E203),文档和实验指南非常系统,适合学生。实现路线:先确定开发板(比如用Digilent的板子,社区支持多),然后选一个核,跟着教程搭建环境(包括RISC-V工具链、仿真器、FPGA综合工具),从跑通一个简单程序开始,逐步添加自定义模块。注意避坑:仿真一定要充分,尤其是数据冒险和控制冒险;FPGA综合时注意时序约束和资源使用。

    4小时前
  • 硅农预备役2024

    硅农预备役2024

    同学你好,毕设选RISC-V CPU挺有挑战性的,但做出来会很有成就感。我当初也是从PicoRV32入手的,强烈推荐它。这个核非常精简,代码量小(就一个Verilog文件),文档和示例都齐全,特别适合理解CPU基本流水线和总线的概念。你可以在GitHub上搜PicoRV32,作者Clifford Wolf提供了详细的README,包括如何用Yosys综合、在FPGA上跑测试程序。建议你先在电脑上用Icarus Verilog这类仿真工具跑通提供的测试用例,理解每条指令是怎么执行的,然后再移植到你的FPGA开发板上(比如常用的Basys3、Nexys4都行)。路线图的话,可以这样:1. 下载源码,用仿真看波形,对照RISC-V手册理解指令;2. 尝试修改,比如加一条简单的自定义指令(比如加法变乘法);3. 接上内存和外设(UART、GPIO),跑个Hello World。注意,PicoRV32是单周期的,性能不高但足够毕设展示,重点是把流程走通。网上也有不少博客记录基于它的实验,搜“PicoRV32 FPGA”就能找到。

    4小时前
  • Verilog代码新手

    Verilog代码新手

    做RISC-V CPU毕设,我推荐VexRiscv。虽然它代码量比PicoRV32大,但它的架构更模块化、可配置性极强(通过SpinalHDL生成),而且性能好很多,对你理解流水线、冒险处理等现代CPU概念更有帮助。如果你愿意花点时间学习SpinalHDL(一种基于Scala的硬件构建语言),它会让你事半功倍。路线可以这样:首先,去GitHub搜‘VexRiscv’,把仓库克隆下来。重点看doc和src/main/scala里的代码结构。然后,安装Java和SBT(Scala构建工具),按照教程生成一个最简单的RV32I核的Verilog代码。这一步可能有点折腾,但一旦生成成功,你就有了一个纯净的、可综合的核。接着,用生成的Verilog在FPGA上进行综合(比如用Vivado或Quartus),连接简单的内存和UART,跑一个‘Hello World’程序。VexRiscv社区通常有现成的SoC例子(比如Murax SoC),你可以直接参考。整个过程中,建议你边做边写文档,记录下配置参数、遇到的问题和解决方案,这本身就是毕设的重要部分。选择建议:如果你时间紧、只想快速出一个能工作的核,选PicoRV32;如果你有三个月以上时间,想深入并做出一个有点水平的CPU,强烈建议挑战VexRiscv。

    6小时前
  • 数字电路入门生

    数字电路入门生

    同学你好,毕设选RISC-V CPU很有挑战性也很有意义。我当初做的时候也纠结过选哪个核,最后选了PicoRV32,因为它确实对新手最友好。它的代码非常精简(就一个Verilog文件),文档和例子也全,你可以在GitHub上直接搜到。建议你按这个路线走:第一步,先去PicoRV32的GitHub页面,把代码和文档下载下来,重点看README和那个简单的PDF手册,了解基本接口和配置。第二步,在电脑上用Verilog仿真工具(比如iverilog+GTKWave)跑一下它自带的测试,先别急着上板,确保你理解每个时钟周期里它在做什么。第三步,找一个有现成例程的FPGA开发板(比如小脚丫STEP CYC10或者黑金AX301/AX401),把核烧进去,跑通最简单的LED闪烁程序。这时候你就算成功搭建了最小系统。第四步,尝试修改,比如增加一个自定义指令,或者把总线接口改成你熟悉的Wishbone/AXI。注意,一开始千万别追求性能或功能完整,先保证能运行起来。常见坑是仿真过了但上板没现象,多半是时钟或复位问题,记得用板载的时钟和按键复位。祝你顺利!

    6小时前
我要回答answer.notCanPublish
回答被采纳奖励100个积分
FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
请先登录