8085-MPU; Durchlaufen einer Anweisung (Zeitdiagramme)

Lassen Sie mich die Schritte von ADD B so schreiben, wie ich sie bisher verstanden habe.

T0:

  • ALE geht hoch
  • Speicherort (z 2000 H ) wird vom Programmzähler zum Speicheradressenregister (das auf die übergebene Stelle zeigt) über genommen A 15 - A 8 Und A D 7 - A D 0 (die verriegelt wird)
  • ALE wird niedrig.

T1:

  • M E M R ¯ generiert wird, der Inhalt in 2000 H wird an den Befehlsdecoder weitergegeben.

T2 und T3:

  • Ich kann diese beiden Zustände wirklich nicht verstehen , ich kann das sehen M E M R ¯ Das Signal geht in T2 auf Low und es wird angegeben, dass die Addition in T3 erfolgt ist, aber die ALU die Summe ausgewertet hat, sobald das temporäre Register gesetzt ist. Ist das temporäre Register nur auf T3 gesetzt?

Ich konnte sehen, dass der OPCODE verschiedener Befehle unterschiedlich aufgeteilt ist, zum Beispiel für ADD B entsprechen die ersten 5 Bits ADD und die nächsten drei Bits dem gewünschten Register, aber für einen Befehl wie MOV B, C die ersten beiden Bits entspricht dem MOV und die nächsten 6 entsprechen den Registern. Wie werden OPCODES eigentlich richtig gelesen? Denn wenn es konstant wäre, dass die ersten 5 Bits immer der Anweisung entsprechen, dann ist es leicht zu verstehen, aber das ist nicht der Fall.

Kann zum Schluss noch jemand die Schritte in Bezug auf Zeitzustände für die Anweisung ADD B auflisten.

Der Programmzähler wird irgendwo auf dem Weg erhöht, aber ich weiß nicht, wo das passiert.

Im 8-Bit-Computer von Ben Eater gibt es einen separaten T-Zustand für die PC-Inkrementierung, aber 8085 ist weitaus fortschrittlicher, nehme ich an.

Warum brauchen Sie diese Informationen?
@BruceAbbott Ich weiß nicht, ich lerne gerade etwas über 8085 und verbinde es mit anderen ICs. Ich verstehe nur die letzten beiden T-States nicht.

Antworten (1)

es ist spät hier und ich darf nur ein bisschen helfen. Aber "ADD B" ist eine Anweisung vom Typ T4, wie Sie wahrscheinlich wissen. Es ist auch viele Jahre her, seit ich irgendetwas mit dem 8085A gemacht habe, und ich entschuldige mich im Voraus für etwaige Fehler. Aber hier geht es um die vier T- Zustände des "ADD B". (Ich schaue mir gerade das Datenblatt an, um etwas von meinem Gedächtnis aufzufrischen.) Beachten Sie, dass jeder unten gezeigte T- Zustand entweder eine 0 oder 1 hat, um die fallende Flanke oder die steigende Flanke der Uhr anzuzeigen. (Ein T- Zustand beginnt mit der fallenden Flanke.):

T1-0: A L E = 1 ; S 0 = 1 ; S 1 = 1 ; ICH Ö / M ¯ = 0 ; R D ¯ = 1 ; W R ¯ = 1 ; Verriegeln P C Zu M A R (was auf erscheint A 15 . . A 0 ); Aktiv fahren M A R .

T1-1: A L E = 0

T2-0: PC-Inkrement starten; R D ¯ = 0 ; Schweben M A R L ( A D 7 . . A D 0 ), um den Zugriff auf externe Schaltkreise zu ermöglichen

T2-1: Setzen Sie das PC-Inkrement fort (externe Schaltkreise können beginnen, Daten bereitzustellen A D 7 . . A D 0 )

T3-0: Stabilisierung des Befehlsbytes an A D 7 . . A D 0

T3-1: Verriegelung M D R aus A D 7 . . A D 0 und ermöglichen M D R Ausgang auf internen Bus

