FSM verliert aktiven zustand

Gast #1111058
Lesenswert?
• ▲
▼
Hi,
Ich habe einen UART Core in VHDL geschrieben. Er arbeitet mit einem 
Zustandsautomaten. Zeitweise funktioniert der Automat einwandfrei, doch 
sporadisch verliert er seinen Zustand. Dann ist kein Zustand mehr aktiv.
Es scheint mir so als wenn das abhänig davon ist wie Quartus das Design 
"gefittert" hat. Denn in manchmal funktioniert es ganz gut, und wenn man 
neu fittert geht es mal wieder nicht. Fehler werden keine Angezeit! In 
der "funktion simulation" funktioniert es.
Habt ihr eine Idee woran es liegen kann?
Gast #1111063
Lesenswert?
• ▲
▼
Das ganze soll auf einen FPGA. Der Reset ist zusammgeführt und geht nur 
auf 2 Register um in zu Synchronisieren. Tue ich das nicht, meckert der 
Design Assistent in Quartus auch.
Mir ist grad eingefallen das ich rxd nicht synchronisiert hab, kann das 
einfluss haben?
Moderator (Firma: Titel) Persönliche Seite #1111075
Lesenswert?
• ▲
▼
> Das ganze soll auf einen FPGA.
Nur auf CPLDs wird gefittet, nicht auf FPGAs ;-)

> Mir ist grad eingefallen das ich rxd nicht synchronisiert hab, kann das
> einfluss haben?
Ja, was denn sonst?
Jedes Signal, das für das Weiterschalten einer SM zuständig ist, kann 
sie auch durcheinander bringen. Und dein RXD ist extensiv dafür 
verwendet:
1
    when Z8 => if rxd = '1' then -- warten bis Treiber freigeschaltet hat!
2
                  zustand <= Z1; -- senden fertig
3
               else
4
                  zustand <= Z8;
5
               end if;
Also: zwischen Eingangspin und SM mindestens 2 FFs.

BTW:
Woher kommt der clrn ?
Ist das der einsynchronisierte Reset?

EDIT:
Bei Xilinx enden VHDL-Files mit .vhd
Nimm für den Dateianhang auch diese Endung, dann kann der 
Dateibetrachter hier im Forum den Code schön formatieren.
Moderator (Firma: Titel) Persönliche Seite #1111124
Lesenswert?
• ▲
▼
> Im Quartus gibt es doch den Compilepunkt Fitter(Place & Route).
Man lernt nie aus   ;-)
Also ok, beim Quartus werden FPGAs gefittet (aber trotzdem ohne r)

Dann schau dir gleich noch die anderen Signale an (start, rd_wr...),
falls die von aussen kommen. Jedes davon kann dir solche Effekte
machen. Besonders, wenn es zum Umschalten einer SM verwendet wird.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.