mikrocontroller.net

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


Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?!?

Autor: Klaus Falser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

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.