Pegelsignal gegen Impuls
Ein eine halbe Sekunde lang gedrückter Taster erzeugt ein Pegelsignal, das über Dutzende Takte hinweg hoch bleibt. Viele Schaltungen — etwa ein Zähler, der pro Tastendruck einmal weiterzählen soll, nicht einmal pro Takt, den die Taste zufällig gedrückt bleibt — brauchen diesen Pegel als Impuls: ein Signal, das im Moment der Änderung für genau einen Takt hoch wird und danach wieder abfällt, unabhängig davon, wie lange der Eingang anschließend hoch bleibt.
Aufbau aus einem Flip-Flop und einem AND-Gatter
Der klassische Flankendetektor verzögert das Signal um einen Takt durch ein D-Flip-Flop und verknüpft dann das aktuelle Signal per AND mit der invertierten, verzögerten Kopie:
- Impuls = A · ¬A_prev, wobei A_prev der vor einem Takt abgetastete Wert von A ist.
- In dem Moment, in dem A von 0 auf 1 springt, bleibt A_prev noch genau einen Takt lang 0, sodass das AND kurz eine 1 liefert — genau ein Impuls pro steigender Flanke, egal wie lange A danach hoch bleibt.
EDGE_DET und FALL_DET in Boolflow
Boolflow liefert diese Schaltung fertig als EDGE_DET- (steigende Flanke) und FALL_DET-Block (fallende Flanke). Führen Sie einen gehaltenen INPUT-Schalter durch einen davon, bevor er den Takteingang eines Zählers erreicht, und der Zähler zählt genau einmal pro Umschalten weiter, statt bei jedem Simulationsschritt, in dem der Eingang hoch bleibt, davonzulaufen.
Das verwandte Problem: Frequenzteilung
Ein anderes, aber verwandtes Bedürfnis ist es, aus einem schnellen Takt einen langsameren, regelmäßigen zu erzeugen, statt aus einem Pegel einen einmaligen Impuls. Boolflows CLK_DIV-Block halbiert die Frequenz eines CLOCK-Signals bei jeder Verkettung — dasselbe Umschaltverhalten, das Binärzähler überhaupt erst zählen lässt.