always@(a,b,c,d)
begin
if(a)
begin
y = 2'b00;
end
else if(b)
begin
y = 2'b01;
end
else if(c)
begin
y = 2'b10;
end
else if(d)
begin
y = 2'b11;
end
else
begin
y = 2'b00;
end
end
可以改写成
always@(a,b,c,d)
begin
case(1'b1)
a: y = 2'b00;
b: y = 2'b01;
c: y = 2'b10;
d: y = 2'b11;
default:y = 2'b00;
endcase
end
将两端代码用synplify综合
前段代码综合为各个输入不互斥的多路选择器
后段代码综合为各个输入互斥的多路选择器