std_logic_vector Definition

Gast #574879
Lesenswert?
• ▲
▼
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).
Gast #575127
Lesenswert?
• ▲
▼
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.
Gast #576043
Lesenswert?
• ▲
▼
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
Gast #576050
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren