Die Arithmetisch-Logische Einheit ALU 74181

Ähnliche Dokumente
Struktur der CPU (1) Die Adress- und Datenpfad der CPU: Befehl holen. Vorlesung Rechnerarchitektur und Rechnertechnik SS Memory Adress Register

Mikroprozessor als universeller digitaler Baustein

Musterlösungen Technische Informatik 2 (T2) Prof. Dr.-Ing. D. P. F. Möller

Prinzipieller Aufbau und Funktionsweise eines Prozessors

Mikrocomputertechnik. Einadressmaschine

Rechnerstrukturen 1: Der Sehr Einfache Computer

Versuch D3: Busse, Speicher und Ampelsteuerung mit Speicher

Der Toy Rechner Ein einfacher Mikrorechner

Prozessorarchitektur. Kapitel 1 - Wiederholung. M. Schölzel

Füllstandsregelung. Technische Informatik - Digitaltechnik II


Integrierte Schaltungen

Mikroprozessortechnik Grundlagen 1

Aufbau eines Taschenrechners

L3. Datenmanipulation

Grundlagen der Rechnerarchitektur

GFS-Modellrechner CONASIM (Version 3.0)

Mikroprozessor bzw. CPU (Central Processing. - Steuerwerk (Control Unit) - Rechenwerk bzw. ALU (Arithmetic Logic Unit)

Die Mikroprogrammebene eines Rechners

Übungen zur Vorlesung Technische Informatik I, SS 2002 Hauck / Guenkova-Luy / Prager / Chen Übungsblatt 5 Rechenwerke / Scheduling

Von-Neumann-Architektur

Datenpfad einer einfachen MIPS CPU

Zusammenfassung der Assemblerbefehle des 8051

Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009

Datenpfad einer einfachen MIPS CPU

Mikrocomputertechnik

Datenpfad einer einfachen MIPS CPU

Rechnerarchitektur Zusammengetragen vom Marc Landolt

Teil 1: Digitale Logik

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

13.3 Datenpfade zur Befehlsdurchführung

Einführung in die Informatik I

"Organisation und Technologie von Rechensystemen 4"

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at

Praktikum Mikrorechner 1 (Einführung)

Tutorium Rechnerorganisation

1. Inhaltsverzeichnis

2.2 Rechnerorganisation: Aufbau und Funktionsweise

1,8V Flash and SRAM 28F3208W30

INFORMATIK Oberstufe. Funktionsweise eines Rechners

MOP: Befehlsliste für den Mikrocontroller 8051

3 Verarbeitung und Speicherung elementarer Daten

Aufgaben zum Elektronik - Grundlagenpraktikum

1. Übung aus Digitaltechnik Aufgabe. Die folgende CMOS-Anordnung weist einen Fehler auf:

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Darstellung von negativen binären Zahlen

Grundlagen der Rechnerarchitektur. Binäre Logik und Arithmetik

Microcomputertechnik

Das Prinzip an einem alltäglichen Beispiel

, 2014W Übungsgruppen: Mo., Mi.,

Johann Wolfgang Goethe-Universität

Steuerwerk einer CPU. Einführung in die Technische Informatik Falko Dressler, Stefan Podlipnig Universität Innsbruck

C. BABBAGE ( ): Programmgesteuerter (mechanischer) Rechner

Vorlesung Rechnerarchitektur. Einführung

Rechnerarchitektur und Betriebssysteme (CS201): Architektur, ALU, Flip-Flop

Aufgabe 1. Aufgabe 2. Abbildung 1: Schaltung für die Multiplikation mit 4

Versuch P1-63 Schaltlogik Vorbereitung

Teil 2: Rechnerorganisation

Teil V. Programmierbare Logische Arrays (PLAs)

Übungen zu Grundlagen der Rechnerarchitektur und -organisation: Bonusaufgaben Übung 8 und Präsenzaufgaben Übung 9

SMP Übung 2 1. Aufgabe

9. Assembler: Der Prozessor Motorola 68000

5 Verarbeitungsschaltungen

Grundbegriffe der Informatik Tutorium 5

CPU Speicher I/O. Abbildung 11.1: Kommunikation über Busse

Oliver Liebold. NAND (negierte Undverknüpfung) L L H L H H H L H H H L

a. Flipflop (taktflankengesteuert) Wdh. Signalverläufe beim D-FF

Rechnerstrukturen Winter WICHTIGE SCHALTNETZE. (c) Peter Sturm, University of Trier 1

Logische Bausteine. Grundlagen der Rechnerarchitektur Logik und Arithmetik 31

Rechnerstrukturen Winter SPEICHER UND CACHE. (c) Peter Sturm, University of Trier 1

Rechner- organisa-on 2 TOY. Karl C. Posch.

Logische Bausteine. Addierwerke. Grundlagen der Rechnerarchitektur Logik und Arithmetik 48

Protokoll zum Praktikum des Moduls Technische Informatik an der JLU Gießen

Aufgabe 1 Minimieren Sie mit den Gesetzen der Booleschen Algebra 1.1 f a ab ab 1 = + + Aufgabe 2. Aufgabe 3

Übungsklausur Mikroprozessortechnik und Eingebettete Systeme I

Drücken Sie (später) bei Speichere Änderungen in der Bibliothek default? auf Nein.

Vorwort 8. Kap. 1: Grundlagen 10

Klausur Technische Informatik 1 WS 2015/2016 Prüfer: Sutter Hilfsmittel: keine

Arbeitstitel: DV-Infrastruktur

GAL 16V8. 4. Laboreinheit - Hardwarepraktikum SS 2002 VCC / +5V. Eingang / Clock. 8 konfigurierbare Ausgangszellen. 8 Eingänge GND / 0V.

Cls. Der Aufbau der Schaltung geschieht mit dem HWPRAK-Altera-Board, das in diesem Versuch nun aus den folgenden Komponenten besteht:

Versuchsvorbereitung P1-63: Digitale Elektronik, Schaltlogik

PIC16 Programmierung in HITECH-C

Technische Informatik. Der VON NEUMANN Computer

Q R. reset (R) set (S) unzulässig! Unkontrollierte Rückkopplung von Gatterausgängen auf Gattereingänge führt zu logisch "inkonsistentem" Verhalten!

Multiplizierer. Beispiel komplexer arithmetischer Schaltung. Langsamer als Addition, braucht mehr Platz. Sequentielle Multiplikation

II. Grundlagen der Programmierung

Inhalt. Zahlendarstellungen

Mikrocomputertechnik. Thema: Der Aufbau des XC888-Mikrocontrollers -Teil 1 -

N Bit binäre Zahlen (signed)

HD44780-LC-Display am Atmel-AVR Mikrocontroller

Assembler und Hochsprachen

Multiplexer und Schieberegister

Serielle Datenübertragung mit dem Schnittstellenbaustein 8251

3 Rechnen und Schaltnetze

Fachbereich Medienproduktion

Informationsverarbeitung auf Bitebene

Computersysteme. 2. Grundlagen Digitaler Schaltungen 2.15 Fan-In und Fan-Out 2.16 Standard-Schaltnetze

Transkript:

Die Arithmetisch-Logische Einheit ALU 74181 Blockschaltbild: IC 74181 Pin-Ansicht S0 S1 S2 S3 M C n P G C n + 4 A=B B0 A0 S3 S2 1 2 3 4 24 23 22 21 +5V A1 B1 A2 A0 B0 A1 B1 A2 B2 A3 B3 F0 F1 F2 F3 S1 S0 C n * M F0 F1 F2 GND 5 6 7 8 9 10 11 12 20 19 18 17 16 15 14 13 B2 A3 B3 B3 C n+4 * P A=B F3 Die ALU hat o 6 Steuerleitungen S0, S1, S2, S3, M, C n Die ALU ist eine 4-Bit-ALU d.h. sie hat o 4 Eingangsleitungen A;A;A;A 0 1 2 3 für den A-Operanden o 4 Eingangsleitungen B;B;B;B 0 1 2 3 für den B-Operanden o 4 Ausgangsleitungen für das Ergebnis der Operation o 1 Ausgangsleitung C n + für 4 einen eventuellen Übertrag o 1 Vergleichsausgang A=B (nur in Verbindung mit der Operation A-B!) o Zwei Ausgänge P und G für die Übertragsauswertung 1

Die Ausgangsleitung A=B zeigt eine 1, wenn die Steuerleitungen so eingestellt sind, dass die Operation SUBTRAKTION eingestellt ist und die beiden Operanden identisch sind. Die beiden Ausgangsleitungen P und G sind für einen speziellen Übertragsauswertungsbaustein IC 74182 bestimmt, der den korrekten Übertrag ermittelt, wenn man 4 solcher 4-Bit-ALUs zu einer 16-Bit-ALU zusammenfügt. Eine einfachere Darstellung des Blockschaltbilds: Steuerleitungen S M C n ALU 74181 F Ausgänge A B Eingänge 2

Die Innenschaltung der ALU 74181 ( Quelle : Philips Semiconductors 74181 Produkt Specification Datenblatt ) Alte Darstellung der Digitalbausteine: AND NAND OR NOR XOR Inverter 3

Funktionen der ALU 74181 M=1 M=0 Steuerleitungen logische arithmetische Operationen S0 S1 S2 S3 Operationen C =0 C =1 0 0 0 0 F = A F=A+1 F=A 0 0 0 1 F = A B F = (A B) + 1 F = (A B) 0 0 1 0 F = A B F = (A B) + 1 F = (A B) 0 0 1 1 F=0 F=0 F = 1 0 1 0 0 F = A B F = A + (A B) + 1 F = A + (A B) 0 1 0 1 F = B F = (A B) + (A B) + 1 F = (A B) + (A B) 0 1 1 0 F = A B F = A B F = A B 1 0 1 1 1 F = A B F = A B F = (A B) 1 1 0 0 0 F = A B F = A + (A B) + 1 F = A + (A B) 1 0 0 1 F = A B F = A + B+ 1 F = A + B 1 0 1 0 F=B F = (A B) + (A B) + 1 F = (A B) + (A B) 1 0 1 1 F = A B F = A B F = A B 1 1 1 0 0 F=1 F = A + A + 1 F = A + A 1 1 0 1 F = A B F = (A B) + A + 1 F = (A B) + A 1 1 1 0 F = A B F = (A B) + A + 1 F = (A B) + A 1 1 1 1 F=A F = A F = A 1 n n Beachte, dass A,B und F 4-Bit-Worte sind! Beispiel 1: A=1010 B=1100 Dann ist z.b.: AvB= 1110 F = (A B) + A=1000 A+A=0100 4

Beispiel 2: A=1111 B=0110 Dann ist z.b.: F = A + B = 0100 Cn+ 4= 0 d.h.cn+ 4= 1 Testschaltung mit LOCAD : IC74181_test.lws 5

Aufgabe 1 : Die Steuerleitungen werden so eingestellt, dass S=1001, M=0 und C n =1 ist. D.h.: Die Operation ist F=A+B Für den A-Operand ( 1. Summand) wählen wir A=1011 und für den B-Operand (2. Summand) B=0110 Färbe alle auf Datenleitungen die ein 1-Signal haben auf der Kopie des Datenblatts rot ein und alle Datenleitungen die eine 0 tragen grün ein. Zeige damit, dass die ALU das Ergebnis korrekt ausgibt. 1 0 1 1 11 1 0 1 1-5 + 0 1 1 0 + 6 + 0 1 1 0 + 6 1 1 1 1 1 0 0 0 1 17 1 0 0 0 1 1 Aufgabe 2 : Die Steuerleitungen werden so eingestellt, dass S=1000, M=1 und C n =0 ist. D.h.: Die Operation ist F = A B Für den A-Operand wählen wir A=1010 und für den B-Operand B=0110 Färbe alle Datenleitungen die ein 1-Signal haben auf der Kopie des Datenblatts rot ein und alle Datenleitungen die eine 0 tragen grün ein. Zeige damit, dass die ALU das Ergebnis korrekt ausgibt. A 1 0 1 0 A 0 1 0 1 B 0 1 1 0 A B 0 1 1 1 6

Aufgabe 3 : Fülle folgende Tabelle aus: und teste mit LOCAD, ob das Ergebnis korrekt ist. A 1 0 1 0 A 0 1 0 1 B 0 1 1 0 B 1 0 0 1 F = A B F = A B F = A B F = A + A F = A B 1 F = A + (A B) F = (A B) + (A B) Um die Daten, die die ALU ausgibt speichern und verarbeiten zu können, verwendet man häufig ein 4-Bit- Schieberegister mit paralleler Übernahme und Reset T R SL SR Er El E AKKU 74194 Q Bei einem Taktimpuls wird das 4-Bit-Eingangswort E in den Akku übernommen und am Ausgang Q angelegt, falls SL=1 und SR=1 ist. Für SL=1 und SR=0 arbeitet das Register als Linksschieberegister und für SL=0 und SR=1 als Rechtsschieberegister. Für SL=0 und SR=0 ergibt sich keine Änderung. 7

Das IC 74194 Technische Informatik Testschaltung mit LOCAD : IC74194.LWS Die Eingänge Er und El legen fest wie das Register beim Rechts- bzw. Linksschieben aufgefüllt wird. Das Eingangswort E=0110 ist hier bei einer negativen Flanke des Taktimpulses in das Register übernommen worden und steht am Ausgang Q=0110 an. Der Reset-Eingang ist invertiert, d.h. ein Reset wird bei Reset*=0 ausgeführt. 8

Ein einfacheres 4-Bit-Register (Akku) lässt sich mit vier D-Flip-Flops realisieren: Das IC 74175 Quad D-type-FF with reset positive-edge trigger Q 3 Q 2 Q 1 Q 0 T R* E 3 E 2 E 1 E 0 Testschaltung mit DigiSim : IC74175.dsim Bei einer positiven Flanke am Takteingang T wird das 4-Bit-Datenwort in das Register übernommen und an den Q-Ausgängen zur Verfügung gestellt. Testschaltung mit LOCAD : IC74175.lws 9

Mit diesen Bausteinen kann man nun eine programmierbare Recheneinheit aufbauen: Diese Schaltung ist als Modell fest aufgebaut : S M C n T R SL SR Er El ALU 74181 F E AKKU 74194 A B Q Programm zur Berechnung von (8+5) DIV 2 S3 S2 S1 S0 M Cn SL SR Er Wirkung A=1000 0 0 0 0 0 1 1 1 0 F=A Übernahme 1000 Taktimpuls A=0101 1 0 0 1 0 1 1 1 0 F=A+B Übernahme 1101 Taktimpuls A=xxxx x x x x x x 0 1 0 Shift Right 0110 Taktimpuls A=0000 1 0 0 1 0 1 1 1 0 F=A+B Übernahme 0110 Taktimpuls (8+5) DIV 2=6 Ein Programm besteht dabei immer aus den gleichen Sequenzen : 1.) Steuerleitungen einstellen, A-Operand anlegen, Taktimpuls geben 2.) Steuerleitungen einstellen, A-Operand anlegen, Taktimpuls geben 3.) Steuerleitungen einstellen, A-Operand anlegen, Taktimpuls geben... u.s.w. 10

