Hallo Kann ich verschiedene Components zusammen Portmappen oder brauche ich dafür Hilfssignale. Ich weiß nur wie ich die Ein- und Ausgänge eines Components mit den Ein und Ausgängen der Entity Portmappen kann. Geht das auch mit Components untereinander? Sonst brauche ich ja doppelt so viele Hilfssignale wie Aus und Eingänge...
Wenn du Components, die in der selben Hiearchieebene liegen, miteinander verbinden willst, brauchst du dafür in VHDL Hilfssignale. Den Port einer Sub-component kannst du aber direkt an den Port der übergeordneten Component anschließen (solange er den gleichen Datentyp hat natürlich).
Ich schreibe in diesen Thread, weil es Thematisch besser passt, damit es in Zukunft auch andere Leute finden. Aber eigentlich ist meine Antwort ausgelöst durch deinen anderen Thread: Beitrag ""Unter-Entities" in VHDL und alles in Altium verkabeln?" Ja, du brauchst in einer Strukturbeschreibung in VHDL Hilfssignale um zwei Komponenten untereinander zu verbinden. Wenn man das alles von Hand in einem einfachen Texteditor macht artet das in eine sehr langweilige fehlerträchtige schreibarbeit aus. 1. Tipp: Gute VHDL Editoren/IDEs bieten dafür Unterstützungshilfen an. Das ist ein Grund wieso ich mir die Zeit genommen habe mich in Emacs einzuarbeiten, der VHDL Modus spart wirklich Zeit! (Stichwort "Copy Ports" und danach die Funktionen "Paste as snstance", "Paste as somponents", "Paste as signals" nutzen) 2. Tipp: Einen ganz anderer VHDL Schreibstil nutzen (ist natürlich nicht in jedem Arbeitsumfeld möglich). In den Ports der Entity stehen nur Clock, ev. Reset und zwei Records, je für Eingangs- und Ausgangssignale. In der Strukturbeschreibung müssen entsprechend nur zwei Hilfsignale deklariert werden pro Komponente. Ich finde das praktisch und sehr lesbar aber das ist Ansichtssache.
Christoph schrieb: > 1. Tipp: > Gute VHDL Editoren/IDEs bieten dafür Unterstützungshilfen an. Ok ich schau mir mal dein genanntes Programm an, das klingt wirklich einfach! > 2. Tipp: > Einen ganz anderer VHDL Schreibstil nutzen (ist natürlich nicht in jedem > Arbeitsumfeld möglich). Das wäre im Prinzip kein Probem. > Ich finde das praktisch und sehr lesbar Hmmm. Ich weiß nicht... Natürlich ist es dann in der Hauptentity gut lesbar -> weil weniger Signale und kürzere Port Maps. Allerdings sind dann die Unterentities nicht wirklich lesbar, da es nur 2 lange Vectors gibt und diese dann auf Hilfssignale aufgeteilt werden müssen. Ich fände es in Altium wirklich gut, weil es auch für eine Präsentation sehr gut geeignet wäre, um die grundlegenden Dinge zu erklären (brauche das Alles für die Diplomarbeit).
Aber ich glaube ich habe jetzt einen Lösungsweg für Altium gefunden: Ich erstelle einfach Libraries mit meinen Unterkomponenten und binde diese dann in Altium ein.
Christoph Z. schrieb: > In den Ports der Entity stehen nur Clock, ev. Reset und zwei Records, je > für Eingangs- und Ausgangssignale. In der Strukturbeschreibung müssen > entsprechend nur zwei Hilfsignale deklariert werden pro Komponente. Ich > finde das praktisch und sehr lesbar aber das ist Ansichtssache. Jeweils ein Record für Ein- und Ausgang finde ich dann doch etwas grob. Ich benutze auch sehr gerne Records in Entities, versuche aber nur Signale in einen Record zu gruppieren, die auch logisch zusammengehören. Alleine schon aus dem Grund, weil die Ausgangssignale meistens an verschiedene Komponenten gehen. Darüber hinaus soll die Entity die Komponente ja auch ein wenig dokumentieren. ;-)
Sanchez Santiago schrieb: > Ich benutze auch sehr gerne Records in Entities, versuche aber nur > Signale in einen Record zu gruppieren, die auch logisch zusammengehören. Danke für deinen Input. Wenn es sich so gruppieren lässt ist das sicher gut (Einfaches Beispiel sind interne Bussysteme). Was ich auch schon gemacht habe zu diesem Zweck sind Records innerhalb eines übergeordneten Records (also innerhalb des eigentlichen Input Records). Tönt zuerst komisch aber gewisse Programmiersprachen pflegen einen ähnlichen Schreibstil. Eine Signal zuweisung für ein Konfigurationssignal kann dann z. B. so aussehen:
1 | BusTrafficLoggerFsmIn.Armed <= BusTrafficLoggerIn.Config.Armed; |
Und eine Zuweisung von einem FSM Ausgang an den Datenpfadeingang sieht so aus:
1 | BusTrafficLoggerDataIn.SaveData <= BusTrafficLoggerFsmOut.SaveData; |
Mit der Autocompletion vom Editor sind solche Zeilen sehr schnell geschrieben. Sanchez Santiago schrieb: > Darüber hinaus soll die Entity die > Komponente ja auch ein wenig dokumentieren. ;-) Ja, diesen Anspruch kann ich nicht mehr erfüllen. Bei mir übernehmen das jetzt die Type definitionen im dazugehörigen Package. Das ist am Anfang sicher ein umgewöhnen.
Christoph Z. schrieb: > Was ich auch schon gemacht habe zu diesem Zweck sind Records innerhalb > eines übergeordneten Records (also innerhalb des eigentlichen Input > Records). Tönt zuerst komisch aber gewisse Programmiersprachen pflegen > einen ähnlichen Schreibstil. Das mache ich ganz genauso. Ich verwende teilweise bis zu achtfach verschachtelte Records. Erst bei sowas kann man doch toll abstrahieren und Komplexität reduzieren...
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.