2013-04-19 107 views
10

私は三項演算子とif節のきれいさが大好きです。VHDLには三項演算子がありますか?

この演算子はvhdlに存在しますか?私の検索は反対のものでした。私もwhenステートメントを調べましたが、それは演算子ではなく、プロセスでも使用できるようにしたいと考えています。

答えて

9

いいえVHDL-2008について議論されましたが、入りませんでした。いくつかのオプションがあります。あなたのツールは、VHDL-2008をサポートする場合は、条件付きの割り当ては今、(彼らは以前にちょうど同時だった)シーケンシャル文としてサポートされているので、あなたのような何か書くことができます:あなたは2008を持っていない場合は、単に関数を記述

process(clock) 
begin 
    if rising_edge(clock) then 
    q <= '0' when reset else d; -- ie. much like q <= reset? '0':d; 
    end if; 
end process; 

を(q <= sel(reset, '0', d))。あなたはあなたが興味を持っているすべてのタイプのためにそれを書く必要があります。

+0

複数のwhen/else節を追加するにはどうすればよいですか?私は '(いつ他のときはx else y)+(条件を満たすときはz else w)'を得ることができない。 –

10

C/C++からあなたが知っているようにはありませんが、

destination <= signal1 when condition else signal2;