Wenn dieser Vorgang automatisiert ablaufen soll, dann müssen wir sowohl das Programm als auch die Daten abspeichern können. Dazu benötigen wir Speicherbausteine! RAM 4 X 4-BIT aufgebaut mit FlipFlops Testschaltung mit LOCAD : RAM4X4.LWS An den Adressleitungen werden die Adressen der Zeilen (0...4 von unten nach oben ) eingegeben. In der obigen Abbildung ist die Zeile 2 ( Adresse 10) adressiert und der Inhalt dieser Zeile liegt am Ausgang A an. Soll in eine Zeile geschrieben werden, so wird das einzuschreibende Datenwort an den Eingängen E0...E3 angelegt und danach am Write-Eingang eine negative Flanke erzeugt. Dann wird das Datenwort in die adressierte Zeile geschrieben und steht sofort am Ausgang zur Verfügung. Aufgabe: Entwickle die Innenschaltung eines 4 auf 1 Multiplexers( 4-fach-Weiche), der diejenige Eingangsleitung auf den Ausgang durchschaltet, der durch die beiden Adressleitungen adressiert ist. 11

IC 2101 RAM 1024 Bit (32x8x4) A 0 1 A 1 0 A 2 1 row- decoder 5 A 3 1 A 4 1 3 29 A 5 0 A 6 0 A 7 0 line decoder CE R/W & & input / output control IO 3 IO 2 IO 1 IO 0 12

