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


von Steffen Hausinger (Gast)


Angehängte Dateien:

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

von Jan M. (mueschel)


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.

von Steffen Hausinger (Gast)


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

von Matthias G. (mgottke)


Lesenswert?

> Ist das wirklich so korrekt?

Ja!

von Jan M. (mueschel)


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.

von Steffen Hausinger (Gast)


Lesenswert?

Ok, das werde ich ausprobieren. Danke!

Grüße
Steffen

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
Noch kein Account? Hier anmelden.