2010-04-08 78 views
4

使用VHDL編程時,您可以在case語句中使用變量嗎?這個變量將通過的情況下VHDL中的案例陳述

case task is 

when 1 => 

when 2 => 

when number => 

這是一個好修改?

+1

可能值得發佈更多的代碼,以便我們可以看到您的建議如何使用變量!如果您計劃編寫綜合代碼,那麼您必須確保您不使用變量來維護狀態,並且僅用於計算的臨時結果。 – 2010-04-08 03:35:05

+0

@Binary Nerd:爲什麼你不能使用變量來存儲狀態?標準實踐在這裏.. – 2010-04-08 12:54:28

+0

最終取決於OP試圖實現什麼,這是一個偉大的未知......他/她肯定可以使用(希望註冊的)變量來維護狀態,如果這是他/她打算做的事情。 – vladr 2010-04-23 20:40:02

回答

3

對於模擬或合成?

無論哪種方式,從documentation

的選擇必須是常數相同離散型作爲表達式的

使用if來測試number,或者:

if task=number then 
    ... 
else 
    case task is 
    when 1 => ... 
    when 2 => ... 
    when others => ... 
    end case; 
end if; 

case task is 
    when 1 => ... 
    when 2 => ... 
    when others => 
    if task=number then 
     ... 
    else 
     ... 
    end if; 
end case; 

您的選擇取決於你是否希望if task=number測試的結果或when ... =>測試的有優先? (例如,假設無論出於何種原因number=1,你想when 1 =>if task=number最終提供你的結果?)

case聲明合成爲一個多路複用器的簡單的情況; if語句作爲比較器和雙輸入多路複用器進行綜合。一個喂入另一個。