Forum: FPGA, VHDL & Co. Konkatenation in VHDL?


von Aschenbecher (Gast)


Lesenswert?

Hallo liebes Forum ich habe folgenden Code

____________

signal vektor_a, vektor_b : std_logic_vector(3 downto 0);
signal erg1, erg2, erg3 : std_logic_vector(7 downto 0);
signal c: std_logic;
begin

erg1 <=                    -- oberes Nibble von erg1 = Vektor_a

_______________

Ich solle hier eine Konkatenation durchführen, das kommentar sagt ich 
solle das obere Nibble von erg1 = Vektor_a machen... ich versteh das 
nicht, kann mir da jemand helfen?

von Aschenbecher (Gast)


Lesenswert?

kann mir keiner helfen :S?

von Christian R. (supachris)


Lesenswert?

1. mal machen wir nicht so gerne die Hausaufgaben anderer und 2. kann 
man mit dem Fragment der Frage nicht viel anfangen. Denn die eigentliche 
Operation, die zwischen vector_a und erg1 vermittelt, fehlt.

Zu deinem anderen Topic. Mach doch erst mal einen Vorschlag, wie du 
deine Hausaufgabe lösen könntest, dann kann man gerne diskutieren. Aber 
gleich alles abschreiben wollen. Nee...gerade bei sowas grundlegendem, 
was in jedem Lehrbuch und jedem VHDL Tutorial steht, muss Faulheit nicht 
belohnt werden.

von Aschenbecher (Gast)


Lesenswert?

Jo, hab vergessen den Rest rein zu posten, habe es aber denn doch 
hinbekommen.

"ich versteh das
nicht, kann mir da jemand helfen?" meinte ich - ich bin mir schon 
bewusst, dass mir sehr ungerne in Foren Aufgaben gelöst werden oder man 
angemotzt wird, wie es gerade schon, warum auch immer, passiert ist.

Naja danke dnenoch

von Guru (Gast)


Lesenswert?

Und neue Threads aufmachen, wenn die Antwort nicht befriedigend ist, 
finden wir hier auch nicht so nett.

http://www.mikrocontroller.net/topic/220260#new

Warum schlägst Du nicht einfach in Deinem VHDL-Buch oder im Internet 
nach dem entsprechenden Operator nach?

von Aschenbecher (Gast)


Lesenswert?

Dabei handelt es sich um eine andere Frage und nicht um die selbe 
Antwort -.- und so schlau in Google und PDFs zu suchen anstatt mich hier 
auf den Foren-Trudel einzulassen war ich auch, aber wenn man nichts 
findet, dann erhofft man sich, dass jemand vielleicht so nett ist, und 
es einem erklärt oder einen Link gibt wo es gut gezeigt wird.

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


Lesenswert?

Aschenbecher schrieb:
> signal vektor_a, vektor_b : std_logic_vector(3 downto 0);
> signal erg1, erg2, erg3 : std_logic_vector(7 downto 0);
> erg1 <=                    -- oberes Nibble von erg1 = Vektor_a
> Ich solle hier eine Konkatenation durchführen
Damit kannst du eigentlich kannst du keine Konkatenation machen. Denn 
eine Konkatenation ist wie das englische Wort "concatenation" schon 
aussagt, eine Verknüpfung/Verkettung. Du hast aber nur eine Teilmenge...

Seis drum...
Hier eine mögliche Lösung deiner Hausaufgabe:
1
 erg1(7 dwonto 4) <= vektor_a;  -- oberes Nibble von erg1 = Vektor_a
Oder, wenns unbedingt mit einer Konkatenation sein muß:
1
 erg1(7 dwonto 4) <= vektor_a(3 downto 1) & vektor_a(0);  -- oberes Nibble von erg1 = Vektor_a
Eine Frage bleibt allerdings: was soll mit dem unteren Nibble von erg1 
passieren?
Dir ist klar, dass dir meine Antworten nichts bringen, wenn du die 
vorige Frage nicht beantwortest?


Aschenbecher schrieb:
> aber wenn man nichts findet,
Fasl gesucht!
Such mal nach concatenation vhdl
http://www.google.de/search?q=concatenation+vhdl&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:de:official&client=firefox-a
Und er erste Link:
http://www.gmvhdl.com/operator.htm
beschreibt:
1
The following statement would connect a to the right half of b and make the left half of b constant '0'.
2
b<="0000" & a;
3
The & appends the a to the end of the "0000" to form a result that contains 8 bits.

von Aschenbecher (Gast)


Lesenswert?

Hey, ja habe den Rest vergessen einzufügen.

Müsste folgendermaßen aussehen.

__________

signal vektor_a, vektor_b : std_logic_vector(3 downto 0);
signal erg1, erg2, erg3 : std_logic_vector(7 downto 0);
signal c: std_logic;
begin

erg1 <=                    -- oberes Nibble von erg1 = Vektor_a
                           -- unteres Nibble von erg1 = Vektor_b


_____________

Da habe ich folgendes raus:

erg1 <= vektor_a & vektor_b


Müsste doch stimme, nicht?

von max (Gast)


Lesenswert?

ja

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


Lesenswert?

Aschenbecher schrieb:
> erg1 <= vektor_a & vektor_b
> Müsste doch stimme, nicht?
Das wird einen Syntaxfehler geben, aber die Funktion passt 
grundsätzlich...

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.