www.mikrocontroller.net

Forum: FPGA, VHDL & Co. kurzzeitig 'X' Zustände beim Simulieren


Autor: Bryan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: der mechatroniker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: FPGA-Fragender (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Patrick N. (pneuberger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Frank U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht, wenn aus einem Register, das im Simulator unbekannt ist, 
eine Konfiduration kommt, die Portrichtungen definiert ?

Autor: Jonathan Swift (psihodelia)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.