mikrocontroller.net

Forum: FPGA, VHDL & Co. Bus mit fester Richtung für jedes Bit in VHDL?


Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe einen Bus zwischen 2 Bausteinen, der insgesamt 10 Bit breit
ist. Es handelt sich dabei nicht um einen Adress-oder Datenbus sondern
einen Bus, bei dem die Richtung jeder einzelnen Leitung fest steht und
sich nicht mehr ändert. Allerdings kann sich die Bedeutung ändern.

Daher habe ich ihn mit "EXT_BUS : inout std_logic_vector (10 downto
1);" im TOP-Level File aufgenommen. Allerdings erhalte ich dann für
jedes Signal eine Fehlermeldung, da ich z.B. EXT_BUS(1) nur als Input
und EXT_BUS(2) nur als Output verwende.

Gibt es eine Möglichkeit im TOP-Level-File die Bezeichnung "EXT_BUS"
für alle 10 Leitungen zu verwenden und die Richtung für jede Leitung
einzeln vorzugeben (es sind eben nicht alle immer input oder output)?

Falls ja, wie?

Den Zugriff möchte ich eben weiterhin mit EXT_BUS(X) vornehmen können.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum spaltest Du deinen Bus nicht in 2 Busse auf (EXT_IN_BUS und
EXT_OUT_BUS)?

Dann gehts, sonst nicht.

Gruß
Klaus

Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tip.

Wenn ich Dich richtig verstehe geht dabei aber die Info (z.B.
1,3,4,5,8,9 als Input und der Rest als Output) verloren, da ich diese
von X downto 0 oder so anlegen müsste, oder?

Autor: Alex H. (alex123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michi,

meines Wissens nach leider nicht (zumindest nicht
mit VHDL). Bei jedem Port wird ein Mode angegeben,
der festlegt ob in, out, inout ... (kann man
weglassen, default ist m.W. nach "in" - würde ich
aber immer angeben).
Dieser Mode gilt dann für das komplette Signal.

Ich habe mir in solchen Fällen zwei Datentypen
definiert, einen für jede Richtung (die können ja
ähnlich heissen, dann passt das ganze von der
Lesbarkeit auch wieder). Diese Ports kann man auch
sehr schön als Records definieren, dann kann man auf
die einzelnen Felder auch mit mnemonischen Namen
zugreifen ...

Gruss,

Alex

Autor: Alex H. (alex123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uups, war wohl jemand schneller ... ;-)

Alex

Autor: Alex H. (alex123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bzgl. der Zählweise:
> ... geht dabei aber die Info (z.B. 1,3,4,5,8,9 als
> Input und der Rest als Output) verloren, da ich diese
> von X downto 0 oder so anlegen müsste, oder?

Wie gesagt, mit nem Record oder sonstigem zusammengesetzten
Datentyp kannst Du das in gewisser Weise beibehalten.

type FromAtoB is record
  Bit1, Bit3, Bit4, ... Bit9: bit;
end record FromAtoB;

type FromBtoA is record
  Bit0, Bit2, Bit6, Bit7: bit;
end record FromBtoA;

Dann kannst Du in beiden Modulen immer noch in der
"richtigen" Reihenfolge darauf zugreifen ...
xyz <= FromBtoA.Bit0;
FromAtoB.Bit1 <= abc;
...
(würde aber den einzelnen Bits ggf. die richtigen
Namen geben, z.B. StartBit, Flag, ErrorCheckOk,
WasAuchImmer, ... usw

Gruss,

Alex

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man nicht diese zwei getrennten Busse im VHDL Code virtuell wieder
zusammen-casten ?! Das geht und ich ärgere mich gerade das ich alle was
mit VHDL/FPGAs/CPLDs zu tun hat auf meinen Rechner gelöscht habe.

Gut habe gerade nachgeschaut ALIAS im Code benutzen. Ich weis abr nicht
ob es damit möglich ist eine ALIAS Variable/Signal auf mehrere
referenzierte Objekte zu deklarieren.

Gruß Hagen

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.