www.mikrocontroller.net

Forum: FPGA, VHDL & Co. FSM Automat(für bestimmte zeit in einem zustand bleiben)


Autor: VHDL_Bginner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,
ich will in einem zustand einen zaehler ,der hochzaehlt 
programmieren.Mit jeder psitiven Flanke wird der zaehler inkrementiert 
wenn ich den maximalwert nicht erreiche bleibt er in demselben zustand 
sonst Folge_zustand--->Synchrones prozess.
Bei der simulation merke ich mir dass mein zaehler reagiert nicht und ja 
ivh bleibe fuer ewig in meinen zustand.
.
.
.
when S2: if counter < 31 then
         counter<= counter+1;--counter schon initialisiert
          folge_z<=S2;--wenn ich hier anderer zustand definiere
         else         --funktioniert wunder bar aber ich will da bleiben
         counter<=(others=>'0');--für bestimmte zeit
         Folge_z<=S4;
         end if;
.
.
.
MFG

Autor: Thomas Hertwig (mac4ever)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann hier keinen Fehler finden. Sieht eigentlich ganz gut aus.

Autor: Start-ING (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wieviel bit hat Dein Counter? kann der wirklich den wert 31 annehmen? 
ändert der Counter überhaupt seinen Pegel wert?

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du keine default-Zuweisung an 'Folge_z' machst, kannst Du die FSM 
etwas übersichtlicher machen:
when S2 : if counter < 31 then
       counter <= counter + 1;            --counter schon initialisiert
     else                               --funktioniert wunder bar aber ich will da bleiben
       counter <= (others => '0');      --für bestimmte zeit
       Folge_z <= S4;
     end if;

Was sagen den Folge_z und counter in der Simulation?

Rick

Autor: lkmiller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ VHDL_Bginner

ist der Codeschnipsel aus dem kombinatorischen oder aus dem getakteten 
Bereich der Statemachine?
Ist das eine Zwei-Prozess-SM?
Sehen wir hier den kombinatorischen Teil?

Wenn die Zuweisung im kombinatorischen Teil steht, dann ist der 
Simulator sofort fertig. Der zählt nämlich in der Zeit 0ps auf 31 und 
schaltet den Zustand um.

       counter <= counter+1;--counter schon initialisiert

Stichwort hierzu: kombinatorische Schleife.
Auch eine Art, einen Oszillator zu bauen.

Zähler sind Flip-Flops, die gehören in einen getakteten Prozess.

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.