when Anweisung mit Signal Abfrage (Fehlermeldung)

#1136291
Lesenswert?

Hallo!

Kann mir jemand sagen, warum ich bei dem Code unten (7 Segment Decoder) 
die Fehlermeldung "Error (10500): VHDL syntax error at sensor.vhd(58) 
near text "when";  expecting ";"" bekomme? Ich habe keine Ahnung warum 
die Meldung immer kommt. Ich vermute es liegt an dem Signal (S_z) was 
ausgelesen wird, oder an dem Prozess Aufruf. (Bin noch Anfänger).
1
process(S_z)
2
begin
3

4
  seg7_1 <= "0111111" when S_z = 0 else   -- 0
5
       "0000110" when S_z = 1 else   -- 1
6
       "1011011" when S_z = 2 else   -- 2
7
       "1001111" when S_z = 3 else   -- 3
8
       "1100110" when S_z = 4 else   -- 4
9
       "1101101" when S_z = 5 else   -- 5
10
       "1111101" when S_z = 6 else   -- 6
11
       "0000111" when S_z = 7 else   -- 7
12
       "1111111" when S_z = 8 else   -- 8
13
       "1101111" when S_z = 9;   -- 9
14
--       "1110111" when i = A else   -- A
15
--       "1111110" when i = B else   -- b
16
--       "0111001" when i = "1100" else   -- C
17
--       "1011110" when i = "1101" else   -- d
18
--       "1111001" when i = "1110" else   -- E
19
--       "1110001" when i = "1111";       -- F
20

21
end process;
Moderator (Firma: Titel) Persönliche Seite #1136296
Lesenswert?

Das ist eine concurrent-Beschreibung innerhalb eines Prozesses.
Sowas geht natürlich nicht... ;-)

Zwei Lösungen:
1) Mach den Prozess weg, dann gehts.
1
  seg7_1 <= "0111111" when S_z = 0 else   -- 0
2
            "0000110" when S_z = 1 else   -- 1
3
            ...
4
            "1101111" when S_z = 9;   -- 9

2a) Oder mach die Beschreibung mit
1
process(S_z) begin
2
   if   (S_z = 0)then seg7_1 <= "0111111";
3
   elsif(S_z = 1)then   ...
4
   end if;
5
end if;

2b) Oder besser als case:
1
process(S_z) begin
2
   case S_z is
3
   when 0 => seg7_1 <= "0111111";
4
   when 1 =>  ...
5
   end case;
6
end if;
#1136348
Lesenswert?

Danke für die schnell Antwort. Das dachte ich mir schon, das irgendetwas 
in der Art falsch war. ICh habe gerade wieder alles nen bisschen 
verändert. Decoder,Counter,Sensor jeweils als eigene Entity und dann als 
Komponente eingebunden. Jetzt muss ich wieder basteln...ist aber 
hoffentlich ne saubere Lösung.

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