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?
hier ist nochmal der Code.. in dem anderen habe ich was falsches auskommentiert...
Welches Signal ist undefiniert? Ich habe noch NIE gesehen das man ne State-machine mit Variablen realisiert... Geht das überhaupt? Ich denke nicht.
Geht, trägt aber nicht unbedingt zur Übersichtlichkeit bei.
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.
@ 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
@ 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...
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).
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.