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


von Ratloser (Gast)


Lesenswert?

Ich habe folgenden Code, der einen Fehler produziert, wenn ich "others" 
weglasse. Warum ist das so?
1
CASE counter(3 downto 0) IS
2
  WHEN "0000" => output <= out01;
3
      select <= sel01;
4
  WHEN "0001" => output <= out02;
5
      select <= sel02;
6
7
(weitere cases 0010 ... 1110)
8
9
  WHEN "1111" => output <= out16;
10
      select <= sel16;
11
12
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 ?

von Falk B. (falk)


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

von Jan M. (mueschel)


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.

von Ratloser (Gast)


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 ...

von Jan M. (mueschel)


Lesenswert?

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

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.