Ein anderer Ansatz, der noch sicherer zu sein scheint als der Ansatz "Async Assert / Sync Release", wäre ein asynchroner Reset-Detektor (ähnlich wie an anderer Stelle beschrieben, mit asynchronem "Assert" und synchronem "Release"), der jedoch die Ausgabe von hat Dieses Gate steuert alle nach außen gerichteten E / A-Geräte an, ohne dass asynchron etwas zurückgesetzt wird (außer dem Latch im Detektor selbst). Wenn man zwei asynchrone Rücksetzdetektoren verwendet, einen für E / A-Leitungen und einen zur Speisung des synchronen Rücksetzdetektors, und wenn man den einen für E / A-Leitungen so auslegt, dass er nur durch Rücksetzimpulse ausgelöst wird, die solide genug sind, um zuverlässig zu sein Wenn Sie den Hauptdetektor auslösen, kann es vorkommen, dass die Ausgänge nicht einmal fehlerhaft sind, wenn die CPU nicht zurückgesetzt wird. Beachten Sie, dass in diesem Fall ein Reset-Impuls mit zulässiger Länge die Ausgänge asynchron zurücksetzt.
Eine andere zu berücksichtigende Sache ist, dass Systeme oft einige Register haben, von denen nicht angenommen wird, dass sie von einem Reset betroffen sind. Wenn ein asynchroner Reset die Schaltung treffen könnte, die in diese Register schreibt, könnte ein Reset-Impuls, der zum falschen Zeitpunkt eintrifft, diese Register blockieren, selbst wenn es sich um einen sauberen (nicht unrunden) Impuls handelt. Wenn beispielsweise der Code versucht, auf die Adresse 1111 zu schreiben, und ein Async-Reset, der unmittelbar vor dem Eintreffen eines Taktimpulses eintrifft, einen der Adreßzwischenspeicher auf Null zwingt, sobald der Taktimpuls eintrifft, kann dies zu einem fehlerhaften Schreiben auf die Adresse 1110 führen Man könnte mehrere interne Rücksetzleitungen mit kombinatorischen Verzögerungen verwenden, um sicherzustellen, dass die Registerschreibvorgänge deaktiviert wurden, bevor die Adresse blockiert wurde, wobei die synchrone interne Rücksetzlogik das Problem insgesamt vermeidet.
Übrigens, hier ist eine Schaltung, die das Konzept veranschaulicht. In der Nähe der unteren linken Ecke befinden sich zwei Logikeingänge zum Zurücksetzen. Einer wird einen "sauberen" Rücksetzimpuls erzeugen, und der andere wird einen wirklich kniffligen erzeugen. Die gelbe LED zeigt an, dass das Hauptsystem zurückgesetzt wurde. Die Cyan-LED zeigt die E / A-Aktivierung an. Wenn Sie einen sauberen Reset durchführen, werden die Ausgänge sofort zurückgesetzt. Wenn Sie einen icky-Reset ausführen, werden die Ausgänge entweder verzögert zurückgesetzt oder sie bleiben unverändert (im Simulator kann der Fall "Lassen Sie sie unverändert" nicht verursacht werden).