Woher wissen Module in einer asynchronen Schaltung, wann sie signalisieren müssen, dass ihr Ausgang bereit ist?

In letzter Zeit faszinieren mich asynchrone CPUs , die keine zentrale Uhr haben und stattdessen jedes Modul ein Signal sendet, wenn seine Daten verarbeitet wurden. Ich habe mich jedoch gefragt, woher solche Module eigentlich wissen, wann ihre Ausgabe bereit und stabil ist?

Im folgenden Beispiel einer asynchronen sequentiellen Schaltung kommunizieren einige Module mit einem einfachen Handshake-Protokoll wie folgt:

  1. Ein Modul wird durch ein READY-Signal von einem vorherigen Modul getriggert.
  2. Das Modul beginnt dann mit der Bearbeitung der Eingangsdaten.
  3. Das RECEIVED-Signal wird an das vorherige Modul gesendet, wenn der Eingang gelesen wurde und vom vorherigen Modul geändert werden kann.
  4. Wenn der Ausgang aktualisiert und stabil ist, wird ein BEREIT-Signal an das nächste Modul gesendet.
  5. Wenn das RECEIVED-Signal als Antwort gesendet wird, beginnt der Prozess von neuem.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

  • Ist es möglich, ein READY-Signal zu senden, wenn der Ausgang eines Moduls stabil ist, ohne die Ausbreitungsverzögerung der Modulschaltung speziell zu steuern?
    • Wenn nicht, was wäre der einfachste Weg, ein BEREIT-Signal basierend auf der Ausbreitungsverzögerung eines Schaltkreises im ungünstigsten Fall zu verzögern?

Antworten (2)

Ist es möglich, ein READY-Signal zu senden, wenn der Ausgang eines Moduls stabil ist, ohne die Ausbreitungsverzögerung der Modulschaltung speziell zu steuern?

NEIN.

Wenn nicht, was wäre der einfachste Weg, ein BEREIT-Signal basierend auf der Ausbreitungsverzögerung eines Schaltkreises im ungünstigsten Fall zu verzögern?

Für jedes Modul haben Sie eine angepasste Verzögerungsleitung, die aus einer Reihe von UND-Gattern besteht, die als Puffer eingerichtet sind.

Siehe Bilder unten:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Keine zentrale Uhr bedeutet nicht gar keine Uhr. M1 und M2 müssen nicht wissen, mit welcher Geschwindigkeit sie laufen; Sie müssen wissen, was der andere tut, und ein Protokoll zwischen ihnen definiert haben. Was sie beide tun müssen, ist sicherzustellen, dass sie Daten ordnungsgemäß voneinander übertragen, und dies muss für eine konsistente Datenübertragung synchronisiert erfolgen.

In Ihrem Diagramm haben Sie ein Anforderungs- / Bestätigungsübertragungssystem auf sehr hoher Ebene dargestellt. in der realen Implementierung kann es komplexer sein und Takte zwischen den Geräten enthalten.