Aufbau eines Taschenrechners siehe Skizze Aufbau einer Waage siehe Skizze Speichermöglichkeit Speichermöglichkeit Adressbus 65536 (216) (2 wegen der Zustände 0=aus und 1=an) => 65536 Möglichkeiten => 65536 x 1Byte (8 Bit) (sprich 1 Byte entspricht 8 Bit) => : 1024 entspricht 210 => = 64 kiByte Bsp.: 24 => 16 mögliche Zustände 1 2 3 4 0 0 . . . 0 1 . . . 1 1 . . . 0 0 . . . Begriffe: ROM (Read Only Memory) RAM (Random Access Memory) Mikrocomputer Baugruppen: CPU-Mikroprozessor ➔ Steuerwerk (regelt die Abläufe) ➔ Rechenwerk (eigentliche Berechnung) ➔ Register (interner Speicher mit eigener Verwaltung) Speicheradresse ➔ ROM (Lesespeicher) ➔ RAM (Schreib- & Lesespeicher) Eingabegruppe ➔ Eingabe von Daten, wenn IN-R und Adresse dieser Baugruppe gesetzt ist. Ausgabegruppe ➔ Ausgabe von Daten auf den Datenbus, wenn OUT-W und die Adresse dieser Baugruppe gesetzt ist. BUS-System Beim Computer nutzen viele Baugruppen zum Datentransport das selbe Leitungsbündel. Nach ihrer Ausgabe unterscheidet man verschiedene Busse, die zusammengefasst als Systembus bezeichnet werden. 1. Adressbusses 2. Datenbus 3. Steuerbus 4. Spannungsversorgung Hinweis: Das Steuerwerk regelt die zeitliche Reihenfolge des Datenverkehrs auf dem Bus und ordnet die Daten auch der richtigen Baugruppe zu. Adressbus ➔ Steuerbus Verbindung Steuerwerk des Prozessors zu den Steueranschlüssen der Baugruppen. Steuersignale: ● MEM R memory read (Speicher lesen) ● MEM W memory write (Speicher schreiben) ● IN R Input read (Eingabeport lesen) ● OUT W Output write (Ausgabeport schreiben) Wenn die CPU kein Steuersignal ausgibt, sind die acht Datenanschlüsse aller Baugruppen elektronisch vom Bus getrennt (hochohmig). In jedem Fall muss der Prozessor die gültige Adresse und gleichzeitig das betreffende Steuersignal senden, um eine bestimmte Funktion zu erfüllen. Der Steuerbus besitzt einen Treiber (Bustreiber) mit Tristate-Ausgang. alle Steuerbefehle sind 0-aktiv z.B. ( INR ) 1/0/hochohmig IN R bei 1 = +5V ist Spannung am Widerstand 0V; kein Strom ●bei 0 = 0V ist Spannung am Widerstand 5V; geringer Strom fließt (da R sehr groß) ●bei Trennung von IN R (hochohmig) bewirkt Wdst. dass an Leitung 1 = +5V anliegt => kein Steuerbefehl bzw. Schaltung abgeschalten! ●Die pull-up Widerstände sorgen dafür, dass auf allen Steuerleitungen ein 1 – Signal anliegt (...inaktiv!...), wenn die Ausgänge hochohmig sind. ● Für den Fall, das die Ausgänge hochohmig sind, sorgen pull up – Widerstände dafür, dass auf allen Steuerleitungen ein 1-Signal anliegt -> also inaktiv sind. Zeitmultiplex Verfahren Daten-/Adressbus CPU (Ausschnitt) CPU Ausschnitt Befehlszähler Programmzähler Adressregister A0 A15 A15 interner Datenbus Adres sbust reibe r A8 Daten- u. Adressentreiber D0 - D4 A0 - A7 Prinzipschaltbild D0 D0 =>Daten/Adr. A0 A0 =>Daten/Adr. Multiplexer Demultiplexer Das Zeitmultiplex-Verfahren hilft hier, Anschlüsse des SIP-Gehäuses der CPU zu sparen. Es werden an den Anschlüssen AD0-AD7 (8 Anschlüsse) zu einem Zeitpunkt die acht Datenleitungen des Datenbusses geschalten und zu einem anderen Zeitpunkt die ersten acht Adressleitungen der 16 Leitungen breiten Adressbusses. Ohne das Multiplex-Verfahren wären 16 Adressleitungsanschlüsse plus acht Datenleitungsanschlüsse notwendig. ∑ 24 Anschlüsse Halbleiterspeicher Statischer RAM (Flipp-Flopp) Dynamischer RAM (Kondensatoren) Allen Halbleitern ist gemeinsam, dass durch Anlegen einer bestimmten Adresse der gewünschte Speicherplatz zum Lesen oder Schreiben ausgewählt werden kann (wahlfreier Zugriff) Kapazität des Speichers Speicherkapazität = Adressanzahl x Datenwortlänge ➔ Erweiterung des Speichers (wortorganisierter Speicher) A0 A0 A9 RAM 1k*8 1C2 1EN G1 A15 A11 RAM 1k*8 RAM 1k*8 1C2 1EN G1 1C2 1EN G1 RAM 1k*8 1C2 1EN G1 A10 1C2 ... Write 1EN ... Read G1 ... Baussteinauswahl WE ... Schreib-/Lese-Eingang & 0 bei A10=0, A11=0 & WE Freigabe 0 bei A10=0, A11=1 & 0 bei A10=1, A11=0 & 0 bei A10=1, A11=1 A B C Ausgang 0001 0011 0101 0111 1001 1011 1101 1110! A B & C da Ausgabe 0, muß G1 negiert werden A11 A10 Der Mikroprozessor – Innere Funktionen und Befehle - Befehle setzen sich aus mindestens einem höchstens drei Worten (je 8 Bit) zusammen ➔ Der Prozessor 8085 kennt über 90 verschiedene Befehle -> siehe Befehlsliste ➔ Befehle lassen sich in folgende Gruppen unterteilen 1) Transportbefehle 2) Verarbeitungsbefehle 3) Programmsteuerbefehle Befehle: z.B.: NOP Hexa: 00 --> no operation 84 Hexa bedeutet binär 1000 0100 Schreibweise ADD H --> addiert Transportbefehle ➔ Daten aus externen Speicher in ein Register (Speicherzeile innerhalb der CPU) des Prozessors lesen ➔ Daten aus der Eingabebaugruppe in den Akku (wichtiger Register) laden ➔ Daten aus dem Akku (z.B. Ergebnisse einer Bearbeitung) in eine Ausgabegruppe leiten ➔ siehe Blockschaltbild Verarbeitungsbefehle ➔ Veranlassen die ALU (Arithmetic Logic Unit) Rechenoperationen der logischen Verknüpfungen auszuführen ➔ z.B. Rechenoperationen: ➔ Addieren Subtrahieren Inkrementieren(+1) Dekrementieren(-1) Komplement bilden Dezimalkorrektur vornehmen (--> keine Multiplikation) ➔ Logische Verknüpfungen: UND, ODER, Exklusiv ODER Vergleichsoperationen ➔ UND => beide Leitungen 1 dann Ausgang 1 ➔ ODER => eine von beiden Leitungen mindestens 1 dann Ausgang 1 ➔ Exklusiv ODER => eine Leitung 0 eine 1 dann Ausgang 1 sind beide gleich sprich 0 oder 1 dann Ausgang 0 ➔ Die ALU kann stets nur mit maximal zwei Operanden verknüpft werden (Akku, Zwischenregister) ➔ Das Ergebnis gelangt immer in den Akku Programmsteuerbefehle ➔ Nach dem Einschalten des Rechners nimmt dieser seine Arbeit mit dem aussenden der Adresse 000016 auf. ➔ Dann wird das Ablaufsteuersignal ➔ Im Ergebnis liegt auf dem Datenbus der Inhalt der Speicherzelle 0000 16 ➔ Befehlsregister empfängt die Daten und das Datenwort wird dem Befehlsdecoder zum Entschlüsseln zugeleitet. ➔ Weiterer Ablauf ist nun von den gelesenen Befehl abhängig ➔ MEMR (Speicher lesen) gesendet. Das Zustandsregister (Flag-Register) 5 Flags existieren -> Carry Flag: -> Parity Flag: -> Hilfscarry Flag: -> Zero Flag: -> Vorzeichen Flag: (Hochwertigstes meldet Rechenübertrag Anzahl der „1“ Signale im Akku gerade Übertrag vom Bit3 nach Bit4 fand im Akku statt Es liefert 1-Signal, wenn nach dem Befehl der Akkuinhalt 000000002 ist. Bit7 ist „1“ Bit) Stapelspeicher (Stack) oder Stapelzeiger ➔ verwaltet den Speicherbereich im RAM (außerhalb der CPU) -> Anwendung hauptsächlich bei Unterprogrammen ➔ Im Stack liegen Stapelweise die Rückkehradressen ins Hauptprogramm -> Reihenfolge last in – first out Der Stapelzeiger ist ein 16 Bit – Register, das die aktuelle RAM-Adresse des Stapelspeichers enthält. Assembler Programmierung Bsp (Taschenrechner).: ADDITION einer eingegebenen Zahl mit 17810 => B216 Entwicklung Programm: Speicheradresse 000016 000116 000216 000316 000416 000516 000616 000716 000816 Mnemonik/Operant Maschinencode In/01 DB16 (1101 10112) 0116 (0000 00012) ADI/B2 C616 (1100 01102) B216 (1011 00102) OUT/01 D316 (1101 00112) 0116 (0000 00012) JMP/0000(Speicheradresse) C316 (1100 00112) 0016 (0000 00002) 0016 (0000 00002) ersten vier bin Zahlen=erster Maschinencodewert zweiten vier bin Zahlen=zweiter Maschinencodewert Bei einem JumpBefehl JMP wird auf eine Speicheradresse verwiesen. besteht aus insgesamt drei Befehlen, da Speicheradresse aus zwei mal 00 besteht benötigt sie 2x 8 Bit da 2 Hexa-Zahlen als Adresse für die Speicheradressierung benötigt werden brauch man 16 Bit in binärer Form. Da nur 8 Bit zu Verfügung stehen, wird diese über zwei 8 Bit Befehle adressiert.=> 1. Jump-Befehl 2. Adressierung 00 (erster Adressteil der Speicherzelle) 3. Adressierung 00 (zweiter Adressteil der Speicherzelle) Ausbildungsmitschrift bereitgestellt von Michael Bergler: http://michas-blog.diewebservisten.de