Aufbau einer CPU ( 1. Stufe ) ACCU TR Die Daten, die verarbeitet werden sollen, werden in einem RAM 16x4 Bit gespeichert. W : Steuerleitung write Ein auf dem Bus liegendes Datenwort wird in die Adressierte Speicherzelle übernommen, wenn an W eine negative Flanke erscheint und CS=1 ist. CS : cable select Die Datenausgänge sind über einem Tri-state-Baustein mit dem BUS verbunden: CS=0 entkoppelt CS=1 gekoppelt Über den 4-Bit-Adressbus können die 16 Speicherzellen mit den Adressen 0000...1111 adressiert werden. Mit dem Schalter S2 kann der F-Ausgang auf den BUS gelegt werden (En=1) bzw. vom BUS entkoppelt werden (En=0) Die Steuerleitungen müssen in diesem Entwicklungsstadium noch von Hand mit 0 bzw. 1 belegt werden, um die gewünschte Operation zu erhalten. 13

Aufgabe: Ein Programm soll den Inhalt der Speicherzelle 11 und den Inhalt der Speicherzelle 12 addieren und das Ergebnis in die Speicherzelle 13 einschreiben. Beschreibe den Ablauf dieses Programms detailliert! 14

Blockschaltbild ohne Steuerleitungen: 4 4 S1 S2 R Out0 OV Z 8 RAM 256 x 4 Bit ALU Out1 S3 AKKU TR In0 S4 4 4 4 In1 AKKU, TR, Out0, Out1 : IC74175 4-Bit-D-Register mit Reset S1, S2, S3, S4 : IC74125 4-Bit-Tri-State-Leistungstreiber( Schalter ) RAM : IC 2101 256x4-Bit (8-Bit-Adressbus) ALU: IC74181 4-Bit-ALU R : IC7474 2-Bit-D-Register mit Reset 15

