从代码风格的角度而言,一般在头文件(.h)中创建数据类型。如图1所示,创建流数据类型与其他数据类型类似,其中第2行代码是必须要有的。如果声明了namespace(第3行代码),那么可直接创建流(对应第6行和第7行代码)。如果未声明namespace,则需要指明namespace为hls,如第8行和第9行所示。
图1 在头文件中创建流数据类型
在源文件(.cpp)中也可创建流数据类型,如下图所示。同样地,第11行代码是必须要有的。此外,可以给流数据命名,如第14行代码,命名的好处在于报告以及日志文件中会以该名字显示流数据,如图3所示。
图2 在源文件中创建流数据类型
图3 log文件中显示的流数据信息
由此可得如下结论:
采用hls_stream::<T>创建流数据,这里T可以是C++自身的数据类型,如int,float或结构体;也可以是HLS新增的任意精度数据类型,如ap_int<5>或ap_fixed<10,8>等。流数据必须以引用(Reference)的形式出现在函数形参列表中,如图4所示。其中,din_stream和dout_stream分别为图1代码第6行和第7行定义的流数据类型。
图4 在形参列表中声明流数据