私は生成の内部の整数からバイナリstd_logic_vectorを取得したいと思います。 > 1111VHDL:ブロックを生成するイテレータをstd_logic_vectorに変換するにはどうすればいいですか?
-
例えば、
0 - > 0000
1 - > 0001
2 - > 0010
...
15私は各整数に対して16個のif-else文を書くことができましたが、私はこの考え方が気に入らないのです。 (私は16の整数よりもはるかに多くを持っているかどうか?)
私は2つのメソッドを使用しようとしたが、それらのどちらも動作します: アドレスとヒットは両方STD_LOGIC_VECTORまた
G_1 : for i in 0 to 15 generate
address <= conv_std_logic_vector(i, 4) when hit(i) = '1';
end generate G_1;
G_2 : for i in 0 to 15 generate
address <= std_logic_vector(to_unsigned(i, 4)) when hit(i) = '1';
end generate G_2;
ある私は気づきました私がiの代わりに数字を使うと、それは機能します。 (例:conv_std_logic_vector(5、4)を使用すると "0101"になります)
私は間違っていますか? vhdlを使ってそれを行う方法はありますか?
ありがとうございました!それはかなりうまくいく) –
VHDL 2008以降を使用している場合は、 'unsigned'の代わりに' u_unsigned'(未解決)を使用することもできます(解決済み)。この方法では、複数のドライブ状況でエラーが発生します。 –