HLS
文章平均质量分 57
happyday_gyx
这个作者很懒,什么都没留下…
展开
-
AXI4总线实现PS-PL的float类型数据传输
数据传输HLSVivadoSDKHLS// test.cpp#define SIZE 50void test(float *A,float *B){#pragma HLS INTERFACE s_axilite port=return bundle=CTRL //与start,done信号相关#pragma HLS INTERFACE m_axi depth=50 port=B offset=slave bundle=output#pragma HLS INTERFACE m_axi原创 2021-03-14 22:08:11 · 630 阅读 · 1 评论 -
利用AXI-stream总线实现PS-PL端数据传输(float类型)
float类型数据传输HLSVivadoSDK前面我们利用AXI-stream总线实现整数类型的数据传输,本文我们将利用AXI-stream传输浮点类型,涉及到一个数据转换过程。HLS首先,我们明确,如果想要利用AXI-stream总线进行数据传输,在HLS中接口就只能用ap_axis,ap_axiu类型的结构体定义,对应的数据类型是ap_uint<32>,也就是说数据传输统一被封装为ap_uint<32>数据类型。如果想要传输其它类型数据,就需要利用union实现转换。下面例原创 2021-03-14 20:07:11 · 2308 阅读 · 1 评论 -
利用AXI-stream总线实现PS-PL端数据传输
数据传输基本测试HLSVivadoSDKHLS使用AXI-stream作为总线接口时,有以下两种定义数据类型的方法,其中ap_axis是有符号数定义,ap_axiu是无符号数定义。如果使用int,float等类型定义数据,AXI_stream会因为缺少相关副通道信号而导致传输失败。template<int D,int U,int TI,int TD> struct ap_axis{ ap_int<D> data; ap_uint<(D+7原创 2021-03-14 15:26:04 · 2375 阅读 · 6 评论 -
Zedboard通过DMA方式实现PL和PS端通信—矩阵乘加速
[具体操作步骤可以参考前一篇文章](https://blog.csdn.net/qq_37719487/article/details/112983308)一、OverviewZedboard开发板包含两部分PS和PL,PS部分包含双核ARM处理器,PL部分是FPGA编程逻辑。本文利用DMA传输方式实现两部分的交互。架构图如下所示,左侧是PS端(Processing System),右端是PL端(Programmable Logic)。控制信号是通过PS端的GP0接口与...原创 2021-01-26 13:43:25 · 1304 阅读 · 0 评论 -
Zedboard上部署Vivado HLS实现的矩阵乘IP核
前一段时间学习了FPGA Zedboard开发板,放假了时间充足,在此分享一下。 1.Overview首先利用高层次综合工具HLS实现一个矩阵乘IP核,再利用Vivado软件搭建一个系统,最后利用SDK编写驱动程序,在Zedboard上运行。 2.HLS矩阵乘的基本运算过程是:C[n][n]=A[n][n]*B[n][n]HLS部分代码如下// 矩阵乘主文件 mul.cpp#include "mul.h"void mul(data* A_addr,...原创 2021-01-22 20:16:53 · 2514 阅读 · 3 评论 -
Vivado HLS加速卷积层运算
源代码1.Introduction卷积神经网络(CNN)主要有卷积层、池化层、全连接层和激活层等网络层顺序连接而成。本文主要针对计算密集型的卷积层,利用Vivado HLS工具对其在FPGA上的执行进行加速。2.Basic knowledge一个基本的卷积运算由6层for循环实现,如下面代码所示。从外到里的循环依次是K*K大小的卷积核,输出特征图的行列(Tr,Tc),输出通道数(Tout),输入通道数(Tin)Kernel_Row:for(int kr=0;kr<K;kr++){ Ke原创 2020-12-04 20:00:51 · 6227 阅读 · 28 评论