Altifigence Academy

47 / 63 · Konzept

Reale Taster: Synchronisation, Entprellung und ein Ereignis

Asynchrone Synchronisation von Entprellung trennen und einen Entpreller aus aufeinanderfolgenden Samples entwerfen.

Ein Tastendruck kann viele Wechsel enthalten

Mechanische Kontakte können vor dem Einschwingen mehrfach schließen und öffnen. Zugleich ist der Taster zum Systemtakt asynchron. Synchronisieren behandelt die Übernahme in eine Taktdomäne; Entprellen fasst kurze wiederholte Wechsel zu einem stabilen Zustand zusammen. Zwei FlipflopsFlipflop Speichert den Eingang an einer festgelegten Taktflanke bis zur nächsten. Die Eingabe muss Setup und Hold erfüllen. Mehr erfahren beseitigen Prellen nicht automatisch.

Die Aufgaben der drei Stufen trennen
  1. Asynchroner Taster: Kontaktprellen und Asynchronität zum Takt treten gemeinsam auf
  2. Synchronisierung: Einen Ein-Bit-Pegel in die Taktdomäne übernehmen
  3. Entprellung: Nur aufeinanderfolgende stabile Abtastwerte als Zustandsänderung akzeptieren
  4. Flankenerkennung: Bei akzeptiertem 0→1 ein Ereignis von einem Zyklus erzeugen

Der Ablauf setzt einen lange genug gehaltenen Einzelbitpegel voraus. Kurze Pulse, kohärente Mehrbitübertragung und asynchrone Taktsignale selbst benötigen eigene Entwürfe.

Regel für N aufeinanderfolgende Samples

q sei der bestätigte Zustand, x der synchronisierte Eingang und count die Zahl aufeinanderfolgender Samples ungleich q. Bei x=q wird count=0. Bei x≠q wird gezählt; beim N-ten aufeinanderfolgenden Sample wird q=x und count=0.

Für N=3 und anfangs q=0 entspricht jede Spalte einem Abtastzeitpunkt des synchronisierten Eingangs, nicht der analogen Kontaktspannung.

Sample012345678
x010111101
count after010120010
q after000001111
rise event000001000
N=3: Gegenwert erst nach aufeinanderfolgenden Bestätigungen akzeptieren
Wellenformdaten anzeigen
Wellenformdaten: Jedes Zeichen steht für ein Intervall, ein Punkt hält den vorherigen Zustand und p ist ein Taktzyklus.
SignalWellenformBuswerte
sample2345234520 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8
x0101...01
q after0....1...
rise event0....10..

Latenz und Zählerbreite ausdrücklich festlegen

Bei Abtastabstand TsT_s dauert die Bestätigung je nach Eingangsphase etwa (N−1)Ts(N-1)T_s bis NTsNT_s, zusätzlich zur Synchronisierlatenz. Eine konservative Forderung „10 ms stabil“ muss auch den Abstand zwischen erstem und letztem Sample berücksichtigen. Kurze Wechsel dazwischen können unbemerkt bleiben; gleiche Samples beweisen keine durchgehend konstante Spannung. Schaltercharakteristik und Abtastbedingungen sind gemeinsam festzulegen.

Speichert count nur 0 bis N−1, benötigt es max⁡(1,⌈log⁡2N⌉)\max(1,\lceil\log_2 N\rceil) Bit. Behandeln Sie N=1: Schon das erste abweichende Sample muss bestätigt werden, daher zählt die Reihenfolge des N−1-Vergleichs.

Ein Tastendruck, ein Ereignis

Für bestätigten Folgezustand q_next gilt rise=q‾ qnextrise=\overline q\,q_{next}. Die Tabelle erzeugt das Ereignis im selben Sample wie die Bestätigung. Ein Vergleich von q mit einem separat um einen Zyklus verzögerten RegisterRegister Speichert einen Zustand aus mehreren Bits. Die synchronen Register dieses Kurses übernehmen festgelegte Eingaben an Taktflanken. Mehr erfahren kann je nach Beobachtung zusätzliche Latenz haben. Spezifizieren Sie auch, wann das Ereignis konsumiert wird.

Selbst ausprobieren

Für N=3, q=0 und Eingaben 1,1,0,1,1,1: An welchem Sample wechselt q? Wie breit ist count für N=8 und Werte 0–7?

Erklärung lesen

Die 0 im dritten Sample setzt die Serie zurück; das sechste bestätigt 1. 0–7 benötigt drei Bit. Eine andere Implementierung, die bis 8 speichert, benötigt vier; prüfen Sie zuerst den Wertebereich.

Deine Auswahl gilt für diesen Browser. Du kannst sie jederzeit in der Fußzeile ändern.