2016-06-21 11 views
3

以下は、IFブロックを使用するVHDLのコードです。 最後の "elsif"では、 "my_choice"の値が "ch4"に割り当てられます。条件が成立しないのでelseブロックを実行する。しかし、 "my_choice"が高いインピーダンス(または何か他のもの)のような(ch1、ch2、ch3、ch4)以外の他の値を得る可能性はありますか?もしそうなら、どうすればそれを避けることができますか?この割り当てはコードの操作を変更する可能性があるためです。 my_choiceので"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は常に少なくともシミュレーションにおいて、これらの4つのいずれかの値を持つことになり、値「CH1」、「CH2」、「CH3」、「CH4」とタイプを列挙しているchoicesを入力され。

ハードウェアでは、使用可能な値のスペースは実装によって異なります。たとえば、値が1つのホットまたはバイナリである場合などです。起動後、リセットが値が4つの値の1つに明確に定義されていることを確認する良い方法であり、回路がタイミング要件に準拠していれば、その値は4値。

+0

お手数をおかけしていただきありがとうございます。 – Raviteja

+0

@Raviteja:この回答があなたの質問を解決する場合は、他のユーザーが自分の時間を優先することができるように、「承諾」をクリックすることをおすすめします。 –

関連する問題