Vielleicht eine sehr dumme Frage: Ist es egal ob ich ein Signal so signal vektor : std_logic_vector(0 to 31); oder so signal vektor : std_logic_vector(0 downto 31); deklariere? Wenn nicht, was ist der Unterschied?
der Unterschied ist, dass 0 downto 31 eine Fehlermeldung erzeugen wird. Du meinst vermutlich 31 downto 0. Der Unterschied wäre dann wie folgt: Angemommen dein vektor wäre: vektor <= x"80000000"; dann bekommst du bei (0 to 31) mit vektor(0) die 1 (was am weitesten links steht), und bei (31 downto 0) die 0 (steht am weitesten rechts).
Vielen Dank für die Antwort. Bedeutet das auch, dass wenn ich das Signal auf ein register lege und dieses extern auslese die Reihenfolge anders ist? oder gilt das nur für den Zugriff innerhalb der vhdl-Datei?
Wenn es sich irgendwie vermeiden lässt, kein "to" für die vektordeklaration verwenden. Standard ist "downto". Einfacher Grund: Bei downto ist die Wertigkeit = 2**index. AFAIK arbeiten auch alle conversion routines nach dieser Konvention.
Danke, dann werd ich mal ein find and replace machen, meinem Entwurf ist es egal...
hallo zusammen, hat noch jemand eine antwort auf die letzte frage? "Bedeutet das auch, dass wenn ich das Signal auf ein register lege und dieses extern auslese die Reihenfolge anders ist? oder gilt das nur für den Zugriff innerhalb der vhdl-Datei?" blöderweise kommen sämtliche deklarationen aus EDK mit "to" heraus (wenn man z.b. einen microblaze-kern als submodule in ISE verwendet)... grüße, kalle
downto MSB(links) ------ LSB(rechts) to LSB(links) ------ MSB(rechts)
ne, muss nicht. Beim Microblaze und OPB wird 0 to 31 verwendet. Dabei ist aber 31 das niederwertigste Bit und 0 das höchstwertigste. Etwas seltsam, hat aber einen Vorteil: Man kann einen normalen 31 downto 0 Vektor (mit 0 als niederwertigem Bit) direkt zuweisen. Beispiel signal Bus2IP_ArData : std_logic_vector(0 to 31); signal IP2Bus_ArData : std_logic_vector(0 to 31); signal meinInternesSignal : std_logic_vector(31 downto 0); meinInternesSignal <= Bus2IP_ArData; IP2Bus_ArData <= meinInternesSignal; In beiden Fällen zählt hier jedenfalls das Bit was am meisten rechts ist als niederwertigstes Bit, auch wenns in manchen Fällen Bit 31 und in den anderen Bit 0 ist. Ich selbst verwende in meiner iegenen Logik eigentlich nur downto, erscheint mir irgendwie logischer. Bei den OPB Sachen weiße ich die einfach nem temporären downto Vektor zu (s.o.) und behandle die auch so, funktioniert bestens.
danke für antwort Matthias! ich habs bis jetzt auch immer so gemacht, mich aber nur gewundert, warum es funktioniert :)
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.