#include "xf_utils_hw/stream_n_to_one/tag_select.hpp"
template < typename _TIn, int _WTagStrm > void streamNToOne ( hls::stream <_TIn> data_istrms [PowerOf2< _WTagStrm >::value], hls::stream <bool> e_data_istrms [PowerOf2< _WTagStrm >::value], hls::stream <ap_uint <_WTagStrm>>& tag_istrm, hls::stream <bool>& e_tag_istrm, hls::stream <_TIn>& data_ostrm, hls::stream <bool>& e_data_ostrm, TagSelectT alg )
This function selects from input streams based on tags.
In this primitive, each tag decides the source of the output. It is assumed that input element has a corresponding channel-selection tag. The output data in data_ostrms only contains the input data .
Parameters:
_TIn | the type of input data |
_WTagStrm | the width of tag, pow(2, _WTagStrm) is the number of input streams. |
data_istrms | the input streams |
e_data_istrms | the end flag of input streams |
tag_istrm | the tag stream, streams and data_istrm and tag_istrm are synchronous. |
e_tag_istrm | the end signal stream, true if data_istrms and tag_istrm are ended. |
data_ostrm | the output stream. |
e_data_ostrm | the end signals of data_ostrm. |
alg | algorithm selector |