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 !!!!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.