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?
Gast
#2210284
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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.