#include "xf_utils_hw/stream_one_to_n/tag_select.hpp"
template < typename _TIn, int _WTagStrm > void streamOneToN ( hls::stream <_TIn>& data_istrm, hls::stream <bool>& e_data_istrm, hls::stream <ap_uint <_WTagStrm>>& tag_istrm, hls::stream <bool>& e_tag_istrm, hls::stream <_TIn> 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:
_TIn | the type of input & output 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 of tag stream. |
data_ostrms | the output stream. |
e_data_ostrms | the end signals of data_ostrms. |
alg | algorithm selector. |