if-while abfrage

Gast #2086100
Lesenswert?

Hallo,

ich versuche eine Ampelsteuerung zu programmieren.
Bei der beschreibung soll ja der Zustandsautomat durchlaufen bei 
betätigung der Fussgänger Ampel. Es soll auch einen Knopf geben bei dem 
man ein störsignal beim der Ampel anzeigt.(Gelb blinken).

Ich dachte an sowas


case vState is
 when 0 =>
  ao_led(5 downto 0) <="001100";--Leds entsprechend leuchten

  if cBTN0= '1' then --wenn btn0 getrückt wird
  vState:=vState+1;
  elsif  cBTN2= '1' then  -- wenn btn1 gedrückt wird
  while (cBTN3 != 1 ) loop

-- solange durchlaufen bis btn3 gedrückt wird

  ao_led(10)<= Q(24); -- led blinken lassen
  end loop;
  end if;
 when 1 => .....


ich kriege aber diesen error für while schleife
Line 146. parse error, unexpected EQ
Gast #2086184
Lesenswert?

While schleifen werden während der Synthese abgerollt und jeder 
durchlauf wird in Slices abgebildet. Deshalb ist eine schleife mit 
unbekannter anzahl Durchläufen generell nicht synthesefähig. Deine 
Denkweise zeigt, dass du den grundlegenden FPGA aufbau noch nicht 
verinnerlicht hast.
Ausserdem scheint mir eine Ampelsteuerung wohl kaum die richtige Aufgabe 
für einen FPGA zu sein.
Moderator (Firma: Titel) Persönliche Seite #2086377
Lesenswert?

TT schrieb:
> ich versuche eine Ampelsteuerung zu programmieren.
> Ich dachte an sowas
Vergiss diese "Programmier"-Denkweise.
FPGAs werden nicht programmiert, sondern Hardware beschrieben, die 
darauf abgebildet werden soll. Und da gibt es nur Logik und Flipflops. 
Sowas wie du da beschrieben hast, kann nicht abgebildet werden...

Leih dir mal ein Buch zum Thema VHDL-Synthese aus (Reichardt/Schwarz). 
Dann könnte dir einiges klar werden.

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