Statemachine -> Case Anweisung -> synthetisierbar -> Ungewollte Latches
Hallo,
ich schreibe einen Code der eine Statemachine beinhaltet.
Leider erhalte ich beim Synthetisieren immer ungewollte Latches.
Ich habe in meinem Code 4 States:
no_set -> set_hours -> set_minutes -> set_seconds
Wenn z.B. der state "set_hours" aufgerufen wird, soll nur am Anfang, also beim ersten Aufruf ein Signal (signal_a) einen bestimmten Wert bekommen:
signal_a <= signal_b;
Wenn irgendwann wieder der state "set_hours" aufgerufen wird, und die Bedingung (set = '1') erfüllt ist, soll dem Signal signal_a folgender Wert zugewiesen werden:
signal_a <= signal_a + 1;
Wenn der state "set_hours" aufgerufen wird und die Bedingung (set = '0') ist erfüllt, soll dem Signal signal_a aber kein neuer Wert zugewiesen werden, sondern es soll der alte Wert beibehalten werden.
signal_a <= signal_a;
Wie kann ich das im Code realisieren, ohne dass Latches beim Synthetisieren erzeugt werden?
Wenn ich folgendes mache, meckert das Synthese Tool:
when set_hours =>
if (flag = '0') then
signal_a <= signal_b;
end if;
if (set = '1') then
signal_a <= signal_a + 1;
elsif (set = '0') then
signal_a <= signal_a;
end if;
Gruss,
Bianka