Kann mir jemand den Unterschied zwischen: Test <= (Vektor1,Vektor2); und Test <= Vektor1 & Vektor2; erklären oder gibt es keinen ?
Letzteres ("&") ist syntaktisch korrekt, ersteres nicht ,jedenfalls bricht die Synthese (XST) ab.
Sorry die Frage war nicht richtig so. - Element1, Element2 sollen vom Typ std_logic sein. - Vektor ist vom Tyo std_logic_vector ( 1 downto 0) Gibt es nun einen Unterschied zwischen Vektor <= (Element1, Element2); und Vektor <= Element1 & Element2;
Hallo Christof, mE wird der Concatenate-Operator auch genutzt, um aus verschiedenen Vektoren wieder einen Vektor zusammenzusetzen (zu "verketten" => to concatenate)... ....sprich, wenn du zB 2 Datenwörter vom Typ
1 | DW1 ... std_logic_vector(n DOWNTO 0) |
2 | DW2 ... std_logic_vector(m DOWNTO 0) |
hast, kannst Du mit dem &-Operator ein DW (oder Vektor) aus beiden "verkettenten" DW vom Typ
1 | DW <= DW1 & DW2 .... std_logic_vector(n DOWNTO 0) & std_logic_vector(m |
2 | DOWNTO 0) |
zusammenbauen..... Gruß Tom
Der Beitrag ist zwar schon uralt, aber trotzdem: a <= (b, c); und a <= (b, c); sind gleichbedeutend wenn z.B. a ein signal vom type std_logic_vector(7 downto 0) und b,c ein signal vom type std_logic_vector (3 downto 0) ist. ferner kann bei einem aggregat folgendes gemacht werden: a <= (b, others => '0'); mit einer "concatenation" geht das nicht. folgendes ist ungültig: a <= b & (others => '0'); also lieber auf das '&' verzichten ! Mark
Mark schrieb: > a <= (b, c); > und > a <= (b, c); > sind gleichbedeutend Das möchte ich aber auch hoffen... ;-) Was kommt da raus wenn die Typen so sind: a ein signal vom type std_logic_vector (7 downto 0) b ein signal vom type std_logic_vector (3 downto 0) c ein signal vom type std_logic_vector (7 downto 4) a <= (b, c); a <= b & c; > also lieber auf das '&' verzichten ! Nur dort, wo es Sinn macht. Bei der "impliziten" By-Order-Aggregat-Zuweisung könnten für den ungeübten Betrachter noch ein oder zwei Fragen offen bleiben... :-/ Mit dem & Operator sehe ich sofort, was wo im Vektor steht. Es ist eine Frage der Gewohnheit, aber häufiger als das Aggregat wird noch immer die Concatenation verwendet. Ein Schieberegister sieht so etwas ungewöhnlich aus: a <= (a(6 downto 0),'0'); Das ist die "übliche" (und m.E. übersichtlichere) Form: a <= a(6 downto 0) & '0';
mein Fehler ! gemeint war: a <= (b, c); und a <= b & c; Lothar Miller schrieb: > Was kommt da raus wenn die Typen so sind: > a ein signal vom type std_logic_vector (7 downto 0) > b ein signal vom type std_logic_vector (3 downto 0) > c ein signal vom type std_logic_vector (7 downto 4) > a <= (b, c); > a <= b & c; jeweils: a = [ b3, b2, b1, b0, c7, c6, c5, c4 ]
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.