Forum: FPGA, VHDL & Co. Simples Problem: zwei 8bit zu einer 16bit reihen


von Andreas B. (loopy83)


Lesenswert?

Hallo,

ich grüble jetzt schon eine Weile an folgendem Problem und ich sehe 
wahrscheinlich den Wald voller lauter Bäume nicht mehr.

Ich habe zwei 8 bit Variablen:
1
signal DATA_OUT_A0 : std_logic_vector(7 downto 0);
2
signal DATA_OUT_A1 : std_logic_vector(7 downto 0);

Nun möchte ich die in einer Variable aneinanderreihen bzw. 
zusammenführen:
1
signal DATA_OUT_A : std_logic_vector(15 downto 0);

Wie genau ist die Syntax dafür?
Kann ich es einfach so in der Art machen?
1
DATA_OUT_A <= ('DATA_OUT_A0','DATA_OUT_A1');

Oder muss ich die einzelnen Bits in DATA_OUT_A0(0),DATA_OUT_A0(1) 
auflösen und dann neu in die 16bit Variable sortieren?

Eine einfache Addition mit DATA_OUT_A0 + DATA_OUT_A1 wird ja nicht 
ausreichen, oder?

Ich habe hier im Forum viele Lösungen gefunden, aber leider nur in C 
oder C++ oder sowas.

Einen Ansatz hatte ich schon:
Einfach die unteren Bit von A0 in A schreiben und dann A1 um 8 schiften 
und dann addieren... aber dazu fehlt mir auch die Idee, wie ich die in 
VHDL umsetzen kann.

VIELEN DANK!

von Hagen R. (hagen)


Lesenswert?

1
data_out_a <= data_out_a1 & data_out_a0;

von Tobi (Gast)


Lesenswert?

Wird da nicht beim reinen Verunden das 8 bit shiften vergessen??

Ich kann kein VHDL, aber so in der Art geht es:

data_out_a <= ((typecast zu 16 Bit)data_out_a1 << 8) & data_out_a0;

Vorrausgesetzt, Du willst in a1 dein High Byte haben!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Wird da nicht beim reinen Verunden das 8 bit shiften vergessen??
Die Antwort von Hagen Re ist richtig...
Das ist keine Verundung, sondern eine Concatenation, also ein 
Zusammenhängen. Ein UND heißt AND ;-)

von Andreas B. (loopy83)


Lesenswert?

VIELEN DANK!

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.