5年前拿到一块FPGA开发版,一直没去折腾它。最近闲下来把它当玩具开始把玩,那就先搞一个简单的RISC-V吧,把Linux点亮。有点重操旧业的感觉,作为老工程师,就喜欢各种穷折腾。
开源是个好东西,网上到处都是各种RISC-V软核,下载了一个RISC-V软核并带有SoC集成的工程,试着简单修改下处理器ID之类的,重新综合生成bitstream文件,然后下载到FPGA上,先把流程打通。
下载RISC-V工程
从https://github.com/eugene-tarassov/vivado-risc-v.git下载RISC-V工程,核心代码为Chisel语言编写,不是verilog
git clone https://github.com/eugene-tarassov/vivado-risc-v.git
cd vivado-risc-v
make apt-install
make update-submodules
处理器VENDOR ID /IMP ID修改
修改rocket-chip/src/main/scala/rocket/CSR.scala文件

安装AMD Vivado软件
先注册然后下载,并生成基础免费版本的license,用的阿里云g9i 8核32GB云实例,硬盘需要至少80GB,保险起见租了120GB的云盘。
安装在/tools/Xilinx目录下
综合生成bitstream文件
source /tools/Xilinx/2026.1/Vivado/settings64.sh
make JOBS=$(nproc) CONFIG=rocket64b1 BOARD=nexys-a7-100t bitstream
生成的bit文件为
vivado-risc-v/workspace/rocket64b1/vivado-nexys-a7-100t-riscv/nexys-a7-100t-riscv.runs/impl_1/riscv_wrapper.bit
烧写bit文件
openfpgaloader -b nexys_a7_100 -f riscv-nexys-a7-100t.bit
连接USB串口
screen -h 10000 /dev/tty.usbserial-210292B0F11C1 115200
对了,用的本地开发机为macbook
Linux启动很慢,得10几分钟才出控制台,进入Linux console后cat /proc/cpuinfo, lscpu可以看到处理器vendorid和impid分别为0x12345678, 0x20260801。为修改后的值,说明流程跑通了。
小结
由于用的是AMD Artix™ 7 FPGA系列,逻辑资源不是很大,只能放一个in-order,5级流水,标量RISC-V处理器核心Rocket。主频只有50MHz。如果要放超标量乱序的BOOM或者多核,得升级FPGA开发板了。