Bisher haben wir in unserem Modellcomputer nur Daten im Hautspeicher abgelegt und mussten die Einstellung der Steuerleitungen und den logischen Ablauf selbst regeln. Wenn wir diese Aufgabe ebenfalls dem Computer übertragen wollen, dann müssen neben den Daten auch die sogenannten Maschinenbefehle im Hauptspeicher abgelegt werden können. Da der Hauptspeicher aus 4-Bit- Speicherzellen besteht, können wir in einer Speicherzelle 16 Operationen für unseren Modellcomputer verschlüsseln: OP-Code Mnemonic Bedeutung) 0 0 0 0 JMP Jump 0 0 0 1 JNZ Jump if not zero 0 0 1 0 CALL Call 0 0 1 1 RET Return 0 1 0 0 LDA Load accumulator 0 1 0 1 STA Store accumulator 0 1 1 0 ADDA Add accumulator 0 1 1 1 DECM Decrement memory 1 0 0 0 OUT0 Output 0 1 0 0 1 OUT1 Output 1 1 0 1 0 INA Input accumulator 1 0 1 1 JBY Jump if busy 1 1 0 0 ENTA Enter accumulator 1 1 0 1 INCA Increment accumulator 1 1 1 0 NANDA Nand accumulator 1 1 1 1 WAIT Wait Mnemonic : Gedächtnisstütze (Griech.: µνηµονικο mnimoniko ) 16

