HLS流传输-vivado hls第六十一章
9.要使用 hls::stream<> 对象,请包含 hls_stream.h 头文件。2.hls::stream<>被应用到顶层接口的时候,默认rtl中会将其作为FIFO接口来实现,或者ap_fifo接口来实现,必须确保用于实现 hls::stream 变量的 FIFO 大小足以保存生产者任务所生成的所有数据采样。3.在设计函数中使用hls::stream并将其综合为硬件中,会将其综合为FIFO
一、hls::stream注意事项
1.hls::stream<>对象只能被单一个进程写,单一个进程读取
2.hls::stream<>被应用到顶层接口的时候,默认rtl中会将其作为FIFO接口来实现,或者ap_fifo接口来实现,
但是可以选择是使用ap_hs接口,或者是axi-stream接口
3.在设计函数中使用hls::stream并将其综合为硬件中,会将其综合为FIFO,默认深度为2
4.在某些情况下,比如内插时,可能必须增大FIFO的深度以便确保硬件生成的所有元素
5.如果无法确保FIFO大小足够保存硬件生成的所有数据样本,否则可能导致设计停滞
6.hls::stream的fifo深度可以通过stream指令的depth来进行调整
7.需要确保hls::stream变量默认在非dataflow区域内使用时候设置正确的depth大小
8. hls::stream 在不同任务(子函数或循环)间传输数据,应立即考量在不同任务间存在数据流传输的
DATAFLOW 区域内实现这些任务。默认(非 DATAFLOW)行为是完成每一项任务后再开始下一项任务,在此情况下
必须确保用于实现 hls::stream 变量的 FIFO 大小足以保存生产者任务所生成的所有数据采样。不增大
hls::stream 变量的大小会导致如下错误
9.要使用 hls::stream<> 对象,请包含 hls_stream.h 头文件。数据对象流传输是通过指定类型和变量名称来定义
的。
10.Vivado HLS 支持阻塞访问方式和非阻塞访问方式
11.非阻塞访问只能作为 FIFO 接口来实现.
12。作为 ap_fifo 端口实现并以 AXI4-Stream 资源定义的流传输端口不得使用非阻塞访问
13.对应 hls::stream<> 对象的基本访问为阻塞读取和阻塞写入。这些访问是使用类方法完成的。
这些方法会停止(阻止)对空的流传输 FIFO 尝试执行的读操作以及对满的流传输 FIFO 尝试执行的写操作,直至针对映射到 ap_hs 接口协
议的流传输完成完整握手为止。
二、hls::stream阻塞读写
1.写入stream(阻塞写入方法)
方式一:
my_stream.write(src_var);//将src_var写入my_stream中
方式二:
my_stream << src_var;//将src_var写入my_stream中
2.从stream流中读取数据(阻塞读取方法)
方式一:
my_stream.read(dst_var);//将my_stream流中读取数据写入到dst_var变量中
方式二:
int dst_var = my_stream.read();//将my_stream流中读取数据写入到dst_var变量中
方式三:
my_stream >> dst_var;//将my_stream流中读取数据写入到dst_var变量中
二、hls::stream非阻塞读写
1.非阻塞读写,就是允许空读,或者尝试满写
就是FIFO空不空,都会读;FIFO满不满,都会写
2.仅在使用 ap_fifo 协议的接口上支持非阻塞方法
3.更确切地说,AXI-Stream 标准和赛灵思 ap_hs I/O协议不支持非阻塞访问。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)