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