Forum: FPGA, VHDL & Co. port map (Verständnis?-) Problem


von Anfänger (Gast)


Lesenswert?

Hallo,

ich habe ein Modul, welches einen Eingangs- und Ausgangsport hat und 
dieses soll mit einem weiteren Modul verbunden werden.
Kann ich das zu verbindende Modul im anderen Modul verwenden und die 
Ports verbinden, oder brauche ich ein drittes übergeordnetes Modul?

Wenn ich das eine Modul im anderen verwende und den Ausgangsport des 
äußeren Moduls mit dem Eingangsport des inneren Moduls verbinde, erhalte 
ich einen Fehler, dass der Ausgangsport nicht gelesen werden kann - ich 
solle den Modus 'out' gegen 'buffer' ersetzen.

Frage: geht sowas grundsätzlich nicht, oder habe ich Mist gebaut?
Wenn ich buffer einsetze, muss ich die Daten ja taktsynchron behandeln - 
dabei wollte ich mich garnicht um die Daten kümmern, sondern nur eine 
Leitung direkt verbinden, bzw. weiterreichen.

von Klaus F. (kfalser)


Lesenswert?

Anfänger schrieb:
> Hallo,
>
> ich habe ein Modul, welches einen Eingangs- und Ausgangsport hat und
> dieses soll mit einem weiteren Modul verbunden werden.
> Kann ich das zu verbindende Modul im anderen Modul verwenden und die
> Ports verbinden, oder brauche ich ein drittes übergeordnetes Modul?
Das hängt davon ab, mit welchen Signalen des 2. Moduls die Ports des 1. 
Moduls verbinden willst.
Wenn Du das Modul im anderen Modul verwendest, kannst Du die Ports des 
mit internen Signalen des 2. Moduls verbinden.
Wenn Du die Ports des 1. Moduls mit Ports des 2. Moduls verbinden 
willst, dann braucht es ein 3. Modul, das die beiden anderen beinhaltet.

> Wenn ich das eine Modul im anderen verwende und den Ausgangsport des
> äußeren Moduls mit dem Eingangsport des inneren Moduls verbinde, erhalte
> ich einen Fehler, dass der Ausgangsport nicht gelesen werden kann - ich
> solle den Modus 'out' gegen 'buffer' ersetzen.
> Frage: geht sowas grundsätzlich nicht, oder habe ich Mist gebaut?
Du kannst nur in Ports mit in Ports, out Ports mit out Ports und ev. 
inout mit inout verbinden.
Es geht jedenfalls prinzipiell nicht, dass man ein Port, das als out 
deklariert ist, auch liest. Wenn das äußere Modul das Signal auch lesen 
soll, braucht es ein internes Zwischensignal.

> Wenn ich buffer einsetze, muss ich die Daten ja taktsynchron behandeln -
???

> dabei wollte ich mich garnicht um die Daten kümmern, sondern nur eine
> Leitung direkt verbinden, bzw. weiterreichen.

von Anfänger (Gast)


Lesenswert?

Hallo Klaus,

danke für Deine Hilfe!

Ich glaube ich habe verstanden.
Also wenn ich 2 Module verbinden will, brauche ich immer ein Signal 
dazwischen?

> Du kannst nur in Ports mit in Ports, out Ports mit out Ports

Ok, das wäre quasi eine Parallelschaltung?
Von In-Port zu In-Port können ja wohl keine Daten fließen?
Also wäre ich wieder beim obigen Statement, wenn Daten von einem Modul 
zu einem anderen fließen sollen geht das nur über ein Signal?!?

von Klaus Falser (Gast)


Lesenswert?

> Also wenn ich 2 Module verbinden will, brauche ich immer ein Signal
> dazwischen?
Wenn die beiden Module auf gleicher Ebene (innerhalb eines 3.) sind, 
schon.
Wenn man die Ports eines Moduls mit den Ports des übergeordneten 
verbindet, dann nicht. Die Ausnahme : Man hat ein out port im inneren 
Modul und verbindet das mit dem out Port des übergeordneten, zugleich 
aber will man auf das Signal zugreifen. Dann bekommt man so eine Meldung 
wie Du sie bekommen hast, weil das Port-Signal nicht gelesen werden 
darf. Durch Einführen eines Zwischensignals kann man das Signal lesen.

> Ok, das wäre quasi eine Parallelschaltung?
Nein, da habe ich mich unklar ausgedrückt, dies betrifft nur 
hierarchische Verbindungen.
Man darf also nur ein in Port eines äuseren Moduls mit dem in Port eines 
inneren verbinden, und ein out Port des inneren mit dem out Port des 
äußeren.

Du kannst Dir das so vorstellen, dass jedes Signal nur eine Quelle haben 
kann.
Wenn es aus dem out Port eines inneren Moduls herauskommt, dann fließt 
es wiederum auch aus dem out Port des umschließenden Moduls heraus, kann 
aber innerhalb des Moduls in andere Module hineingehen (in Ports).
Wenn es als in Port in das äußere Modul hineingeht, dann kann es 
wiederum nur in Untermodule hineinfließen (in Port).

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.