www.mikrocontroller.net

Forum: FPGA, VHDL & Co. INOUT Port - Richtung umschalten


Autor: E. P. (metallman)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ich habe jetzt ein neues Problem, bzw. noch eine Frage an die Experten.

Und zwar habe ich zwei State Machines in einer Datei (also zwei einzelne 
prozesse) zusammengefügt. Diese SMs müssen jeweils mit einem UART 
kommunizieren. Das Problem ist nur, dass der UART nur eine 
8bit-Datenleitung hat, die als INOUT definiert ist.
Die eine SM ist für das Senden der Daten an uART verantwortlich, die 
andere für das Empfangen. Nun ist die Frage, wie ich auf das IO-Port des 
UART zugreifen kann.
Ich habe versucht durch zusätzliche signale (jetzt nie wieder variablen) 
so ne Art Multiplexer zu realisieren. das funktioniert aber nicht 
richtig und erzeugt zudem noch Latches bei der synthese..(
Wie kann ich jetzt die Datenleitung sowohl als Ein- als auch als Ausgang 
benutzen bzw. dazwischen umschalten?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ E. P. (metallman)

>Und zwar habe ich zwei State Machines in einer Datei (also zwei einzelne
>prozesse) zusammengefügt. Diese SMs müssen jeweils mit einem UART
>kommunizieren. Das Problem ist nur, dass der UART nur eine
>8bit-Datenleitung hat, die als INOUT definiert ist.

Ist das ein UART im FPGA? Dann wäre das ungünstig, sowas macht man mit 
zwei unidirektionalen Bussen.

>Die eine SM ist für das Senden der Daten an uART verantwortlich, die
>andere für das Empfangen. Nun ist die Frage, wie ich auf das IO-Port des
>UART zugreifen kann.

Du brauchst einen Master/Multiplexer.

>Wie kann ich jetzt die Datenleitung sowohl als Ein- als auch als Ausgang
>benutzen bzw. dazwischen umschalten?

Jeder Prozess muss ein Signal generieren, wenn er auf den UART zugreifen 
will. Ein dritter Prozess prüft nun abwechselnd, ob einer der beiden 
anderen Prozesse zugreifen will, und wenn ja, dann schaltet er die 
Richtung entsprechend um. Wenn du Daten ausgeben willst, einfach 
zuweisen. Wenn du auf Eingang schalten willst, alles "ZZZZZZZZ" 
zuweisen.

Mfg
Falk

Autor: E. P. (metallman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank

ich habe jetzt genauso gemacht, wie du geschrieben hast, und es 
funktioniert in der Simulation!

Beim Synthetizieren kriege jedoch eine, bzw acht Warnungen:

WARNING:Xst:1903 - Unit frameerzeuger : signal sig_rx_data_register<7> : 
Internal tristate is replaced by logic

...und so weiter bis Signal <0>

ansonsten sieht deutlich besser als vorher...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ E. P. (metallman)

>Beim Synthetizieren kriege jedoch eine, bzw acht Warnungen:

>WARNING:Xst:1903 - Unit frameerzeuger : signal sig_rx_data_register<7> :
>Internal tristate is replaced by logic

Das hab ich doch gesagt! Wenn das ein UART Modul im FPGA ist, also 
KEIN  UART IC ausserhalb des FPGA, dann ist der bidirektionale 
Datenbus schlecht bis sinnlos. Ersetze ihn durch zwei unidirektionale 
Datenbusse. Dann brauchst du auch keinen MUX und alles wird einfacher.

MfG
Falk

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.