VHDL-Forum - Syntax

Statemachine -> Case Anweisung -> synthetisierbar -> Ungewollte Latches

 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

Re: Statemachine -> Case Anweisung -> synthetisierbar -> Ungewollte Latches

Hallo Bianka,

poste man den kompletten Code.

Latches werden z.B. eingebaut, wenn man in einem Kombinatorischen Prozess ein Signal nicht in allen möglichen "Fällen" zuweist.
Ne Statemachins eollte aber auch irgendwo getaktet sein.

Wie gesagt, kompletter Code, dann man sich das genauer anschauen.

Gruss,

A.

Re: Statemachine -> Case Anweisung -> synthetisierbar -> Ungewollte Latches

Hallo A.,

vielen Dank für die Antwort.

ich habe das mit getakteten Prozessen hinbekommen.

Grüsse,
Bianka

Re: Statemachine -> Case Anweisung -> synthetisierbar -> Ungewollte Latches

Ok, schön. Dann sind wohl auch die Latches weg :-)

Gruss,

A.