Forum: FPGA, VHDL & Co. if-while abfrage


von TT (Gast)


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

von Falk Brummer (Gast)


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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.

von TT (Gast)


Lesenswert?

Alles klar, danke für die tips.

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.