我想通过 HLS 创建 8x1 MUX IP BLOCK。MUX 块应该是 8 个输入和单个输出。八个输入流:每个输入流数据宽度:32 位,输出应为 32 位的单个输出流。我尝试使用下面的代码,但在模拟输出中不是。我错过了这个实现背后的一些逻辑。谁能指导我。
// 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;
}
}