Hallo an alle,
ich habe folgendes Ausgangslage: Ich habe einen Vektor len, der um size
nach links geschoben werden soll. Dazu habe ich folgende Signal- bzw.
Variablen:
1 | signal s_len : std_logic_vector(7 downto 0);
|
2 | signal s_size : std_logic_vector(2 downto 0);
|
3 | variable v_size : integer range 0 to 7;
|
4 | variable v_result : std_logic_vector(14 downto 0);
|
Ich möchte nun in v_result das Signal so zusammensetzen, dass in den
unteren Bits v_size-1 Nullen, dann s_len und darüber die restlichen
Nullen angeordnet sind.
Dazu habe ich folgendes versucht:
1 | v_size := to_integer(unsigned(s_size));
|
2 | v_result := (7 - v_size downto 0 => '0') & s_len & (v_size-1 downto 0 => '0');
|
Mit ist schon klar, dass damit nicht die einfachste Logik synthetisiert
wird, doch es scheitert bei mir mit VHDL. Leider liefert mir Vivado die
folgende Fehlermeldung:
1 | [Synth 8-944] 0 definitions of operator "&" match here ["test.vhd":45]
|
Kann mir jemand damit helfen?
lg Martin