DeLUru
Neuling
Beiträge: 5
|
|
DaMicha
Stammgast
Beiträge: 27 Ort: Rostock
|
Erstellt: 27.09.06, 12:03 Betreff: Re: Latch XY has unsafe behavior
drucken
weiterempfehlen
|
|
|
Hallo.
Das Problem tritt auf wenn Du ein Latch baust, dessen Enable Signal auch als Dateineingang dient. Das ist nicht gut! Ich habe leider nicht sehen können an welcher Stelle in Deinem Design das auftritt. Auf den ersten Blick sind aber im PublicProcess fast alle Signale bei Dir als Latch ausgelegt. Auch das ist nicht gut. Eigentlich sollte Dir der Synthetisierer das auch im Logfile mitteilen. Allgemein gilt, dass alle Latche, die Du nicht explizit geplant hast auch nicht ins Design gehören. Der Grund für das Vorhandensein der Latche ist, dass die betroffenen Signale nicht in jedem Zweig (if-else, case) voll beschrieben sind. Du solltest vielleicht erstmal alle Signal auskommentieren und nur mit act_state und nxt_state beginnen und mit jeden neuen Signal überprüfen (Dir darüber bewusst werden), ob es ein Latch hervorruft oder nicht. Was mir noch auffällt, Deine Counter-Values werden nicht in Registern gespeichert (sondern als Latch). Du braucht einen ähnliches Konstrukt wie bei den States. Also ein Clock-Prozess (bzw. den selben) der Speichert.
Gruß DaMicha.
[editiert: 27.09.06, 12:35 von DaMicha]
|
|
DeLUru
Neuling
Beiträge: 5
|
|
DaMicha
Stammgast
Beiträge: 27 Ort: Rostock
|
Erstellt: 27.09.06, 16:07 Betreff: Re: Latch XY has unsafe behavior
drucken
weiterempfehlen
|
|
|
Hallo DeLUru.
Aus Latch-Sicht sieht der StateMachine-Prozess schon ganz gut aus. Du solltest Dir aber nochmal die Signale clock_reference und act_data_idx anschauen. Der Counters-Prozess geht aus meiner Sicht so nicht. Erstmal brauchen Deine Werte einen (asynchronen) Reset, wie im Trigger-Prozess. Dann solltest Du das Rücksetzen zu clock_counter und data_counter mit in den Clock-Pfad nehmen, da Du Dir hier einen intern über Kombinatorik generierten asynchronen Reset gebaut hast. Das fliegt Dir "in echt" ganz bestimmt um die Ohren. Vielleicht solltest Du mal mit dem synthetisierten Design (besser noch nach dem Place and Route) simulieren. Wenn es damit nicht geht, dann funktioniert es im FPGA auch nicht. Hierbei musst Du aber beachten, dass Du die Setup- und Hold-Zeiten aus der Testbench für das Design einhältst. Also Eingangssignal nicht mit, sondern vor der Taktflanke setzen.
Gruß DaMicha.
|
|