mikrocontroller.net

Forum: FPGA, VHDL & Co. FSM verliert aktiven zustand


Autor: Michael (Gast)
Datum:

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Habt ihr eine Idee woran es liegen kann?
Das ist eine Timing-Verletzung, partieller Reset...

Auf welche Zielplattform wurde das Design "gefittet" (FPGA, CPLD, 
welches)?
Gehst du mit deinem Reset-Pin direkt aufs Reset-Netzwerk?
Hast du Kombinatorik im Reset?
Lass doch mal deinen Code sehen.

Autor: Michael (Gast)
Datum:

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

Autor: Michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ups, vergessen

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:
    when Z8 => if rxd = '1' then -- warten bis Treiber freigeschaltet hat!
                  zustand <= Z1; -- senden fertig
               else
                  zustand <= Z8;
               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.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo danke, lag am rxd ;-)

clrn, ist der Reset.

Warum wird beim FPGA nicht gefittert. Im Quartus gibt es doch den 
Compilepunkt Fitter(Place & Route).

Autor: DI UV (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Xilinx unterscheidet da streng:
 #das Tool für Place&Route heis par und läuft nicht mit Designs für 
(Xilinx-)CPLD's
 #für CPLDs hat Xilinx ein Tool namens cpldfit (?) (was nicht für 
FPGA-Design läuft).

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

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

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.