www.mikrocontroller.net

Forum: FPGA, VHDL & Co. std_logic_vector Definition


Autor: Der Anfänger (vimes_ankh)
Datum:

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

Autor: Matthias (Gast)
Datum:

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

Autor: Der Anfänger (vimes_ankh)
Datum:

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

Autor: Frank (Gast)
Datum:

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

Autor: Der Anfänger (vimes_ankh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, dann werd ich mal ein find and replace machen, meinem Entwurf ist 
es egal...

Autor: Kalle (Gast)
Datum:

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

Autor: Artur Funk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
downto MSB(links) ------ LSB(rechts)
    to LSB(links) ------ MSB(rechts)

Autor: Matthias (Gast)
Datum:

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

Autor: Kalle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für antwort Matthias!
ich habs bis jetzt auch immer so gemacht, mich aber nur gewundert, warum 
es funktioniert :)

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.