Forum: FPGA, VHDL & Co. Aktionen auf Button-Druck auslösen


von Gregor P. (Gast)


Lesenswert?

Hallo,

ich habe auf einem Board 4 User-Button. Je nach dem welcher Knopf
gedrückt wurde, möchte ich verschiede Aktionen auslösen. Wie formuliere
ich so etwas in VHDL. Kann ich einfach sagen:

if(button1 ='1) then
     aktion := 1;
elsif (button2 ='1') then
     aktion := 2;
end if;

if(aktion = 1) then
      .....
elsif (aktion =2) then
      .....
end if;

Kann das funktionieren ? Hat einer eine bessere Lösung ? Wie realisiere
ich bestimmte Aktionen auf Knopfdruck verschiedener Button ?

Danke !!!!

von TheMason (Gast)


Lesenswert?

Zuerst würde ich die Buttons entprellen.
Z.B. so :

signal button1_z1 : std_logic;
signal button1_z2 : std_logic;
signal button1_z3 : std_logic;
signal button1_out : std_logic;

..


if clk'event and clk = '1' then
  button1_z3 <= button1_z2;
  button1_z2 <= button1_z1;
  button1_z1 <= button1_in;

  -- abfrage für button gedrückt
  if button_z1 = '1' and button1_z2 = '1' and button_z3 = '0'
then
    button1_out <= '1';
  else
    button1_out <= '0';
  end if;

  -- abfrage für button losgelassen
  if button_z1 = '0' and button1_z2 = '0' and button_z3 = '1'
then
    button1_out <= '1';
  else
    button1_out <= '0';
  end if;

end if;

Die Entprellten Buttons würde ich dann eine State-Machine steuern
lassen. Damit hat man dann auch die möglichkeit auf eine
gedrückt-gehaltene taste zu reagieren (auto-repeat). allerdings sollte
man das entprellen der taste mit nur ca. 100Hz machen. Es macht kein
sinn eine Taste mit 50MHz oder mehr zu entprellen.

Gruß
Rene

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.