上期内容:如何利用BRAM实现数据延迟
思考一下:
大位宽的数据延迟或数据缓存,采用LUT实现时会有哪些弊端?
数据缓存采用LUT时,实际上用的是SLICEM里的LUT。如果使用量大,就会出现这些LUT分布在不同列,同时,也增加了CLB的端口密度(Pin Density),这样容易导致局部布线拥塞,不利于时序收敛。
什么是流数据(Streaming Data)
流数据是指数据的采样是按顺序进行的,因此不需要地址层面的操作(不需要读地址,也不需要写地址)。
关于HLS Stream Library
HLS提供了C++类模板hls::stream<>用于流数据的算法建模。需要说明的是hls::stream<>是类模板,故只可用于C++设计中。基于hls::stream<>的流数据具有如下属性:
hls::stream<>的行为类似于一个深度无限大FIFO,因此,并不需要定义hls::stream<>的规模
从流中读取数据或向流中写入数据都是顺序进行的,这意味着数据只能从流中读取一次,不能反复读取,这与第一个特征相吻合
如果一个hls::stream<>的流为顶层函数接口,最终该接口会被综合为ap_fifo接口类型
如果一个hls