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综合
前段代码综合为各个输入不互斥的多路选择器
后段代码综合为各个输入互斥的多路选择器
本文介绍了如何使用case语句改进Verilog代码中if…else分支过多的情况,通过示例展示了如何将带有多个条件分支的代码重构为更简洁的case结构。经过synplify综合,case语句版代码将被综合为输入互斥的多路选择器,提高了代码的可读性和综合效率。

4361


被折叠的 条评论
为什么被折叠?



