Entprellung Taster - Debounder VHDL

OP #4150724
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.