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

时间:2014-06-25 17:43:17

标签: switch-statement logic verilog

如何为以下情况创建平衡逻辑(case)而不是优先级(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;

case(a)
    2'b00: out = 1;
    2'b01: out = 2;
    2'b10: out = 4;
    2'b11: out = 8;
endcase

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

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

1 个答案:

答案 0 :(得分:3)

怎么样:

case (1'b1)

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

endcase

有关优先权的问题,请参阅here