本实验参考了哈工大深圳的相关课程。关于本次实验的理论部分,可以参考陈云霁《智能计算系统》。
本实验建议的完成流程为HLS->Block Design->上板,具体步骤参考实验步骤。
为了便于读者从任何一个步骤开始实验,本仓库提供了上述步骤中的全部中间工程及生成文件。
- 一台可以安装Vivado、有网线接口、USB接口的电脑。
- PYNQ开发板。FPGA型号为xc7z010clg400-1,PS部分型号为ARM Cortex-A9。
笔者自费买了一块PYNQ7010板,可以联系笔者进行借用
- Vivado 2018.3,请在此处找到安装包。经检验可以在Windows11系统中安装。
- MobaXTerm。可以直接安装最新版。
- 开发板驱动程序。请在此处找到安装包与安装方法。
- 镜像制作工具。请在此处找到该程序。
├─docs
│ ├─pictures
│ ├─其他文档 # 包括debug手册、PYNQ板说明文档等
│ └─实验步骤 # 请按照此文件夹下文档完成实验
├─projects
│ ├─Vivado
│ │ ├─IPs # 工程中使用到的卷积与池化IP核
│ │ │ ├─conv
│ │ │ └─pool
│ │ ├─out # 放置综合生成的.bit等
│ │ └─project_1 # Vivado工程文件
│ │
│ └─Vivado HLS
│ ├─conv_core # Vitis HLS工程文件
│ ├─out
│ └─src # 设计中使用的源码
├─src
│ ├─step1
│ ├─step2
│ └─step3 # 上板所需文件,包括.ipynb、MNIST数据集等
|
└─tools # 完成实验必须用到的软件工具
├─PYNQ镜像
├─开发板驱动软件
└─镜像烧录软件
本实验的步骤为Vitis HLS生成IP核、Vivado生成Block Design,最后下板进行测试。详见/docs/实验步骤。
这里为后来者列了一系列可以继续迭代的方向。
- 更新POOL核等文件,使得工程可以在更高版本的Vivado软件中完成综合。
- 重新训练网络,获得更好的权重,提升网络的精度。
- 基于卷积、池化、全连接算子,探索更多的CNN网络结构,提高精度或完成其他任务。
📣欢迎各位提Pull Request/联系笔者成为Collaborator!