Diese 16 Maschinenbefehle teilen sich in 3 Gruppen auf : Die Befehle JMP,JNZ,CALL,LDA,STA,ADDA,DECM und JBY sind sogenannte 3-Wort-Befehle,die als Bezug immer die Adresse einer Speicherzelle haben, mit deren Inhalt die entsprechende Operation ausgeführt wird: Beispiel LDA 135 0 1 0 0 LDA opcode 0 1 1 1 low adress adresscode 1 0 0 0 high adress Syntax: Lade den Akku mit dem Inhalt der Speicherzelle 135 Die Befehle OUT0,ENTA,INCA und NANDA sind sogenannte 2-Wort-Befehle die als Bezug immer ein 4-Bit-Datenwort haben, mit dem die entsprechende Operation ausgeführt wird: Beispiel INCA 5 0 1 0 0 INCA opcode 0 1 1 1 5 wordcode Syntax: Incrementiere den Akkuinhalt um 5 <acc>:=<acc>+n Die Befehle RET,OUT1,INA und WAIT sind sogenannte 1-Wort-Befehle,die nur eine Operation ohne Bezug ausführen: Beispiel OUT1 0 1 0 0 OUT1 opcode Syntax: Gib den Akkuinhalt am Ausgang OUT1 aus <OUT1>:=<acc> 17

Damit ergibt sich die vollständige Befehlstabelle: OP-Code Mnemonic 0 0 0 0 JMP adr 0 0 0 1 JNZ adr 0 0 1 0 CALL adr 0 0 1 1 RET 0 1 0 0 LDA adr 0 1 0 1 STA adr 0 1 1 0 ADDA adr 0 1 1 1 DECM adr 1 0 0 0 OUT0 n 1 0 0 1 OUT1 1 0 1 0 INA 1 0 1 1 JBY adr 1 1 0 0 ENTA n 1 1 0 1 INCA n 1 1 1 0 NANDA n 1 1 1 1 WAIT Bedeutung Jump: Unbedinter Sprung auf die Adresse adr Jump if not zero Sprung auf die Adresse adr, falls der Akkuinhalt <>0 ist Call Unterprogrammsprung auf die Adresse adr Return Unterprogrammrücksprung Load accumulator <acc>:=<adr> Store accumulator <adr>:=<acc> Add accumulator <acc>:=<acc>+<adr> Decrement memory <adr>:=<adr>-1 Output 0 <OUT0>:=n Output 1 <OUT1>:=<acc> Input accumulator <acc>:=<in0/in1> Jump if busy Sprung auf Adresse adr, falls Signal an BY-Buchse = 0 Enter accumulator <acc>:=n Increment accumulator <acc>:=<acc>+n Nand accumulator < acc >= : < acc > n Wait Stop des Recners für eine einstellbare Zeitdauer 18

