01
HLS与卷积加速概览
什么是HLS、为什么用HLS做卷积加速、课程目标与工程框架介绍。
入门概念
02
Vivado HLS开发环境搭建
Vivado HLS安装、License配置、创建第一个HLS工程(点灯)。
环境上手
03
C/C++ 可综合语法基础
数据类型、循环与数组、函数与接口、指针与流。
语法HLS
04
卷积神经网络基础
卷积层、池化层、全连接层、激活函数、数据流图。
CNN理论
05
卷积算法的软件实现
纯C++实现3x3卷积、边界处理、多通道卷积、性能Profiling。
C++基准
06
HLS中的流水线与并行
PIPELINE指令、UNROLL指令、DATAFLOW指令、吞吐量计算。
优化pragma
07
数组优化与分块
ARRAY_PARTITION、ARRAY_RESHAPE、Blocking与Tiling策略。
存储带宽
08
接口综合与数据搬移
AXI4-Stream、AXI4-Lite、AXI4-Full接口、DMA传输。
接口DMA
09
定点数量化与精度控制
AP_FIXED数据类型、量化策略、精度损失分析。
量化精度
10
卷积核的HLS实现
单通道3x3卷积HLS代码、循环优化、资源评估。
实现卷积
11
多通道卷积加速
输入通道并行、输出通道并行、Im2Col+GEMM方法。
并行Im2Col
12
行缓冲器(Line Buffer)设计
Line Buffer原理、HLS实现、滑动窗口优化。
架构窗口
13
池化层与激活函数HLS实现
MaxPool、AveragePool、ReLU、Sigmoid的HLS代码。
池化激活
14
全连接层HLS实现
矩阵乘法优化、权重存储、批处理。
FC矩阵
15
完整卷积层IP封装
将卷积层封装为AXI-Stream IP、RTL协同仿真。
IP封装
16
Vivado IP集成与Block Design
添加HLS IP、连接DMA与DDR、地址映射。
Vivado集成
17
Zynq PS-PL协同设计
ARM端驱动编写、Linux下设备树配置、数据交互。
Zynq驱动
18
HLS仿真与调试技巧
C仿真、C/RTL协同仿真、波形分析、性能瓶颈定位。
调试仿真
19
资源与性能优化策略
LUT/DSP/BRAM平衡、频率提升、功耗优化。
优化资源
20
多层级存储架构
On-Chip Buffer、DDR、HBM的分层使用、数据预取。
存储层次
21
Winograd卷积加速算法
Winograd原理、HLS实现、与Im2Col对比。
Winograd算法
22
稀疏卷积与剪枝加速
权重剪枝、稀疏矩阵存储、HLS稀疏计算单元。
稀疏剪枝
23
量化感知训练与部署
QAT原理、INT8量化、HLS INT8计算核。
QATINT8
24
典型CNN网络部署实战(LeNet)
LeNet网络结构、各层HLS实现、端到端测试。
LeNet实战
25
典型CNN网络部署实战(ResNet-18)
残差结构、Bottleneck实现、性能调优。
ResNet残差
26
典型CNN网络部署实战(YOLO-tiny)
检测头实现、后处理、NMS硬件加速。
YOLO检测
27
多核与脉动阵列架构
脉动阵列原理、HLS实现、数据广播与累加。
脉动阵列架构
28
HLS高层次综合优化指令大全
全部#pragma指令详解、组合使用策略。
pragma参考
29
工程调试与常见问题
时序违例修复、资源爆满解决、数据一致性校验。
调试问题
30
课程总结与进阶方向
HLS vs RTL、未来趋势、推荐学习路径。
总结进阶