I want to create 8x1 MUX IP BLOCK through HLS. MUX block should be 8 inputs and single output. Eight input streams :Each input stream data width : 32 bit and output should be single output stream of 32 bit. I tried with below code but in simulation output is not. I am missing some logic behind this implementation. Can anyone guide me.
// MUX CODE
void 8x1_MUX(hls::stream<idata> &datain1,hls::stream<idata> &datain2,hls::stream<idata> &datain3,hls::stream<idata> &datain4,hls::stream<idata> &datain5,hls::stream<idata> &datain6,hls::stream<idata> &datain7,hls::stream<idata> &datain8,hls::stream<odata> &dataout,hls::stream<isel> sel)
{
isel select;
select=sel.read();
idata in1;
idata in2;
idata in3;
idata in4;
idata in5;
idata in6;
idata in7;
idata in8;
switch(select)
{
case 1:
//idata in1;
if(!datain1.empty())
{
in1=datain1.read();
dataout.write(in1);
}
break;
case 2:
// idata in2;
if(!datain2.empty())
{
in2=datain2.read();
dataout.write(in2);
}
break;
case 3:
//idata in3;
if(!datain3.empty())
{
in3=datain3.read();
dataout.write(in3);
}
break;
case 4:
//idata in4;
if(!datain4.empty())
{
in4=datain4.read();
dataout.write(in4);
}
break;
case 5:
//idata in5;
if(!datain5.empty())
{
in5=datain5.read();
dataout.write(in5);
}
break;
case 6:
// idata in6;
if(!datain6.empty())
{
in6=datain6.read();
dataout.write(in6);
}
break;
case 7:
// idata in7;
if(!datain7.empty())
{
in7=datain7.read();
dataout.write(in7);
}
break;
case 8:
// idata in8;
if(!datain8.empty())
{
in8=datain8.read();
dataout.write(in8);
}
break;
default:
//cout<<"invalid stream"<<endl;
break;
}
}