Teil I.Teil IITeil IIITeil ivTeil vEines der Kapitel des Buches „Code“ von Charles Petzold widmet sich dem Design der CPU und beschreibt zu Beginn des Kapitels ein Gerät, mit dem Sie die im Speicher abgelegten Nummernsätze zusammenfassen können. Entwerfen Sie diese Schaltung in
Logisim . Nehmen Sie einen Satz achtstelliger Zahlen und verbinden Sie ihn mit dem Multiplexer. Wir wechseln von einer Zahl zur anderen, indem wir einen Zähler verwenden, der an den Auswahleingang des Multiplexers angeschlossen ist, und verbinden den Addierer und die Batterie mit dem Ausgang des Multiplexers. Wir werden den Knopf als Taktgenerator verwenden. Daten werden in die Batterie geladen, wenn die Taste losgelassen wird (dies erfolgt über das mit der Taste verbundene NOT-Element).

Wir werden die Nummern im RAM speichern.

RAM kann als ein Satz von Registern dargestellt werden, auf die über einen Demultiplexer und einen Multiplexer (DMX und MUX) zugegriffen wird.

Angenommen, eine Reihe von Zahlen ist im RAM gespeichert, und wir müssen alle Zahlen hinzufügen und das Ergebnis speichern (in einer freien Zelle). Wir speichern die Befehle ("Hinzufügen" und "Speichern") in einem RAM und die Nummern, die in einem anderen verarbeitet werden. Diese Speichermethode ist ein Markenzeichen der
Harvard-Architektur .
Der Befehl "1" schreibt die Nummer vom Addierer in die Batterie, der Befehl "2" schreibt die Nummer vom Akkumulator in den 2. RAM.

Angenommen, im RAM sind mehrere Arrays von Zahlen gespeichert. Das heißt, wir brauchen
- Laden Sie die Nummern vom RAM in die Batterie
- Laden Sie die Nummern vom Addierer in die Batterie
- Speichern Sie die Zahlen von der Batterie in den RAM
Wir werden den MUX-Multiplexer verwenden, um Daten aus dem RAM auszuwählen.
Der neue Befehl „5“ schaltet den MUX-Multiplexer entlang der ansteigenden Flanke des Taktgenerators und schreibt entlang der abfallenden Flanke (abnehmend) in die Batterie.

Als nächstes werden wir Anweisungen und Daten in einem RAM speichern. Diese Speichermethode ist ein Markenzeichen der
von Neumann-Architektur .
Der Befehl wird in den ersten vier Ziffern der 8-Bit-Speicherzelle gespeichert, die Adresse in den zweiten vier Ziffern (
direkte Adressierung ).
Wir laden die Adresse und den Befehl in separate Register und verwenden dann den Multiplexer, um zur gespeicherten Adresse zu gelangen. Um Daten in den RAM zu schreiben, laden wir die Daten zuerst in das temporäre Temp-Register (andernfalls werden Anweisungen in den RAM und nicht in die Daten geschrieben) und dann in die Batterie Ass. Die Aufzeichnung der Daten in Temp und Ass erfolgt an der Hinterkante.
Wir werden zum Beispiel die Nummern 2 und 3 hinzufügen, die in den Zellen 8 und 9 liegen, und das Ergebnis in einer Zelle mit der Adresse a speichern.

Wir fügen auch die Möglichkeit hinzu, bedingungslose Sprünge zu machen.
Wir implementieren ein Gerät, in dem nur ein Befehl ausgeführt wird - der bedingungslose Sprungbefehl. Zu diesem Zweck senden wir die vier niedrigstwertigen Bits (tatsächlich die Adresse) an den Zähler, der die Adresse generiert, und senden den in den hohen Bits der Speicherzelle gespeicherten Befehl an den Download-Port.
Verwenden Sie beispielsweise den Befehl 82, um zu einer Zelle mit der Adresse 2 zu springen.

Fügen Sie einen Befehl hinzu, um bedingungslos zum vorherigen Schema zu springen.

Im Allgemeinen gab es zu geektimes bereits einen
Artikel über das CPU-Design in Logisim.
Alle oben dargestellten Schemata können in
einer Datei heruntergeladen
werden .
Logisim kann hier heruntergeladen
werden .
Überlegen Sie, wie der Addierer am Beispiel eines 155im3-Chips (7483) funktioniert. Für Mikroschaltungen der 155. Serie stimmen wir zu, dass die Eingänge einen internen Widerstand haben, der bis zum Plus hochgezogen wird (wenn das Bein "in der Luft hängt", dann gibt es eine logische "Eins"). Wenn die Stromversorgung an die Mikroschaltung angeschlossen ist, leuchten daher alle an den Ausgang angeschlossenen LEDs auf .

Das Bild zeigt die MS 74ls283 (ein modernes Analogon von 155im3).
Um einen solchen Chip in Logisim zu entwerfen, müssen Sie "Menü" - "Projekt" - "Schema hinzufügen" auswählen.
So sieht diese MS in einem Subcircuit aus. Dies sind vier Halbaddierer, die zu einem Volladdierer kombiniert sind.
Als Batterie verwenden wir den 155tm8-Chip (74175) - einen vierfachen D-Trigger.
Die Trigger, die Teil der MS sind, durchlaufen die ganze Zeit, bis 1 am Synchronisationseingang und nicht nur am Rand (Trigger mit statischer Steuerung) vorhanden sind, sondern im Logisim-Programm nur Trigger mit dynamischer Steuerung, aber in diesem Fall spielt dies keine Rolle ;; Wir werden verwenden, was ist.
Weitere Informationen zu
Triggern finden Sie auf Wikipedia.
Lassen Sie uns das Modell MS 155tm8 aus den D-Flip-Flops zusammenbauen.
Als nächstes sammeln wir ein Schema, mit dem Sie Zahlenmengen hinzufügen können.
Wenn Sie beispielsweise einen Satz von Zahlen 2 (0010) hinzufügen, erhalten Sie 2 (0010), 4 (0100), 6 (0110) usw.
Zuerst erscheint 2 am Ausgang des Addierers (rote LEDs), dann wird 2 in das Quad-D-Flip-Flop geladen (gelbe LEDs) und 4 erscheint am Ausgang des Addierers, dann wird 4 in 155 tm8 geladen und 6 erscheint am Ausgang des Addierers usw.
Um ein einfaches Speichermodul zu entwerfen, benötigen wir einen Multiplexer. Wir entwerfen einen Doppelmultiplexer 155kp2.
Wir brauchen auch einen Zähler. Wir werden den 155ie5-Chip entwerfen.
Dies ist ein vierstelliger Zähler, aber wir benötigen nur die zwei niedrigstwertigen Bits.
Wir werden Zahlen speichern, zum Beispiel 2 (0010), 3 (0011), 5 (0101).
Kombinieren Sie alle Komponenten in einem Stromkreis. Wir werden die Zahlen hinzufügen, die im "Speicher" gespeichert sind
2 + 3 + 5.
Logisim kann hier heruntergeladen
werden .
PS Artikel über das Buch „Code. Geheimsprache der Informatik. " ist hier auf Habré.
Z.Y. Übersetzte Artikel (Übersetzung von
PatientZero ) über die Prozessorarchitektur
hier ,
hier und
hier