mikrocontroller.net

Forum: FPGA, VHDL & Co. Dauerbrenner: Taster entprellen.


Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.elektroniknet.de/distribution/design-in...
(kommt ja hier auch immer wieder mal)

Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei dem Aufwand an ICs (2 bis 3 Stück pro entprellte Taste) ist es wohl
in den meisten Fällen einfacher, Umschalttaster mit nachgeschaltem
RS-Flipflop zu verwenden. Und wenn ein Mikrocontroller mit im Spiel ist,
macht man die Entprellung sowieso besser per Software.

Edit:

Ich sehe jetzt erst, dass das im FPGA-Forum gepostet wurde. Da liegt der
Fall natürlich ganz anders.

: Bearbeitet durch Moderator
Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mag vlt sein, dass die Schaltung für einige
Taster funktioniert, meiner Erfahrung nach
gibt's viele Taster, bei denen Fehlsignale
erzeugt werden (auch auf DebBoards bekannter
Hersteller).
Such einfach mal im Netz nach Taster und
Timing für den Schaltvorgang. Du wirst
überrascht sein.

Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ops, das mit dem Zahler habe ich falsch
gelesen, hab's für ein Shiftreg gehalten.
Ist aber trotzdem umständlich. Einfach
ein Zähler und damit ein Sample-Event
erzeugen. Die Zählerlänge muss naatürlich
vorher gemessen werden, ist von Board zu
Board unterschiedlich.

Autor: Harald W. (wilhelms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
berndl schrieb:

> http://www.elektroniknet.de/distribution/design-in...
> (kommt ja hier auch immer wieder mal)

Man könnte ja auch mal einfach im Tutorial des µC.net nachsehen.
https://www.mikrocontroller.net/articles/Entprellung

Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
war ja nur mal als Denkanstoss gemeint...
Und funktioniert ja fast genauso wie PEDAs SW-Implementierung im 
Controller...

Autor: Weltbester FPGA-Pongo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verwunderlich, daß Digi das jetzt publiziert. Was soll das? Werbung?

Die Schaltung ist ja Standard zur Erkennung von Flanken und zeitlicher 
Unterdrückung - wie will man es sonst machen?

So ist es aber nur intern benutzbar! Wenn sie es richtig machen würden, 
müssten sie das erste Signal noch einsynchen, also noch ein FF setzen, 
weil es im Kontext einen FPGA-Designs gfs aufgelöst wird.

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weltbester FPGA-Pongo schrieb im Beitrag #4702232:
> Wenn sie es richtig machen würden, müssten sie das erste Signal noch
> einsynchen
Nicht nötig. Denn das Signal geht ja garantiert nur auf 1 Flipflop. 
Deshalb können keine inkonsistenen Zustände im FPGA auftreten. Und 
Metastabilität ist jier sowieso kein Problem...

Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Hauptproblem bei dieser und vergleichbaren
Ansätzen ist der Resourcenverbrauch. Bei einem
Taster noch kein Problem, wenn man aber mehrere
Taster oder ein Tastenfeld (per MUX angesteuert)
hat, dann ist nunmal wie bei uCs der
Timerinterrupt-Ansatz der beste Weg. Da wird
einfach nur gesampelt (bzw. parallel dazu für
ein Tastenfeld geMUXt) und man erhält alle
5-10 ms einen "perfekten" Zustand.

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
berndl schrieb:
> Und funktioniert ja fast genauso wie PEDAs SW-Implementierung im
> Controller...
Naja, der Trick an dieser Implementierung sind die "seitlichen" Zähler, 
wo das erste Zählerbit in einem Byte und das zweite Bit im anderen Byte 
ist. Und somit pro Rechenoperation gleich 8 Zähler auf einmal zählen. 
Das lässt sich so nicht auf FPGAs übertragen, weil es dort ja keine 
Byte-Orientierung gibt...

Ein etwas anderer Ansatz ist es, eine Pegeländerung des Eingangssignals 
nicht ganz vorn zu detektieren, sondern den internen entprellten Pegel 
mit dem Eingang zu vergleichen. Dann kommt sowas wie beim MAX6816 
heraus:
http://www.lothar-miller.de/s9y/archives/4-Tastere...

Sigi schrieb:
> Das Hauptproblem bei dieser und vergleichbaren Ansätzen ist der
> Resourcenverbrauch.
Ein Rechenbeisüiel dazu: es sollen 20 Taster mit 20ms entprellt werden, 
der FPGA-Takt ist 50MHz, also 20ns pro Takt.

Pro Taster, der mit 20ms entprellt werden soll, dann ist dafür ein 20 
Bit (20ms/20ns = 1000000 = 20Bit) breiter Zähler nötig. Bei 20 Tastern 
wären das dann 400 Bits/Flipflops.

Deshalb ist es dort dann sinnvoll, einen einzigen Clock-Enable mit z.B. 
2ms zu erzeugen (2ms/20ns = 100000 = 17 Bits), denn dann reichen jeweils 
noch 3 Bit pro Taster für den Entprellzähler (7*3ms=21ms). In der Summe 
sind das dann bei gleicher Funktionalität nur noch 17+(20*3) = 77 
Flipflops. Der Ressourcenverbrauch wurde so auf 20% reduziert.

Peters Lösung für den Mikrocontroller hat sogar nur 2 Zählerbits pro 
Eingang (weil ja 2 Bytes zum Zählen für 8 Eingänge werdendet werden). 
Damit müsste der Vorteiler für den Clock-Enable also für 5ms auf 19 Bits 
aufgebohrt werden, dafür fallen dann pro Zähler nur noch 2 Bits an. Das 
Resultat sind damit 19+(2*20) = 59 Flipflops, und damit nur 15% der 
ursprünglich benötigten Anzahl.

: Bearbeitet durch Moderator
Autor: Weltbaster FPGA-Pongo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar M. schrieb:
> Weltbester FPGA-Pongo schrieb im Beitrag #4702232:
>> Wenn sie es richtig machen würden, müssten sie das erste Signal noch
>> einsynchen
> Nicht nötig. Denn das Signal geht ja garantiert nur auf 1 Flipflop.
> Deshalb können keine inkonsistenen Zustände im FPGA auftreten. Und
> Metastabilität ist jier sowieso kein Problem...

Das sehe ich anders. In einer echten Schaltung hättest Du Recht, aber 
bei einem FPGA kann alles mit allem zusammengerechnet und gekürzt werden 
und je nachdem, wie die Schaltung dahinter aussieht, werden Register, 
die das Synchronisieren tätigen auch gerne mal absorbiert oder 
dupliziert.

Man muss unbedingt mit einem Constraint sicherstellen, dass das nicht 
passiert.

Und das dopppelte Eintakten ist zumindest bei schnellen Schaltungen ein 
immer noch existierendes Problem- weenn auch theoretisch.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.