Bootstrap

hls fifo_如何理解HLS中的Stream

5ef5f5be68e7a97e15bca2f259c8ebf7.png

上期内容:如何利用BRAM实现数据延迟

fe63a098124c9b887ae10169c869d029.png

思考一下:

大位宽的数据延迟或数据缓存,采用LUT实现时会有哪些弊端?

数据缓存采用LUT时,实际上用的是SLICEM里的LUT。如果使用量大,就会出现这些LUT分布在不同列,同时,也增加了CLB的端口密度(Pin Density),这样容易导致局部布线拥塞,不利于时序收敛。

fe63a098124c9b887ae10169c869d029.png

什么是流数据(Streaming Data)

流数据是指数据的采样是按顺序进行的,因此不需要地址层面的操作(不需要读地址,也不需要写地址)。

关于HLS Stream Library

HLS提供了C++类模板hls::stream<>用于流数据的算法建模。需要说明的是hls::stream<>是类模板,故只可用于C++设计中。基于hls::stream<>的流数据具有如下属性:

  • hls::stream<>的行为类似于一个深度无限大FIFO,因此,并不需要定义hls::stream<>的规模

  • 从流中读取数据或向流中写入数据都是顺序进行的,这意味着数据只能从流中读取一次,不能反复读取,这与第一个特征相吻合

  • 如果一个hls::stream<>的流为顶层函数接口,最终该接口会被综合为ap_fifo接口类型

  • 如果一个hls

;