Entprellen eines mechanischen Schalters
← Alle Artikel

Entprellen eines mechanischen Schalters

5 Min

Ein Schalter schaltet nicht sauber um

Die Metallkontakte eines echten mechanischen Schalters prallen bei jedem Drücken oder Loslassen physisch gegeneinander und erzeugen einen Schwall schneller, unerwünschter 0/1-Übergänge, der einige Millisekunden dauert, bevor sich das Signal endgültig einpendelt — viel zu schnell, um es mit bloßem Auge zu sehen, aber schnell genug, um von einer Schaltung, die viele Male pro Sekunde abtastet, als Dutzende separater Tastendrücke gelesen zu werden. Boolflows eigene Simulation ist idealisiert und wird dieses Prellen nicht nachbilden, aber jede Schaltung, die auf echter Hardware laufen soll, muss dafür vorsorgen.

RohEntprelltPrellen

Abtastung in ein Schieberegister

Die Standardlösung tastet das Schaltersignal in ein kleines Schieberegister mit einer moderaten, festen Rate ab — getaktet von einem durch CLK_DIV verlangsamten Takt, deutlich unter der Prellfrequenz — und akzeptiert einen neuen Wert erst, wenn jedes im Register gehaltene Bit übereinstimmt.

Übereinstimmung als Akzeptanzbedingung

Speisen Sie die vier Ausgangsbits eines SHIFT4 parallel in ein AND4 und ein NOR4: Das AND4 gibt erst dann 1 aus, wenn vier aufeinanderfolgende Abtastungen alle 1 waren, und das NOR4 erst dann, wenn alle vier 0 waren. Sobald eines der beiden hoch wird, ist das die entprellte, stabile Ablesung — alles, was noch prellt, hat eine Mischung aus 0en und 1en im Register und erfüllt keine der beiden Bedingungen.

Probieren Sie es selbst

Bauen Sie diesen Filter im Schaltungseditor, getaktet von einem langsamen CLOCK, und speisen Sie dann seinen stabilen Ausgang — statt des rohen INPUT-Schalters — in einen Flankendetektor vor einem Zähler ein — genau die Kombination, die ein echter, per Taster gesteuerter Entwurf braucht.

Einen Entprellfilter im Schaltungseditor bauen →