2014-06-25 28 views
1

如何爲以下情況創建平衡邏輯(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; 
+0

感謝Mogsdad進行編輯。它看起來更清楚:) :) – Steve

回答

3

如何:

case (1'b1) 

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

endcase 

關於優先關注的問題見here

+0

所以是a,b,c,d可以是任何位? – Steve

+1

@Regan:我認爲他們是1位長。您可能會遇到a,b,c,d較長的情況。在這種情況下,它們應至少與案例價值一樣長。 – Ari