Forum Discussion
Altera_Forum
Honored Contributor
12 years agoThe reason is simple and can be seen in the below always block. There are multiple assignments to each x_bus_out, but only the last takes place.
always @ (TAU_A, TAU_B, TAU_C, TSR_A, TSR_B, TSR_C, TR_A, TR_B, TR_C, tau_w2, tsr_w2, tr_w2)
begin
if(TAU_A == 1)
begin
A_bus_out = tau_w2;
end
else
begin
A_bus_out = 12'hzzz;
end
if(TAU_B == 1)
B_bus_out = tau_w2;
else
B_bus_out = 12'hzzz;
if(TAU_C == 1)
C_bus_out = tau_w2;
else
C_bus_out = 12'hzzz;
/////////////////////////
if(TSR_A == 1)
A_bus_out = tsr_w2;
else
A_bus_out = 12'hzzz;
if(TSR_B == 1)
B_bus_out = tsr_w2;
else
B_bus_out = 12'hzzz;
if(TSR_C == 1)
C_bus_out = tsr_w2;
else
C_bus_out = 12'hzzz;
//////////////////////////
if(TR_A)
A_bus_out = tr_w2;
else
A_bus_out = 12'hzzz;
if(TR_B)
B_bus_out = tr_w2;
else
B_bus_out = 12'hzzz;
if(TR_C)
C_bus_out = tr_w2;
else
C_bus_out = 12'hzzz;
end You probably meaned to write (and similar for the other outputs): if(TAU_A == 1)
A_bus_out = tau_w2;
else if(TSR_A == 1)
A_bus_out = tsr_w2;
else if(TR_A)
A_bus_out = tr_w2;
else
A_bus_out = 12'hzzz;