1

VHDLで始めていますが、ポートにイネーブルを追加しようとすると問題が発生します。8ビットの出力ベクトルがあり、「Enable」ビット入力が「1」の場合に値を入力したいと思います。それ以外の場合は、ベクトルに「0」を入れます。

私は作ることができます:

out(0) <= '0' AND Enable;
out(1) <= '0' AND Enable;
out(2) <= '1' AND Enable;
out(3) <= '0' AND Enable;
out(4) <= '1' AND Enable;
...
out(7) <= '0' AND Enable;

これを作る簡単な方法はありますか?私は次のように考えています:out <= "01010100" AND Enable; しかし、それは機能しません...

「if」を使用することもできますが、この方法を使用してその方法を理解することをお勧めします。

4

2 に答える 2

4

そして、同じサイズの別のベクトルで初期化されます(others => Enable)

より完全な例:

subtype Data_Word is std_logic_vector(7 downto 0);

signal Out, Value, Mask : Data_Word;
...
Mask <= (others => Enable);
Out <= Value and Mask;

またはおそらく単に

Out <= Value and (Out'Range => Enable);
于 2013-03-05T16:45:24.917 に答える
4

これを行うためのきちんとした方法は、条件付きの信号割り当てを使用することです。

Out <= Value when Enable = '1' else (others=>'0');

...ボーナスとして、Enableが低い場合は、任意の値(異なる信号ベクトルでも)を割り当てることができます。

于 2013-03-05T17:45:16.200 に答える