Hallo alle zusmamen, ich bin gerade dabei ein VHDL Design nach SystemC zu übersetzen. Hierzu übersetze ich immer ein Modul und führe danach eine Co-Simulation mit ModelSim durch. Bisher funktionierte es immer wunderbar. Jetzt habe ich leider einen Fehler, bei dem ich mit meinem Latein am Ende bin. Um eine FSM zu simulieren, nutze ich Enumerations. Also habe ich im Header sowas stehen: enum fsm_state{state_A, state_B, state_C}; signal<fsm_state> i_fsm_state; Danach benutze ich es in der CPP in einem Synchronen Prozess folgendermaßen: if(Bedingung){ i_fsm_state = state_B; } Hat bisher immer wunderbar funktioniert. Jetzt wird mir in der Simulation aber bei jedem Takt ein Zustanswechsel angezeigt (von der Logik her nicht möglich) und anstatt des Zustands immer folgender Wert "?(1618060916)". Compilieren und Linken funktiuoniert super und alle anderen Werte werden auch korrekt angezeigt. Hat jemand eine Idee?
Hi, ich glaube du musst einen Delta-Zyklus nach der Zuweisung des neuen Zustandes warten. if(Bedingung){ i_fsm_state = state_B; wait(SC_ZERO_TIME); } HTH
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.