T4-0: Adressbus im Leerlauf; Verriegeln ICH R aus M D R und starten Sie die Dekodierung von ICH R

T4-1: Adressbus im Leerlauf; Entscheiden Sie, ob zwei weitere Zustände für die Anweisung erforderlich sind.

Das sind die offiziellen Angaben und beschreiben den Buszyklus nur aus der Außensicht.

Intern sieht es anders aus. Der ADD B-Befehl müsste den ALU-Opcode-Wert einrichten und die Registerdatei adressieren, um das B-Register auf den internen Bus und dann in das Temp-Register der ALU zu lesen (das andere Register ist der Akkumulator). Dieser Temp-Registerwert würde dann an einem der ALU-Eingänge vorhanden sein, und irgendwann würde der jetzt auf dem temporären Bus vorhandene ALU-Ausgang lange genug stabil sein, um den Rückschreibvorgang in den Akkumulator-Latch zu starten. All dies, bevor das Byte des nächsten Befehls den internen Bus verwenden müsste, um den MDR-Zwischenspeicherwert in den IR-Zwischenspeicher zu übertragen.

Aber die Essenz von T2 und T3 besteht darin, dem externen Speichersystem zu ermöglichen, auf die Anforderung nach einem Befehlsbyte zu antworten und diesen Bytewert in den 8085A zu bekommen. T4 dient zum Decodieren und Bestimmen, ob der Befehl mehr Zustände erfordert (oder nicht). Beachten Sie jedoch, dass T1 und möglicherweise T2 des folgenden Befehlszyklus auch verwendet werden können, um den vorherigen Befehl nach dem Decodieren abzuschließen (falls dies nicht erforderlich ist). alle hinzugefügten Busoperationen, wie z. B. Lesen/Schreiben.)

Vielen Dank für Ihre Antwort, ich bin sehr neu in der digitalen Elektronik, also bitte ertragen Sie meine Naivität hier; Was meinst du mit "ALU-Opcode-Wert einrichten"? Wann wird das B-Register adressiert und der Inhalt in das Temp-Reg übertragen? Das ist der letzte Schritt richtig? da die ALU ständig die Summe aus beiden berechnet (ja, deswegen haben wir ja einen Puffer oder?) Was macht eigentlich MDR?
@Aravindh Die ALU hat ihren eigenen Opcode, um ihr mitzuteilen, dass sie addieren oder subtrahieren oder eine logische Operation ausführen soll. Das Decodieren der Anweisung wird dies als Teil des Decodierungsprozesses herausarbeiten. Sicher, die ALU kann kontinuierlich arbeiten, aber Sie können nicht immer zulassen, dass ihr Ausgang den internen Bus ansteuert, der möglicherweise aus anderen Gründen verwendet wird. Das MDR ist das "Speicherdatenregister".
Ja, ich verstehe, dass die ALU nicht weiter Werte auf den Bus schreiben kann, ich meinte, das ist der Grund, warum wir einen Puffer zwischen den Bus und die ALU einbauen, richtig? Wann wird der Wert des B-Registers in das temporäre Register übertragen? Noch eine Frage: Was meinen Sie mit „entscheiden“, was ist der interne Entscheidungsprozess? Ich meine, wenn es mehr T-States nehmen müsste, wie wird es "entscheiden" und was bedeutet "Float MARL"?
@AravindhVasu Das B-Register muss adressiert werden (es befindet sich in einer Registerdatei mit mehr als einem Register). Wie genau das funktioniert, bleibt den Designern überlassen. Aber irgendwie muss es doch gehen. Dieser adressierte Wert muss einen Tri-State-Puffer zum Bus passieren, der aktiviert werden muss. Dann muss das Temp-Register diesen Buswert zwischenspeichern. Der Dekodierungsprozess richtet all dies oft mit einer Zustandsmaschine und daraus abgeleiteten Steuerleitungsausgaben ein. Die meisten komplizierten Details werden unter den Teppich von „Decoder und Zustandsmaschine“ gekehrt. Der Rest sieht immer sauber und einfach aus.