FSM Automat(für bestimmte zeit in einem zustand bleiben)

Gast #888594
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
Gast #889763
Lesenswert?

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

Was sagen den Folge_z und counter in der Simulation?

Rick
Gast #894206
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren