Case nur mit Takt möglich?

OP #3129727
Lesenswert?

Guten Tag,
ich arbeite mich gerade etwas in VHDL ein und versuche einen BCD to 
7-Segment Wandler zu simulieren.
Die Architektur sieht bei mir so aus:
1
ARCHITECTURE seg7_a OF seg7_e IS
2
  BEGIN
3
    PROCESS
4
      BEGIN
5
        CASE bcd_i IS
6
        WHEN "0000" => led_o <= "1111110";  -- 0
7
        WHEN "0001" => led_o <= "0110000";  -- 1
8
        WHEN "0010" => led_o <= "1101101";  -- 2
9
        WHEN "0011" => led_o <= "1111001";  -- 3
10
        WHEN "0100" => led_o <= "0100111";  -- 4
11
        WHEN "0101" => led_o <= "1011011";  -- 5
12
        WHEN "0110" => led_o <= "1011111";  -- 6
13
        WHEN "0111" => led_o <= "1110000";  -- 7
14
        WHEN "1000" => led_o <= "1111111";  -- 8
15
        WHEN "1001" => led_o <= "1111011";  -- 9
16
        WHEN OTHERS => led_o <= "1111110";  -- 0
17
        END CASE;
18
        WAIT;
19
    END PROCESS;
20
END seg7_a;
Wenn ich eine Simulation starte, kommt egal bei welcher BCD Kombination 
immer der letzte Wert (hier WHEN OTHERS => led_o <= "1111110";  -- 0).
Ist so ein Case Konstrukt nur mit einem Takt möglich? Oder warum wird 
immer der letzte Wert genommen?
Gast #3129748
Lesenswert?

Martin S. schrieb:
> WAIT;

Hm, was genau könnte wohl eine bedingungslose Wait Anweisung machen? 
Genau, sie wartet bedingungslos, für immer und ewig, auf alle Zeiten, 
aus, finito... ;-)  Dein Prozess wird nur einmal zur Initialisierung 
ausgeführt und dann nie wieder. Ohne das wait funktioniert das. Auch 
ohne Takt.
OP #3129762
Lesenswert?

Okay, das macht Sinn. Nur wenn ich das WAIT; rauslösche läuft die 
Simulation ohne Ende und ich bekomm beim kompilieren die Meldung:
Possible infinite loop: Process contains no WAIT statement.
Wie kann ich das noch beheben? Es muss also auf jeden Fall irgendwo ein 
wait eingebaut werden oder?
Gast #3129780
Lesenswert?

Martin S. schrieb:
> Okay, das macht Sinn. Nur wenn ich das WAIT; rauslösche läuft die
> Simulation ohne Ende und ich bekomm beim kompilieren die Meldung:
> Possible infinite loop: Process contains no WAIT statement.
> Wie kann ich das noch beheben? Es muss also auf jeden Fall irgendwo ein
> wait eingebaut werden oder?

oder dem process eine Sensitivityliste mitgeben, so dass er in der 
Simulation nur ausgeführt wird wenn sich ein Signal ändert.
1
    PROCESS (bcd_i)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren