#include "xf_utils_hw/stream_one_to_n/tag_select.hpp"
template < int _WInStrm, int _WTagStrm > void streamOneToN ( hls::stream <ap_uint <_WInStrm>>& data_istrm, hls::stream <bool>& e_data_istrm, hls::stream <ap_uint <_WTagStrm>>& tag_istrm, hls::stream <bool>& e_tag_istrm, hls::stream <ap_uint <_WInStrm>> data_ostrms [PowerOf2< _WTagStrm >::value], hls::stream <bool> e_data_ostrms [PowerOf2< _WTagStrm >::value], TagSelectT alg )
This function send element from one stream to multiple streams based on tags.
In this primitive, the tag is the index of ouput streams. The input data in data_istrms is distributed to the data_ostrm whose index is tag. Each tag is the index of output streams, and data_istrm and tag_istrm are synchronous.
Parameters:
_WInStrm | the width of input data |
_WTagStrm | the width of tag, pow(2, _WTagStrm) is the number of ouput streams. |
data_istrm | the input stream. |
e_data_istrm | the end signal of input stream. |
tag_istrm | the tag stream. |
e_tag_istrm | the end signal stream of tags. |
data_ostrms | the output stream. |
e_data_ostrms | the end signals of data_ostrms. |
alg | algorithm selector |