Forum: FPGA, VHDL & Co. Entprellung Taster - Debounder VHDL


von Anon A. (marinco)


Lesenswert?

Morgen,



Unsere Aufgabe bestand es einen Inkrement Zählen einzubauen (FPGA) der 
nach drücken einer Taster um eins rauf gezählt wird (7-Segment DEZ).

Funktioniert schon.

Ich war für die Top entity verantwortlich und mein Freund für den 
debouncer(entprellen der taste).


:Debouncer

1
ButtonSync: process(CLK)
2
 begin
3
  if (CLK' event and CLK = '1')then
4
   bsync0 <= not Button_in;
5
   bsync1 <= bsync0;
6
  end if;
7
 end process ButtonSync;
8
9
 SampleGen: process (CLK)
10
 begin
11
  if (CLK' event and CLK ='1') then
12
   if (sample_counter = sample_count_max_c)then
13
    sample_counter <= 0;
14
    sample_pulse <= '1';
15
   else
16
    sample_counter <= sample_counter +1;
17
    sample_pulse <= '0';
18
   end if;
19
  end if;
20
 end process SampleGen;
21
         
22
23
Debouncer: process(CLK)
24
begin
25
  
26
  if(CLK'event and CLK = '1')then
27
    if(bsync1 = '0') then
28
      debounce_counter<= 0;
29
      BUTTON_out      <= '0';
30
    elsif(sample_pulse = '1') then
31
      if(debounce_counter = debounce_count_max_c)then
32
        BUTTON_out<='1';
33
      else
34
        debounce_counter <= debounce_counter +1;
35
      end if;
36
    end if;
37
  end if;
38
  
39
end process Debouncer;


Das 2 und 3 Prozess ist logisch für mich und zwar wir bei dem einen 
Prozess wird "clk" geteilt mit einmen Zähler realisiert  und beim 
letzten wird ein Zähler rauf gezählt> bestimmten treshold>BUTTON auf 1 
gesetzt

Der 1 Prozess verstehe ich nicht , als ich meinen Freund gefragt habe , 
meinte er nur , dass die Daten die vom Taster kommen asynchron sind und 
es zur einer Setup/Hold time Verletzung kommen würde und deshalb 
verbindet er die zwei Signalen mit einem flip flop.
Könntet ihr mir da vielleicht weiterhelfen ?

Falls jemand den Debouncer benötigt könnt ihr mich ruhig Fragen
Danke im Voraus, wenn jemand da weiterhelfen kann.

: Bearbeitet durch User
von asd (Gast)


Lesenswert?


von Anon A. (marinco)


Lesenswert?


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.