Hallo, ich habe in der Postfit Simulation an einer Stelle einen Takt lang einen undefinierten Zunstand 'X' auf einem Signal. Zu diesem Zeitpunkt interessiert mich der Wert aber gar nicht und wird bis zur "wichtigen" Abfrage auch definiert (mit dem gewünschten Wert). Meine Frage nun, muss ich weiter nach möglichen Fehlern suchen? "Raucht" mir, falls ich dieses Design in einen CPLD flashe dieser ab? Danke!
Wenn du 'X' auf einem Signal hast, hast du mindestens zwei Prozesse, die das Signal beschreiben. Das kann aber nicht funktionieren, wenn diese Prozesse immer dann, wenn es nicht näher bestimmt ist, irgendwas schreiben, vielmehr brauchst du dann Tristate-Logik, der Prozess, der nichts besseres weiß, sollte also seinen Ausgang auf 'Z' legen.
ISt das wirklich so? Deutet das x IMMER auf konkurrierendes Schreiben ? Könnte die Ursache nicht auch darin liegen, daß ein Signal nicht initialisiert ist unddaher irgendwas falsch schaltet, sodaß es dann erst dadurch (im Simulator) dazu kommt - während es real garnicht passieren kann? Ich denke da ein Register im RAM, die etwas steuern, wobei der Simulator den Inhalt der REgister nicht sieht.
FPGA-Fragender wrote: > ISt das wirklich so? Deutet das x IMMER auf konkurrierendes Schreiben ? Ja; beim Datentyp std-logic(-vector) entsteht das "X" nur bei der Verknüpfung von "0" und "1" bzw. von "0" oder "1" mit "-". > Könnte die Ursache nicht auch darin liegen, daß ein Signal nicht > initialisiert ist unddaher irgendwas falsch schaltet, sodaß es dann erst > dadurch (im Simulator) dazu kommt - während es real garnicht passieren > kann? Nein. Für nicht initialisierte Signale gibt es beim Datentyp std-logic(-vector) eigens den Zustand "U" (uninitialized). Für nähere Informationen siehe Library ieee.std_logic_1164. Dort gibt's alle möglichen Zustände sowie die resolution table. > Ich denke da ein Register im RAM, die etwas steuern, wobei der Simulator > den Inhalt der REgister nicht sieht. Verstehe ich jetzt nicht so ganz. Wenn aus einem Baustein, den man nur als Black Box vor sich hat, ein "X" herauskommt, läuft im Baustein was schief. Eigentlich sollte jeder Baustein so gestaltet sein, dass er auch bei ungültigen Eingangskombinationen einen gültigen Ausgangswert liefert. "X" gehört da sicher nicht hinzu. MfG Patrick
Vielleicht, wenn aus einem Register, das im Simulator unbekannt ist, eine Konfiduration kommt, die Portrichtungen definiert ?
probier mal std_ulogic_vector anstatt std_logic_vector std_ulogic anstatt std_logic, dann müssen potenzielle Tri-State Konflikten früher identifiziert werden sein (nicht in der Laufzeit)
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.