www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Problem mit CASE Anweisung


Autor: Ratloser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe folgenden Code, der einen Fehler produziert, wenn ich "others" 
weglasse. Warum ist das so?
CASE counter(3 downto 0) IS
  WHEN "0000" => output <= out01;
      select <= sel01;
  WHEN "0001" => output <= out02;
      select <= sel02;

(weitere cases 0010 ... 1110)

  WHEN "1111" => output <= out16;
      select <= sel16;

END CASE;
Es sind alle 16 Cases ausdrücklich beschrieben. Der Fehler im ModelSim 
lautet : "Case Statement covers only 16 of 6152 states."

Woher kommt diese Zahl und warum wird das angemahnt? Es gibt doch keine 
"others", denn der selektierende Vektor ist wirklich nur ein "3 downto 
0"

Idee ?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Ratloser (Gast)

>Es sind alle 16 Cases ausdrücklich beschrieben. Der Fehler im ModelSim
>lautet : "Case Statement covers only 16 of 6152 states."

Tja, das Problem ist nur, dass der Typ std_logic nicht nur 0 und 1 
kennt, sondern auch U, X, Z, weak low, weak HIGH etc, ich glaub 9 
Zustände. Die müssen auch alle abgedeckt werden.

MFG
Falk

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da fehlen noch W: weak unknown und -: don't care.
Damit wären es dann 9 Zustände und somit 9^4 = 6561 Möglichkeiten.
Aber warum redet die Fehlermeldung von 409 Möglichkeiten weniger?

Ich würde ja sagen, man könnte das don't care außer acht lassen, da 
diese Zustände bereits durch andere abgedeckt sind, allerdings käme man 
dann nur noch auf 4096 Möglichkeiten.

Autor: Ratloser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das verstehe ich, das komische ist nur, daß ich noch andere Muxer im 
Design habe und er dort nicht meckert ...

Rein synthesemäßig muss es js sowieso Wurscht sein, da die Leitungen ja 
einen Zustand haben. Nehme ich den "others"-Konstrukt nämlich jetzt 
rein, informiert mich die Synthese, daß es überflüssig sei. So gut 
druchdacht ist die HDL-toolchain ...

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fuer die Synthese ist es überflüssig, für die Simulation nicht. Mit wait 
und ähnlichen Statements ist es ja im Prinzip genauso.

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.