Forum: FPGA, VHDL & Co. VHDL Case statement covers only 4 out of 81 cases.


von 123 (Gast)


Lesenswert?

Hi,
Modelsim meldet bei folgendem cod den feler:Case statement covers only
4 out of 81 cases.
Aber warum? Bei 2 bit gibt es nur 4 Möglichkeiten und nicht 86!

CASE instruction_register( 15 DOWNTO 14 ) is

 when "00" => linear_address <= DPP0(3 downto
0)&(instruction_register( 13 DOWNTO 0 ));
when "01" => linear_address <= DPP1(3 downto
0)&(instruction_register( 13 DOWNTO 0 ));
when "10" => linear_address <= DPP2(3 downto
0)&(instruction_register( 13 DOWNTO 0 ));
when "11" => linear_address <= DPP3(3 downto
0)&(instruction_register( 13 DOWNTO 0 ));


end case;

von Tom (Gast)


Lesenswert?

der Datentyp std_(u)logic kennt aber 9 Zustände, was bei zwei Stellen 81
Kombinationen ergibt ...

von Rick Dangerus (Gast)


Lesenswert?

Also einfach noch einen default-Zweig hinten dran hängen und fertig...

Rick

von +++ (Gast)


Lesenswert?

Man sollte immer auch ein "when others" hinzufügen, auch wenn es
eigendlich überflüssig ist, dann passiert das nicht. Du musst bedenken,
dass man bei den erweiteren Signaltypen nicht nur mit  0 und 1 arbeitet,
sondern auch mit undefinierten, starken oder schwachen Zuständen.
Alternativ könnte man bit_vector nehmen, der kennt nur 0 und 1. So
sollte man das Probelm aber nicht lösen.

+++

von ThomasW (Gast)


Lesenswert?

Derartige Überlegungen machen auch für die Synthese Sinn. Z.B. beim
Anlaufverhalten nicht resettbarer fsm.

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.