Comme le note Dave Tweed, sauf si un FPGA comprend du matériel de bascule qui peut fonctionner sur les deux bords d'une horloge, il sera nécessaire d'écrire votre propre logique pour implémenter le comportement souhaité en utilisant des bascules à bord unique conventionnelles. Bien qu'il existe un certain nombre de façons différentes de mettre en œuvre un circuit qui se comporte un peu comme une bascule bistable, ces circuits ajoutent généralement des contraintes de synchronisation qui sont différentes de celles associées aux bascules.
Par exemple, une approche simple consiste à avoir un module combinant deux xors à 2 entrées et une paire de bascules "T" (où l'état de l'entrée lorsqu'une impulsion d'horloge arrive indique si ce front d'horloge doit basculer la sortie), un déclenchée par un front montant et une déclenchée par un front descendant. La sortie du module sera le xor des sorties des tongs, et l'entrée des deux tongs sera le xor de la sortie du module et son entrée.
Un circuit conçu de cette façon fonctionnera essentiellement comme une bascule biface, mais avec des temps de configuration et de propagation plus longs, mais avec une contrainte de synchronisation supplémentaire. Une bascule normale qui n'est pas sur un chemin de rétroaction ne me dérangera pas si le début d'un front d'horloge a un tas d'impulsions runt à condition que l'horloge se stabilise à un niveau valide et à condition que la contrainte de temps de configuration, mesurée d'avant la la première impulsion d'exécution et les contraintes de temps de maintien et de temps actif sur l'horloge, mesurées à partir du moment où l'impulsion d'horloge est stable, sont respectées. Le comportement de la sortie de la bascule sera indéfini pendant le temps où l'horloge est instable, mais sera défini une fois l'horloge stabilisée. Le module double-xor-double-flop ajouterait la contrainte de synchronisation supplémentaire selon laquelle tout front d'horloge qui changerait la sortie doit être à une distance de sécurité de tout autre front d'horloge qui pourrait le faire. Ne pas respecter cette contrainte, par exemple en ayant trois fronts d'horloge très rapprochés alors que l'entrée ne correspond pas à la sortie, pourrait laisser la sortie dans un état indéterminé ou métastable (notez que les scénarios impliquant un nombre pair de fronts ne sont pas un problème , car de tels scénarios n'impliqueraient que des impulsions runt; le cas à trois fronts (ou d'autres cas impairs supérieurs à un) est préoccupant car il y aurait une impulsion valide après les impulsions runt.
Une autre conception de circuit serait d'avoir les deux bascules comme ci-dessus, mais d'introduire leurs sorties dans un multiplexeur. Ce circuit ne serait pas jeté dans un mauvais état par des impulsions runt, et ses contraintes d'horloge seraient les mêmes que les verrous sous-jacents, mais il aurait l'inconvénient qu'une sortie qui était élevée et devrait rester (ou était faible et devrait rester faible) ) pourrait donc glitch brièvement sur un bord d'horloge. Dans certains circuits, cela n'aurait pas d'importance, mais dans d'autres, ce serait le cas.
Il serait probablement possible pour les outils de synthèse logique d'implémenter automatiquement des bascules bistables en analysant quelles contraintes de synchronisation ont été spécifiées comme importantes, mais cela serait quelque peu difficile. Cela augmenterait également le risque qu'un petit changement apporté à une conception puisse entraîner un changement majeur dans la mise en œuvre et entraîner ainsi un changement de comportement significatif et inattendu.