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.
Warum spaltest Du deinen Bus nicht in 2 Busse auf (EXT_IN_BUS und EXT_OUT_BUS)? Dann gehts, sonst nicht. Gruß Klaus
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?
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
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
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
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.