1

信号の配列があります。「セレクター」である信号がセル数と等しい場合、配列内の適切なセルに書き込みたいです。書き込みとコード行を節約するために、生成ループで割り当てを生成します。

read_data_signals_gen: for i in 0 to (CAU_num -1) generate

    v_direction_sig(i)(0) <=  DATA_IN when (chosen_flow_sig = i) and (read_state = st_read_v_direction_0) else
                              v_direction_sig(i)(0);
    v_direction_sig(i)(1) <=  DATA_IN when (chosen_flow_sig = i) and (read_state = st_read_v_direction_1) else
                              v_direction_sig(i)(1);
    v_direction_sig(i)(2) <=  DATA_IN when (chosen_flow_sig = i) and (read_state = st_read_v_direction_2) else
                              v_direction_sig(i)
  ...
end generation read_data_signals_gen;

selected_flow_sigは、セルの数を表すanstd_logic_vector (1 downto 0)とgets "00"、、または"01"であり、定数は4です。整数がその2進変換と等しくなるように、ステートメント内で比較を作成するにはどうすればよいですか。"10""11"CAU_numintegerwhen

そして関連する質問。次のコードを実行する方法はありますか?

type  BitArray is array (natural range <>) of std_logic;

sel_sig : std_logic_vector(0 to 1);
bit_arr : BitArray(0 to 3)

sel_sig <= "00"
bit_arr(sel_sig) <= '1'  -- HOW TO PERFORM THIS? 
4

2 に答える 2

5

あなたはおそらく探しています

to_integer(unsigned(sel_sig))

例えば

bit_arr(to_integer(unsigned(sel_sig))) <= '1'

また

if to_integer(unsigned(sel_sig))=12 then ...

于 2012-11-05T11:40:09.613 に答える
2

が数値を表す場合chosen_flow_sigは、数値タイプを使用します(unsignedまたはintegerたとえば)。あなたが使うなら、あなたはstd_logic_vectorあなた自身にあなたが必要としない痛みを与えているのです!

http://parallelpoints.com/node/3

于 2012-11-05T15:03:53.417 に答える