Ich möchte binäre std_logic_vector von Integer innerhalb der generieren.VHDL: Wie konvertiert man einen Iterator von generate block in std_logic_vector?
Zum Beispiel
0 -> 0000
1 -> 0001
2 -> 0010
...
15 -> 1111
Ich könnte 16 if-else-Anweisungen für jede ganze Zahl schreiben, aber ich mag diese Idee nicht. (Was passiert, wenn ich werde viel mehr als 16 Integer-Zahlen?)
Ich habe versucht, zwei Methoden zu verwenden, aber keiner von ihnen arbeitet: Adresse und Hit sind beide 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;
Auch bemerkte ich, dass, wenn ich Nummer anstelle von i verwende, es funktioniert. (Beispiel: Ich bekomme "0101", wenn ich conv_std_logic_vector (5, 4) verwende)
Was mache ich falsch? Gibt es eine Möglichkeit, es mit vhdl zu tun?
Vielen Dank! Es funktioniert ziemlich gut) –
Und wenn Sie VHDL 2008 oder später verwenden, können Sie sogar 'u_unsigned' (nicht aufgelöst) anstelle von' unsigned' (aufgelöst) verwenden. Auf diese Weise erhalten Sie in mehreren Laufwerkssituationen einen Fehler. –