Wie wird der Operationscode unserer Maschinenbefehle vom Computer entschlüsselt? Ein neuer Befehlscode, etwa 0110 für ADDA gelangt zuerst in das sogenannte Instruktionsregister IR, das den gleichen Aufbau wie der Akku und das TR besitzt. Von dort gelangt dieser Code zu einem 4-Bit-Binärdekoder (Demultiplexer). Das ist ein Baustein, der die Aufgabe hat genau eine von 16 Ausgangsleitungen auf 0 zu legen, nämlich gerade die, die am Eingang adressiert ist. 0 1 1 0 6 ADDA IC 74154 4-Bit-Binärdecoder Demultiplexer 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 Dieser Binärdecoder dient nun dazu mit Hilfe einer Diodenmatrix die Steuerleitungen unseres Rechners so zu stellen, dass der Befehl korrekt ausgeführt werden kann. Aufgabe: Entwickle die Innenschaltung eines 2-Bit-Binärdecoders (Demultiplexers). 19

IC 74154 E 3 E 2 E 1 E 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Konjunktive Normalform: 0 = E3 E2 E1 E0 = E3 E2 E1 E0 1 = E3 E2 E1 E0 = E3 E2 E1 E0... 15 = E3 E2 E1 E0 = E3 E2 E1 E0 20

IC 74154 & 0 G1 G2 1 & 1 & 2 & 3 E0 1 1 & 4 & 5 E1 1 1 & 6 & 7 E2 1 1 & 8 & 9 E3 1 1 & 10 & 11 & 12 & 13 & 14 & 15 21

ROM - Diodenmatrix (hier realisiert mit LOCAD) Testschaltung mit LOCAD : ROM.LWS Testschaltung mit LOCAD : ROM16x23_TEST.LWS 22

Testschaltung mit LOCAD : IC74154_ROM.LWS 23

IC 74161 4-Bit-Binärzähler Testschaltung mit LOCAD : IC74161_2.LWS Funktion : Reset* Takt Steuerleitungen Ausgang Load* CET CEP Q 3,Q 2,Q 1,Q 0 Operation 0 X X X X 0,0,0,0 Reset 1 0 X X E 3,E 2,E 1,E 0 Preset 1 1 0 X Q = Q Stop 1 1 X 0 Q = Q Stop 4:39 Q = Q+1 4:39 24

Der Program-Counter PC aufgebaut mit zwei IC 74161 Testschaltung mit LOCAD : ProgramCounter.LWS Der Program-Counter enthält immer die Adresse der Speicherzelle, die gerade angesprochen wird. Blockschaltbild: Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 Load* Reset* ProgramCounter CET CEP E7 E6 E5 E4 E3 E2 E1 E0 25

Die Erweiterung des Modellcomputers: S1 S2 R RAM 256 x 4 Bit ALU S SEL SEL AKKU TR S RAR1 RAR0 ADR1 ADR0 IR PC1 PC0 S E L S E L Diodenmatrix ROM 16x23 26

Programm : Addition zweier 4-Bit-Dualzahlen Addiere den Inhalt der Speicherzelle 30 und den Inhalt der Speicherzelle 31 und speichere den Wert der Summe in der Speicherzelle 32 ab: 30 + 31 32 Struktogramm Lade den Inhalt der Speicherzelle 30 in den Akku Addiere zum Akkuinhalt den Inhalt der Speichezelle 31. Speichere den Akkuinhalt in Speichezelle 32 ab Wiederhole % endlos Maschinenprogramm Adr. Mnemonic Code Bemerkung 0 LDA 30 0 1 0 0 LDA 1 1100 30 00011100 2 0001 3 ADDA31 0 1 1 0 ADDA 4 1111 31 00011111 5 0001 6 STA 32 0 1 0 1 STA 7 0000 32 00100000 8 0010 9 JMP 9 0000 JMP 10 1001 9 00001001 11 0000 (Endlosschleife! )...... 30 0101 1. Summand 31 0100 2. Summand 32 0000 Wert der Summe... 27

