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
Kann hier keinen Fehler finden. Sieht eigentlich ganz gut aus.
wieviel bit hat Dein Counter? kann der wirklich den wert 31 annehmen? ändert der Counter überhaupt seinen Pegel wert?
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
@ 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.
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.