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?
@ 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
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...
@ 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.