Wie läuft nun der Befehl 0 LDA 30 detailliert ab? 0 PC Damit ist die Speicherzelle 0 adressiert und der Inhalt dieser Zelle liegt auf dem BUS BUS = 1100 Das ist der Code für LDA Fetch-Phase BUS IR PC + 1 PC BUS ADR0 Der Code für den Befehl LDA wird in das Instruktionsregister übernommen. Der Demultiplexer sorgt zusammen mit der Diodenmatrix dafür, dass die Steuerleitungen so gesetzt werden, dass der Befehl LDA ausgeführt werden kann. Der Inhalt des PC wird um 1 erhöht. Damit ist die Speicherzelle 1 adressiert und der Inhalt dieser Zelle liegt auf dem BUS BUS = 1110 Das ist der niederwertige Adressteil LOW-Adress Diese niederwertige Adresse wird ins niederwertige Adressregister ADR0 übernommen. Der Inhalt des PC wird um 1 erhöht. Damit ist PC + 1 PC die Speicherzelle 2 adressiert und der Inhalt dieser Zelle liegt auf dem BUS BUS = 0001 Das ist der höherwertige Adressteil HIGH-Adress Jetzt ist die Hol-Phase abgeschlossen, der Rechner weiß, was er zu tun hat. ADR1/ ADR0 RAM Die Adresse (hier 30 00011110) wird an den AdressBUS des RAM übernommen. Der Inhalt der Speicherzelle (hier 0101) liegt auf dem BUS BUS TR Die Steuerleitungen der ALU sind so belegt, dass F=A ist, d.h. der ALU BUS ALU-Ausgang F liegt auf dem BUS Execute-Phase BUS Akku Der BUS-Inhalt wird in den Akku übernommen PC + 1 PC Die nächste Speicherzelle wir adressiert, d.h. der nächste Befehl wird vorbereitet. 28

Analog wird der Befehl 3 ADDA 31 abgearbeitet : Damit ist die Speicherzelle 3 adressiert und 3 PC der Inhalt dieser Zelle liegt auf dem BUS BUS = 0110 Fetch-Phase BUS IR PC + 1 PC BUS ADR0 PC + 1 PC Das ist der Code für ADDA Der Code für den Befehl ADDA wird in das Instruktionsregister übernommen. Der Demultiplexer sorgt zusammen mit der Diodenmatrix dafür, dass die Steuerleitungen so gesetzt werden, dass der Befehl ADDA ausgeführt werden kann. Der Inhalt des PC wird um 1 erhöht. Damit ist die Speicherzelle 4 adressiert und der Inhalt dieser Zelle liegt auf dem BUS BUS = 1111 Das ist der niederwertige Adressteil LOW-Adress Diese niederwertige Adresse wird ins niederwertige Adressregister ADR0 übernommen. Der Inhalt des PC wird um 1 erhöht. Damit ist die Speicherzelle 5 adressiert und der Inhalt dieser Zelle liegt auf dem BUS BUS = 0001 Das ist der höherwertige Adressteil HIGH-Adress Jetzt ist die Hol-Phase abgeschlossen, der Rechner weiß, was er zu tun hat. ADR1/ ADR0 RAM Die Adresse (hier 31 00011111) wird an den AdressBUS des RAM übernommen. Der Inhalt der Speicherzelle (hier 0100) liegt auf dem BUS Execute-Phase BUS TR Die Steuerleitungen der ALU sind so belegt, dass F=A+B ist, d.h. F = TR + AKKU ALU BUS ALU-Ausgang F liegt auf dem BUS BUS AKKU Der BUS-Inhalt wird in den Akku übernommen PC + 1 PC Die nächste Speicherzelle wir adressiert, d.h. der nächste Befehl wird vorbereitet. 29

