本笔记根据《跟Xilinx SAE 学HLS系列视频讲座-高亚军》课程进行学习,仅作为本人学习笔记使用,暂不公开。
相关学习笔记参考了’安静到无声‘同学的博客,在此表示感谢
https://blog.csdn.net/lihuanyu520/article/details/108926806
0、先验知识
软件可编程芯片主要分为几大类:
CPU:管理和调度
DSP:算法上加强,做一些递归算法
DPU:高度并行,适合大数据的流处理
在面对大量计算时,有两种方法:
1、提高主频,即提高CPU的时钟频率,但提升有限
2、增加运算核心,以此提高并行度
但会出现功耗的问题
FPGA
1、内部包含大量的乘法单元
2、SoC,将ARM融合
3、与CPU相比,功耗更优
下图:传统FPGA资源:可编程逻辑、可编程IO、布线资源
随着技术发展,目前FPGA内部的单元越来越多,我们主要关注:存储单元,逻辑单元,算数逻辑单元
逻辑单元:
主要包含查找表(LUT)、MUX、Carry Chain(进位链)
算数逻辑单元
存储单元
大量数据用Block RAM
小数据用LUTin SLICEM
1、软件工程师需要关注什么
优化与资源占用率
2、HLS工作原理
HLS好处有哪些
1、提高系统的性能,以往采用CPU现在可以使用FPGA实现
2、关注算法本身,采用C或C++实现算法,通过工具去转换
3、提升开发效率,指导综合工具,提高转换后的效率
4、用C/C++进行开发和验证,需要做两端
转换过程
上下两图结合看
例子1:
for循环例子
C0状态:先执行“b+c”操作,因为这两个变量求和是固定的数值
C1状态:产生X数组、Y数据的地址
C2:执行相应乘加操作
C3:将结果写入到Y数组
矩阵加法例子
3、与传统流程对比
<