Case wählt 1 Zustand aus einer Liste von Möglichkeiten aus. Was sollte
Case denn hier machen, wenn vect "00100" ist:
1 | case vec is
|
2 | when "--100" => y0 <= '1'; start <= '1'; -- Ja, was denn? Das hier ...
|
3 | :
|
4 | when "001--" => y0 <= '1'; start <= '1'; -- ... oder das hier?
|
Dabei ist es in erster Näherung irrelevant, dass hinterher das selbe
passieren soll. Es geht bereits die Auswahl schief...
Zudem ist "don't care" nicht das, was es übersetzt heißt, sondern ein
definierter Wert im Datentyp std_logic.
http://www.cs.sfu.ca/~ggbaker/reference/std_logic/1164/std_logic.html
Und deshalb wird das hier
1 | case vec is
|
2 | when "--100" => y0 <= '1'; start <= '1';
|
nur dann wahr, wenn vec genau "--100" ist!!!
Nur, wenn z.B. einem Signal ein Wert '-' und parallel ein anderer Wert
zugeweisen wird, kann das Signal mit der Resolution-Table aufgelöst
werden.
[vdhl]
a <= '0';
a <= '-';
[/vhdl]
wird also a='0' ergeben.