2016-06-21 66 views
3

以下是使用IF模塊的VHDL的代碼。 在最後的「elsif」中,「my_choice」的值被分配給「ch4」。然後執行「else」塊,因爲沒有條件滿足。但是,有沒有機會讓「my_choice」獲得除(ch1,ch2,ch3,ch4)以外的其他值,如高阻抗(或其他)?如果是這樣,我該如何避免?由於此分配可以更改代碼的操作。有沒有可能讓「if」塊在vhdl中脫離給定的選擇?

entity entity_name 
    port 
     ..... 
     ..... 
    end entity_name; 

    architecture bhvr of entity_name 

    type choices is (ch1, ch2, ch3, ch4); 
    signal my_choice,next_choice : choices; 

    begin 
     process(clk, reset) 
     begin 
      if reset='1' tehn 
       --------reset 
      else 
        my_choice<=next_choice; 
      end if; 
     end process; 

     process(my_choice) 
     begin 
      if my_choice = ch1 then 
       next_choice <= ch2; 
      elsif my_choice = ch2 then 
       next_choice <= ch3; 
      elsif my_choice = ch3 then 
       next_choice <= ch4; 
      else ------------------------------------coming to ch4 
       ---- task for ch4 
     end process;    
    end architecture; 

回答

2

由於my_choice是類型choices,這是枚舉類型與值「CH1」,「CH2」,「CH3」,「CH4」,那麼my_choice總會有這4個值中的一個,至少在模擬。

在硬件中,可用值空間取決於實現,例如,如果將值設置爲單熱或二進制。啓動後,復位是一種很好的方法,可以確保該值可以很好地定義爲4個值中的一個,並且如果電路遵守時序要求,則該值將保持在定義的值空間中4值。

+0

感謝您的幫助Morten Zilmer。 – Raviteja

+0

@Raviteja:如果這個答案解決了你的問題,最好點擊接受(左邊的「V」標記),這樣其他用戶可以優先考慮他們的時間。 –

相關問題