Analog wird der Befehl 6 STA 32 abgearbeitet : Damit ist die Speicherzelle 6 adressiert und 6 PC der Inhalt dieser Zelle liegt auf dem BUS BUS = 0101 Das ist der Code für STA Fetch-Phase BUS IR PC + 1 PC BUS ADR0 PC + 1 PC Der Code für den Befehl STA wird in das Instruktionsregister übernommen. Der Demultiplexer sorgt zusammen mit der Diodenmatrix dafür, dass die Steuerleitungen so gesetzt werden, dass der Befehl STA ausgeführt werden kann. Der Inhalt des PC wird um 1 erhöht. Damit ist die Speicherzelle 7 adressiert und der Inhalt dieser Zelle liegt auf dem BUS BUS = 0000 Das ist der niederwertige Adressteil LOW-Adress Diese niederwertige Adresse wird ins niederwertige Adressregister ADR0 übernommen. Der Inhalt des PC wird um 1 erhöht. Damit ist die Speicherzelle 8 adressiert und der Inhalt dieser Zelle liegt auf dem BUS BUS = 0010 Das ist der höherwertige Adressteil HIGH-Adress Jetzt ist die Hol-Phase abgeschlossen, der Rechner weiß, was er zu tun hat. ADR1/ ADR0 RAM Die Adresse (hier 32 00100000) wird an den AdressBUS des RAM übernommen. Steuerleitung R/W auf WRITE ALU BUS ALU-Ausgang F liegt auf dem BUS Execute-Phase Steuerleitungen so, dass F=B, als F = AKKU BUS RAM Der BUS-Inhalt wird in die adressierte Zelle des RAM-Bausteins übernommen PC + 1 PC Die nächste Speicherzelle wir adressiert, d.h. der nächste Befehl wird vorbereitet. 30

Programm : Struktogramm Technische Informatik Subtraktion zweier 4-Bit-Dualzahlen Subtrahiere den Inhalt der Speicherzelle 31 von dem Inhalt der Speicherzelle 30 und speichere den Wert der Differenz in der Speicherzelle 32 ab: 30 31 32 Idee: a-b = a+(-b) Lade den Inhalt der Speicherzelle 31 in den Akku Bilde das Zweierkomplement des Akkuinhalts Addiere zum Akkuinhalt den Inhalt der Speichezelle 30. Speichere den Akkuinhalt in Speichezelle 32 ab Wiederhole % endlos Maschinenprogramm Adr. Mnemonic Code Bemerkung 0 LDA 31 0100 LDA 1 1111 2 0001 3 NANDA15 1110 4 1111 15 5 INCA 1 1101 INCA 6 0001 1 7 ADDA 30 0110 ADDA 31 00011111 NANDA erzeugt Einerkomplement 8 1100 30 00011100 9 0001 10 STA 32 0 1 0 1 STA 11 0 0 0 0 32 00100000 12 0 0 1 0 13 JMP 13 0000 JMP 14 1101 13 00001101 15 0000... 30 0101 1. Summand 31 0100 2. Summand 32 0000 Wert der Summe 31

Mit dem Trick NANDA 15 erzeugt man das Einerkomplement und durch Addition einer 1 das Zweierkomplement : A 0100 15 1111 A 15 1011 A 15+ 1 1100 5 4 = 5 + ( 4) 0101+ 1100 = 10001 + 1 4 5 = 4 + ( 5) 0100 + 1011= 1111 1 3 4 = ( 3) + ( 4) 1101 + 1100 = 11001 7 Programm : Struktogramm Multiplikation zweier positiver 4-Bit-Dualzahlen Multipliziere den Inhalt der Speicherzelle 30 mit dem Inhalt der Speicherzelle 31 und speichere den Wert des Produkts in der Speicherzelle 32 ab: 30 31 32 Wiederhole 32 AKKU AKKU + 32 AKKU 30 1 30 AKKU 32 30 AKKU Solange bis 32 AKKU 30 = 0 AKKU Ausgabe 32

Maschinenprogramm: Technische Informatik Adr. Mnemonic Code Bemerkung 0 LDA 32 0100 LDA 1 0000 32 00100000 2 0010 3 ADDA 31 0 1 1 0 ADDA 4 1111 31 00011111 5 0001 6 DECM 30 0 1 1 1 DECM 7 1110 30 00011110 8 0001 9 STA 32 0 1 0 1 STA 10 0 0 0 0 32 00100000 11 0 0 1 0 12 LDA 30 0100 LDA 13 1110 30 00011110 14 0001 15 JNZ 0 0001 JMP 16 0 0 0 0 0 00000000 17 0000 18 LDA 32 0100 LDA 19 0 0 0 0 32 00100000 20 0 0 1 0 21 OUT1 1 0 0 1 OUT1 22 JMP 22 0 0 0 0 JMP 23 0 1 1 0 22 00010110 24 0 0 0 1. 30 0 1 0 0 1. Faktor 31 0 0 1 1 2. Faktor 32 0 0 0 0 Wert des Produkts... 33

Aufgabe: Wandle das Programm so ab, dass es auch richtig arbeitet wenn a) der erste Faktor negativ und der zweite Faktor positiv ist b) beide Faktoren negativ sind 34