ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Vivado HLS #pragma

2021-01-23 23:57:17  阅读:508  来源: 互联网

标签:数组 dataflow HLS FIFO Vivado depth pragma 深度


dataflow数据流

#pragma HLS dataflow //任务级流水化而不是顺序执行 默认用double-buffer来实现
一个比较经典的方式来展示templete参数,unroll、dataflow使用的例子,如下所示,它实现了N个testCore模块并行执行。

templete<int N>
void design(int value[N]){
#pragma HLS dataflow
    for(int i = 0; i < N; i++){
#pragma HLS unroll
        testCore(value[i]);
    }
}

STREAM

#pragma HLS stream variable=<variable> depth=<int> dim=<int>      //以高性能FIFO代替高资源占用的double-buffered RAM,必须有一个producer和一个consumer

depth=:只适用于数据流通道中的数组流。默认情况下,在RTL中实现的FIFO的深度与C代码中指定的数组大小相同。这个选项允许您修改FIFO的大小并指定不同的深度。
当数组在数据流区域中实现时,通常使用depth=选项来减小FIFO的大小。例如,在一个数据流区域中,当所有循环和函数都以II=1的速率处理数据时,就不需要一个大型FIFO,因为数据是在每个时钟周期中产生和消耗的。在这种情况下,可以使用depth=选项将FIFO大小减少到1,从而大大减少RTL设计的面积。
提示:config_dataflow -depth命令能够流化一个数据流区域中的所有数组。这里指定的depth=选项将覆盖指定变量的config_dataflow命令。

FIFO深度的含义[1]:
FIFO的宽度:也就是英文资料里常看到的THE WIDTH,它只的是FIFO一次读写操作的数据位,就像MCU有8位和16位,ARM 32位等等,FIFO的宽度在单片成品IC中是固定的,也有可选择的,如果用FPGA自己实现一个FIFO,其数据位,也就是宽度是可以自己定义的。
FIFO的深度:THE DEEPTH,它指的是FIFO可以存储多少个N位的数据(如果宽度为N)。如一个8位的FIFO,若深度为8,它可以存储8个8位的数据,深度为12 ,就可以存储12个8位的数据,FIFO的深度可大可小,个人认为FIFO深度的计算并无一个固定的公式。在FIFO实际工作中,其数据的满/空标志可以控制数据的继续写入或读出。在一个具体的应用中也不可能由一些参数算数精确的所需FIFO深度为多少,这在写速度大于读速度的理想状态下是可行的,但在实际中用到的FIFO深度往往要大于计算值。一般来说根据电路的具体情况,在兼顾系统性能和FIFO成本的情况下估算一个大概的宽度和深度就可以了。而对于写速度慢于读速度的应用,FIFO的深度要根据读出的数据结构和读出数据的由那些具体的要求来确定。

dim=:指定要流化的数组的维度。默认是维度1。指定为从0到N的整数,用于具有N维数的数组。
off:禁用流数据。只适用于数据流通道中的数组流
提示:config_dataflow -default_channel fifo命令全局暗示了对设计中所有数组上使用stream pragma。这里指定的off选项会覆盖指定变量的config_dataflow命令,并恢复使用基于RAM pingpong buffer通道的默认值。

https://www.it610.com/article/1290917355366457344.htm
ref
https://blog.csdn.net/u010379248/article/details/102532100

标签:数组,dataflow,HLS,FIFO,Vivado,depth,pragma,深度
来源: https://blog.csdn.net/qq_35608277/article/details/113064465

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有