FPGA IO System
基于香山的 FPGA 开源IO系统构建指引
基本步骤 Steps
编译香山南湖RTL(如果已在最小系统里生成,可跳过)
(1) 主分支(昆明湖架构)在持续开发中,南湖架构的流片版本设计在 nanhu 分支,其适配 FPGA 环境的分支在 nanhu-clockdiv2
注意:
因为 FPGA 代码和仿真代码不是同一套,如果使用同一个 XiangShan 仓库,需要
rm -rf build
删除已有输出文件双核南湖代码根据FPGA资源容量做了相应的裁剪,目前双核以09d2a32142c64fca898e17c0b943e61ddc331958提交进行FPGA验证。
(2) 从GitHub上拉取仓库
git clone https://github.com/OpenXiangShan/XiangShan
cd XiangShan
export NOOP_HOME=$(pwd)
git checkout 09d2a32142c64fca898e17c0b943e61ddc331958
make init
make clean
make verilog NUM_CORES=2 # Dual-Core XiangShan Nanhu
(3) 对生成好后的代码进行些修改,让 Vivado 在例化时调用 ultra ram 的资源。例如:将array_开头的文件中,声明位宽64bit的深度大于1024的ram,强制vivado使用ultra ram来例化,减少bram的使用
修改 array_16_ext.v
:
拷贝 Vivado 相关脚本,生成 Vivado 项目
# prepare the scripts
git clone https://github.com/OpenXiangShan/env-scripts.git
cd xs_nanhu_fpga
make update_core_flist CORE_DIR=$NOOP_HOME/build
make nanhu CORE_DIR=$NOOP_HOME/build
修改宏定义,使能PCIe
生成bit
打开vivado,执行Generate Bitstream
或者:
# generate the FPGA bitstream
make bitstream CORE_DIR=$NOOP_HOME/build
注意:生成时间较长,根据机器性能不同,需要花费 12~18h 的时间完成 bit 的生成
FPGA环境准备(以S2C平台为例)
S2C FPGA验证平台,按照下图进行连接设备
至少需要包含:
- DDR4内存条
- P-PGM-x8PCIERCx2B PCIe转接子卡
- R7-240 AMD GPU(见下图)
- PCIEx1转4口USB3.0扩展卡
- USB转RS232串口电缆
- 32G U盘(插在4上)
- USB键盘鼠标(插在4上)
- 最高支持1080P的显示器(更高分辨率会导致系统异常)
USB转RJ45可以插在4上,提供网络通信功能(内核有对应型号的驱动,非必须)
软件准备
系统U盘
阿里云盘链接:https://www.aliyundrive.com/s/7io98dZ4pBN
提取码: j19g
U盘文件系统
下载文件为boot.exe
的7zip自解压包,解压后使用ubuntu的PC,使用dd命令将img文件写入到U盘
例如:
其中of和if指向的文件名分别是img路径和U盘的设备名
dd if=boot.img of=/dev/sda
启动的txt文件
参考该说明生成对应的txt文件,https://xiangshan-doc.readthedocs.io/zh-cn/latest/integration/docker/
其中,pk分支切换到2RC上,其余可以保持不变
git clone git@github.com:openxiangshan/riscv-pk.git -b 2RC
我们也提供编译好的版本:data.txt (下载zip文件,然后解压成txt)
下载测试
-tclargs
之后的第一个路径 <vivado_build_folder>
为存放 Vivado 所生成的 bit 及 ltx 文件的位置
vivado -mode batch -source ./onboard-ai1-119.tcl -tclargs <vivado_build_folder> ./data.txt
连接串口,115200, N, 8, 1
输入用户名、密码(如需要)
用户名:root
密码:123456
系统完成加载后,通过显示器能够看到如下的界面
通过terminal输入命令,能够看到CPU信息,南湖双核系统