mikrocontroller.net

Forum: FPGA, VHDL & Co. Welche Hierarchie-Ebenen gibt es in VHDL?


Autor: Steffen Hausinger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

angenommen, ich habe in VHDL einen DualPort-RAM. Port A und Port B 
sollen dabei verschiedene Aufgaben erfüllen (siehe Anhang).

Ist es möglich, eine Struktur wie im Anhang aufzubauen? Ich müsste dafür 
die Entity des DualPort-RAMs aufteilen, so dass ein Teil der Signale zur 
Entity von Konverter I läuft und ein Teil zur Entity Konverter II. Geht 
das? Oder muss ich zwingend eine gemeinsame Entity aufbauen, in der ich 
Konverter I und II gemeinsam abhandele, dann die Signale an TOP 
weiterleite und von da aus erst die Signale des Konverter II auf das 
Ausgabe-Interface leite? (Das Interface in die gemeinsame 
Konverter-Entity zu legen halte ich für eine unschöne Lösung, da dann 
die Funktion nicht sauber getrennt wäre.)

Ich hoffe, meine Frage ist verständlich rübergekommen. Welche 
Möglichkeiten habe ich?

Grüße
Steffen

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In jedem Fall braucht es eine Toplevel-Entity in der dann alle anderen 
Entities enthalten sind. Auch wenn deine eine Entity "TOP" heißt - sie 
ist nicht die Toplevel-Entity in dem von dir gezeichneten Aufbau. Die 
Toplevel-Entity würde bei dir dem grauen Kasten "FPGA" entsprechen.

Wenn ich dich recht verstehe, möchtest du in beiden Konverter-Entities 
jeweils die Hälfte der Ports des Memories einbauen? Das geht nicht.

Autor: Steffen Hausinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jan,

danke für Deine Antwort!


Jan M. schrieb:
> Auch wenn deine eine Entity "TOP" heißt - sie
>
> ist nicht die Toplevel-Entity in dem von dir gezeichneten Aufbau.

der Anhang soll nur den Signalfluß schematisch darstellen.

Du triffst aber den Nagel auf dem Kopf: Letztenendes kann ich dann in 
VHDL ja nur "verschachteln". Das heißt, ich habe eine Entity, die ich 
als Component in einer übergeordneten Entity einsetze, die dann wiederum 
in einer noch höheren Entity verschachtelt wird (ggf. mit anderen 
Entities zusammen). Alle Signale muss ich durch diese gesamte 
Hierarchie-Ebene mitschleifen, auch durch Entities, in denen sie gar 
nicht verwendet werden.

Ist das wirklich so korrekt?

Grüße
Steffen

Autor: Matthias G. (mgottke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ist das wirklich so korrekt?

Ja!

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ist das wirklich so korrekt?
Ja.
Gewöhne dir aber besser an, keine allzu tiefen Verschachtelungen zu 
machen wenn der Datenfluss eher linear von einer Entity zur nächsten 
verläuft - das erschwert das debuggen und das testen einzelner 
Programmteile ungemein.

Wenn du die Zahl der zu verbindenden Signal reduzieren willst, kannst du 
dir records anschauen, damit kannst du (ähnlich einer struct in C) 
mehrere Signale zu einem zusammenfassen.

Autor: Steffen Hausinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, das werde ich ausprobieren. Danke!

Grüße
Steffen

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.