www.mikrocontroller.net

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


Autor: Andreas B. (loopy83)
Datum:

Bewertung
0 lesenswert
nicht 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:
signal DATA_OUT_A0 : std_logic_vector(7 downto 0);
signal DATA_OUT_A1 : std_logic_vector(7 downto 0);

Nun möchte ich die in einer Variable aneinanderreihen bzw. 
zusammenführen:
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?
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!

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
data_out_a <= data_out_a1 & data_out_a0;

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Andreas B. (loopy83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
VIELEN DANK!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.