Wie Dave Tweed bemerkt, muss, sofern ein FPGA keine Flip-Flop-Hardware enthält, die an beiden Flanken eines Takts arbeiten kann, eine eigene Logik geschrieben werden, um das gewünschte Verhalten unter Verwendung herkömmlicher Single-Edge-Flip-Flops zu implementieren. Während es eine Reihe verschiedener Möglichkeiten gibt, eine Schaltung zu implementieren, die sich ähnlich wie ein Doppelflanken-Flipflop verhält, fügen solche Schaltungen im Allgemeinen einige zeitliche Einschränkungen hinzu, die sich von denen unterscheiden, die mit Flipflops verbunden sind.
Ein einfacher Ansatz besteht beispielsweise darin, ein Modul zu haben, das zwei Xors mit zwei Eingängen und ein Paar von "T" -Flipflops kombiniert (wobei der Zustand des Eingangs, wenn ein Taktimpuls eintrifft, angibt, ob diese Taktflanke den Ausgang umschalten soll), eins ausgelöst durch eine steigende Flanke und eine ausgelöst durch eine fallende Flanke. Der Ausgang des Moduls ist das xor der Ausgänge der Flip-Flops, und der Eingang zu beiden Flip-Flops ist das xor des Ausgangs des Moduls und seines Eingangs.
Eine auf diese Weise entworfene Schaltung funktioniert im Wesentlichen wie ein Doppelflanken-Flipflop, allerdings mit längeren Einrichtungs- und Ausbreitungszeiten, jedoch mit einer zusätzlichen zeitlichen Einschränkung. Ein normales Flip-Flop, das sich nicht auf einem Rückkopplungspfad befindet, hat nichts dagegen, wenn der Beginn einer Taktflanke eine Reihe von Runt-Impulsen aufweist, vorausgesetzt, der Takt stabilisiert sich auf einem gültigen Niveau und vorausgesetzt, die Einstellzeitbeschränkung, gemessen vor dem Der erste Runt-Impuls und die Haltezeit- und Taktaktivitätszeitbeschränkungen, gemessen ab dem Zeitpunkt, an dem der Taktimpuls stabil aktiv ist, werden erfüllt. Das Verhalten des Flip-Flop-Ausgangs ist während der Zeit, in der der Takt instabil ist, undefiniert, wird jedoch definiert, nachdem sich der Takt stabilisiert hat. Das Double-Xor-Double-Flop-Modul würde die zusätzliche zeitliche Einschränkung hinzufügen, dass jede Taktflanke, die den Ausgang verändern würde, einen sicheren Abstand zu jeder anderen Taktflanke haben muss, die dies tun könnte. Wenn diese Einschränkung nicht erfüllt wird, z. B. indem drei Taktflanken sehr nahe beieinander liegen, während der Eingang nicht mit dem Ausgang übereinstimmt, kann der Ausgang in einem unbestimmten oder metastabilen Zustand belassen werden (beachten Sie, dass Szenarien mit einer geraden Anzahl von Flanken kein Problem darstellen Da solche Szenarien nur Runt-Impulse beinhalten würden, sind der Drei-Kanten-Fall (oder andere ungerade Fälle größer als eins) ein Problem, da nach den Runt-Impulsen ein gültiger Impuls liegen würde.
Ein alternatives Schaltungsdesign wäre, die beiden Flip-Flops wie oben zu haben, aber ihre Ausgänge einem Multiplexer zuzuführen. Diese Schaltung würde nicht durch Runt-Impulse in einen schlechten Zustand versetzt, und ihre Taktungsbeschränkungen wären die gleichen wie die zugrunde liegenden Latches, aber sie hätte den Nachteil, dass ein Ausgang, der hoch war und bleiben sollte (oder niedrig war und niedrig bleiben sollte) ) könnte also kurz auf einer Uhrenkante stören. In einigen Schaltkreisen wäre das nicht wichtig, in anderen jedoch.
Es wäre wahrscheinlich für Logiksynthesewerkzeuge möglich, Doppelflanken-Flipflops automatisch zu implementieren, indem analysiert wird, welche Zeiteinschränkungen als wichtig spezifiziert wurden, aber dies wäre etwas schwierig. Dies würde auch das Risiko erhöhen, dass eine kleine Änderung an einem Design zu einer wesentlichen Änderung der Implementierung und damit zu einer signifikanten und unerwarteten Änderung des Verhaltens führen könnte.