基于Cyclone V SoC利用HLS实现卷积手写体数字识别设计
本文是基于英特尔 Cyclone V SoC 开发板,利用 HLS 技术实现三层卷积两层池化两层全连接推理运算的手写体数字识别设计
硬件环境:
Cyclone V SoC开发板
SD卡
电脑
软件环境:
Windows 11
Quartus prime 18
Eclipse DS-5
MobaXterm
i++编译环境
HLS工具
语言:
C
Verilog HDL
项目文件结构
handwriting # 项目名称
└── C5MB_GHRD_Mnist/ # 黄金工程
├── C5MB_top.qpf # 用于启动quartus的GUI界面
├── C5MB_top.v # 黄金工程.v设计文件
├── hps_0.h # 封装IP生成的头文件,用来保持寄存器地址
├── soc_system.dtb # 用于烧入sd卡执行的文件
├── app/ # ps端c代码设计源文件
│ ├── MNIST_mb/ # 项目主文件
│ │ └── *.c
│ └── ...
│
├── ip/ # IP目录
│ ├── pll/ # 调用的pll源文件存放目录
│ │ └── ...
│ ├── hls/ # hls高层次综合文件
│ │ └── ...
│ ├── DVP_CAPTURE/ # HDMI输入输出IP文件
│ │ └── ...
│ └── AccSystem/ # 自己封装的算法源文件存放目录
│ └── ...
│
├── src/ # PL端的.v源文件
│ ├── i2c_master/ # I2C接口时序源文件设计
│ │ └── *.v
│ ├── *.v
│ └── ...
│
├── output_files/
│ ├── soc_system.rbf # 用于烧入sd卡执行的文件
│ └── ...
│
└── ...
手写体数字识别设计具体实现步骤
i++ -march=CycloneV text.cpp -v -ghdl
当我们编译成功后会生成一个名为 full_test 的文件夹
我们将这个文件夹全部放入我们的黄金工程指定里即可
打开黄金工程添加编辑 IP:
生成如下:
连线如下:
分配基地址:
最后我们点击编译生成,生成成功之后编译整个项目即可
生成设备树文件:
命令如下:
make dtb
然后我们将开发板系统烧录到 SD 卡上,并替换如下两个文件:
发板部分了
手写体识别工程部分
首先我们需要打开 eclipse 打开我们已有的 c++ 工程
成功创建工程并导入代码后如下:
然后我们需要导入头文件引用路径:
编译调试即可
开发板调试
这里我们使用 MobaXterm 连接开发板,修改网络和 SSH 设置
修改 IP:
修改 SSH 权限:
配置好之后我们就可以 ssh 连接开发板了
将编译成功的二进制文件传输到开发板上就可以运行了