Switch statement 如何创建平衡逻辑而不是优先级逻辑?

Switch statement 如何创建平衡逻辑而不是优先级逻辑?,switch-statement,logic,verilog,Switch Statement,Logic,Verilog,如何为以下情况创建平衡逻辑(案例),而不是优先级(if..else) 我知道当我改变优先级逻辑时,我可以得到平衡的逻辑 if(a == 2'b00) out = 1; else if(a == 2'b01) out = 4'b0010; else if(a == 2'b10) out = 4'b0100; else if(a == 2'b11) out = 4'b1000; 到 但是如果优先级逻辑是这样的,我怎么能得到平衡逻辑呢 if(a) out = 1; else if(b) out =

如何为以下情况创建平衡逻辑(
案例
),而不是优先级(
if..else

我知道当我改变优先级逻辑时,我可以得到平衡的逻辑

if(a == 2'b00) out = 1;
else if(a == 2'b01) out = 4'b0010;
else if(a == 2'b10) out = 4'b0100;
else if(a == 2'b11) out = 4'b1000;

但是如果优先级逻辑是这样的,我怎么能得到平衡逻辑呢

if(a) out = 1;
else if(b) out = 4'b0010;
else if(c) out = 4'b0100;
else if(d) out = 4'b1000;
那么:

case (1'b1)

  a:out = 1;
  b:out = 4'b0010;
  c:out = 4'b0100;
  d:out = 4'b1000;

endcase

有关优先级的问题,请参阅。

a、b、c、d是否可以是任意位?@Regan:我假设它们是1位长。你可能会遇到a,b,c,d更长的情况。在这种情况下,它们应该至少与case值一样长。
case (1'b1)

  a:out = 1;
  b:out = 4'b0010;
  c:out = 4'b0100;
  d:out = 4'b1000;

endcase