Forum: FPGA, VHDL & Co. State Machine: undefinierter Zustand.


von metallman (Gast)


Angehängte Dateien:

Lesenswert?

moin!

ich bins wieder. :)

Habe so ne schöne state-machine in vhdl geschrieben, die die Daten aus 
einem FIFO ausliest und die an Uart weiterschickt... Das Problem ist 
jetzt nur, das das Signal zum Auslesen in der Simulation irgendwie 
'undefined' bleibt..

Ich sehe meinen Fehler nicht. Kann mir jemand vielleicht helfen?

von metallman (Gast)


Angehängte Dateien:

Lesenswert?

und hier die testbench dafür...

von metallman (Gast)


Angehängte Dateien:

Lesenswert?

hier ist nochmal der Code..

in dem anderen habe ich was falsches auskommentiert...

von Mathi (Gast)


Lesenswert?

Welches Signal ist undefiniert?
Ich habe noch NIE gesehen das man ne State-machine mit Variablen 
realisiert... Geht das überhaupt? Ich denke nicht.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Geht, trägt aber nicht unbedingt zur Übersichtlichkeit bei.

von E. P. (metallman)


Lesenswert?

ich hab den Fehler gefunden und jetzt geht!
und zwar habe ich in der Testbench ein OUT-Signal gleich 1 gesetzt. Und 
genau dieses war undefiniert.

P.S.: ich finde die state machines mit variablen viel einfacher... 
obwohl, muss ich zugeben, habe noch in keinem Buch sowas gesehen.

von Falk B. (falk)


Lesenswert?

@ E. P. (metallman)

>P.S.: ich finde die state machines mit variablen viel einfacher...

Was ist daran bitte einfacher ? Der Unterschied im Aufwand ist Null, 
denn ob ich schreibe signal xyz oder variable xyz ist eagl. Im Synthese- 
und Simulationsegebins kann man sich mit Variablen aber fix ins Knie 
schiessen. Aber das ist wohl unausrottbar, wie UARTs mit RC-oszillator . 
. . :-(

MFG
Falk

von E. P. (metallman)


Lesenswert?

@  Falk Brunner (falk)

Naja.. ich bin ein VHDL-Anfänger, und kenne noch nicht alle Probleme und 
Tricks zum lösen... für mich war bisher die Verwendung von Variablen  in 
meinen State Machines auf jedem Fall übersichtlicher. Wahrscheinlich 
kommt es auch drauf an, was man damit implementiert...

von Morin (Gast)


Lesenswert?

Um es mal kraß zu sagen: Variablen sind nur zur Simulation. Sie bilden 
ein Programmiermodell nach welches im FPGA nicht umgesetzt werden kann.

Für Experten kann man das dann abschwächen. Dazu muss man sich aber gut 
auskennen was der Synthesizer aus Variablen macht. Wenn man das nicht 
weiß, dann gehts ganz schnell schief und du sitzt ewig dran einen Fehler 
zu suchen der sich über deinem (Anfänger-)Wissen bewegt (ist nicht bös 
gemeint, ich will dir nur klar machen worauf du dich einläßt).

von T.M. (Gast)


Lesenswert?

Normalerweise muss man sich nur paar Grundregeln in bezug auf Variablen 
merken, damit sie ihren "Schrecken" verlieren. Ich benutze sie trotzdem 
äusserst selten, hab hier ein Projekt mit bestimmt mehreren 10tausend 
Codezeilen und glaube nur 2 mal Variablen benutzt. Und da auch nur, um 
einen etwas komplexeren mathematischen Ausdruck in einem Takt berechnen 
zu können.

von E. P. (metallman)


Lesenswert?

alles klar...

ich habe nun alle Variablen durch signale ersetzt. Die Folge war, dass 
ich keine Warrnungen mehr bei der Synthese bekamm! Dass ist 
wahrscheinlich seehr gut...
 Die Simulation funktioniert genauso einwandsfrei, wie vorher.   (also 
wohl kaum unterschied zwischen variablen und signalen).

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
Noch kein Account? Hier anmelden.