Ich habe einen std_logic_vector, x: std_logice_vector(A+B-1 downto 0)
, und ich möchte die besten A
Bits '1'
und den unteren B
Bits '0'
setzen, gibt es eine einfache Möglichkeit, dies zu tun?Einstellen variabler Länge std_logic_vectors in VHDL
Ich möchte so etwas wie dies tun:
x <= (A+B-1 downto B <= (others => '1'),
B-1 downto 0 <= (others => '0'));
Meine andere Pläne sind die Untersignale zu definieren und sich ihnen anzuschließen:
signal top: std_logic_vector(A-1 downto 0);
signal bottom: std_logic_vector(B-1 downto 0);
...
top <= (others => '0');
bottom <= (others => '1');
x <= top & bottom;
Oder ich könnte eine Funktion schreiben, die über alle Schleifen die Bits, aber das scheint eine Menge Arbeit für etwas so einfach.
Wenn es nicht einen einfachen Weg gibt und da ich dies mehrmals machen muss, kann ich eine Konstante definieren und diese verwenden.
x <= (A + B-1 bis B => '1') & (B-1 bis 0 => '0'); –
Das funktioniert, danke. Ich habe das '=>' nicht getrennt gesehen, wenn andere eingestellt wurden. –
Dann lesen Sie über "named Association", es gibt eine Menge Verwendungen dafür. –