Forum: FPGA, VHDL & Co. linksshift Operator mit std_logic_vector


von Stefan (Gast)


Lesenswert?

Hallo Erstmal!

Möcht gleich mal anfangs erwähnen, dass ich ein ziemlicher Anfänger 
bezüglich VHDL bin!

aber nun zu meinem Problem:

Ich habe folgendes definiert:

PORT (Address:      OUT std_logic_vector (15 downto 0) := X"0000");

und dann noch ein Signal:
SIGNAL add: std_logic_vector (7 downto 0) := X"00";

zuerst möchte ich das signal um 6 Stellen nach links shiften und dann 
der Addresse zuweisen. Kann mir bitte jemand sagen wie das unter VHDL 
funktioniert! Ist sicher relativ banal, bin für eure Hilfe sehr dankbar.

Gruß und Dank Stefan

von Berater (Gast)


Lesenswert?

signal6 <= signal0 & "000000";

Rechenoprationen z.B. mit :

result <= std_logic_vector(unsigned ('0' & datasignal & "0000" + 
unsigned (signal2)) ;

... produziert einen um Faktor 16 größeren Wert mit zusätzlich einem Bit 
Reserve für eine Addition ohne Überlauf.

Noch ein Trick : Multiplikation mit 3:

factor3 <= std_logic_vector(unsigned("00" & signal)+unsigned(signal(15 
downto 1)));

von Berater (Gast)


Lesenswert?

Achso: Deine Zuweiseung konkret: OUT <= "00 & add & "000000";

von Klaus F. (kfalser)


Lesenswert?

Geht eigentlich auch ohne Shiften :
Address(15 downto 14) <= "00";
Address(13 downto 6)  <= add;
Address(5 downto 0)   <= "000000";

Klaus

von Stefan (Gast)


Lesenswert?

Vielen dank für eure Hilfe!!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.