Ist dieser Microcode Control Store als Hardware-Implementierung realistisch?

In einer einfachen Steuereinheit mit mikrocodierter Sequenzierung verwende ich ein ROM, um die Sequenzen von Steuersignalen zu speichern. Der Befehl bildet die oberen 8 Bits der ROM-Adresse, und die unteren 8 Bits werden durch einen Zähler gebildet, der an der fallenden Flanke des Takts inkrementiert wird.

Die Nulladresse des ROM enthält das Signal zum Laden eines Befehls in das Befehlsregister, wodurch das ROM auf diese Adresse zeigt und die Daten dort der Reihe nach ausgibt. Nachdem die Anweisung abgeschlossen ist, gibt das ROM Bits aus, um das Anweisungsregister und den Mikrocodezähler zu löschen, wodurch der gesamte Prozess neu gestartet wird. Wenn diese Bits hoch gesetzt werden, wird die ROM-Adresse sofort zurückgesetzt und die Bits gehen sofort niedrig.

Mein Ziel ist es, diese Schaltung mit Logik der Serie 7400 und einem EEPROM zu implementieren, aber ich bin misstrauisch, dass meine Methode, die ROM-Daten zum asynchronen Zurücksetzen ihrer eigenen Adressregister zu verwenden, eine Wettlaufbedingung oder einen anderweitig ungültigen Zustand einführt. Ist diese Methode akzeptabel. Wenn nicht, was ist der geeignete Weg, dies zu tun?

Logisim-Schaltplan für einen Mikrocode-Steuerspeicher.

Antworten (1)

Ich nehme an, Sie sprechen hier von einem asynchronen Reset.

Der sicherste Weg ist, den Reset durch ein Register zu leiten. Auf diese Weise bleibt es aktiviert, auch wenn die Eingabe in das Register wegfällt.

Wie so oft steckt der Teufel im Detail:

  1. Das Register gibt einen verzögerten Reset aus, daher müssen Sie den Reset möglicherweise 1 Taktzyklus früher aktivieren. (Hängt davon ab, wie Ihre Schaltung funktioniert)

  2. Sie müssen dann das Zurücksetzen mit der Nicht-Uhr UND ausführen, damit es nur während der ersten Hälfte des Taktzyklus aktiv ist. (Wie Sie es jetzt tun) Wenn Sie das nicht tun, haben Sie eine andere Rennbedingung: Ihr Reset verschwindet zur gleichen Zeit wie Ihre Uhr steigt.