Technische Informatik Ziffern, Zahlen, Zahlensysteme Bits und Bytes Elektrische Größen bestehen oftmals aus zwei Zuständen: Strom oder kein Strom, Spannung oder keine Spannung, elektrisches Feld vorhanden oder nicht vorhanden, an oder aus. Durch geschicktes Aneinanderreihen solcher Zustände mit Hilfe elektrischer Schaltungen lassen sich Informationen verarbeiten und speichern. Was ist ein Bit Stellvertretend für die beiden Grundzustände benutzt man die beiden Ziffern 1 und 0. Ein Bit ist die kleinste Speichereinheit in der EDV. In einem Bit kann eine Information gespeichert werden. Diese Information kann zwei Zustände haben, nämlich AN oder AUS, also 1 oder 0. Da man jedoch mit dieser Information relativ wenig anfangen kann, hat man Bits zu Bytes zusammengefasst. Was ist ein Byte Eine Gruppe von 8 Bits heißt 1 Byte. Mit 1 Byte kann man 256 verschiedene Zustände darstellen. Warum 256 verschiedene Zustände? Die kleinste Zahl, die mit 8 Bits dargestellt werden kann, ist die dezimale 0, in Dualschreibweise 0000 0000. Die größte darstellbare Zahl ist die die dezimale 255, in Dualschreibweise 1111 1111. Aus Bits erzeugte Zahlen können wie im "normalen" Dezimalsystem verwendet werden. Man kann sie addieren, subtrahieren, multiplizieren und dividieren. Kilobyte, Megabyte, Gigabyte Ein Kilobyte sind ca. tausend Byte. Genauer: 210 Byte = 1.024 Byte Ein Megabyte sind ca. eine Millionen Byte. Genauer: 220 Byte = 1.048.576 Byte Ein Gigabyte sind ca. eine Milliarde Byte. Genauer: 230 Byte = 1.073.741.824 Byte Zahlensysteme Zählen im Dezimalsystem Wir beginnen bei 0 und zählen dann 1, 2, 3, usw. bis 9. Jetzt gehen uns die Ziffern aus! Um weiter zählen zu können, nimmt man eine zweite Ziffer zu Hilfe (Zehnerstelle) und beginnt mit der Einerstelle wieder bei 0. Das ergibt dann 1 und 0 also 10. Weiter geht es mit 11, 12, 13 bis 19. Die Zählerei klappt bis 99, ab jetzt nehmen wir noch eine dritte Ziffer dazu, also 100. Zählen im Dualsystem Auch hier beginnen wir mit der 0 und zählen dann bis 1. Da wir nur 2 Ziffern haben, besteht bereits jetzt die Notwendigkeit, eine zweite Ziffer zu verwenden. Nach 0 und 1 kommen dann also 10 und 11. Wieder reichen die Stellen nicht! Also noch eine Ziffer dazu: 100, 101, 110, 111, usw. Hans Wypior - 1 - 15. Mai 2013 Technische Informatik Vergleich Dezimal- und Dualsystem Wie nachfolgend zu erkennen ist, benötigen die dezimalen Ziffern 8 und 9 mindestens 4 Bits (1 Halbbyte) zur Darstellung im Binärsystem. Alle kleineren Ziffern werden deshalb mit führenden Nullen gespeichert. Die als Pseudotetraden bezeichneten Kombinationen von 0 und 1 werden für die Darstellung dezimaler Ziffern nicht mehr benötigt. Würde man diese Halbbytes nicht zur Zahldarstellung verwenden, so müßte z.B. die dezimale Zahl 12 mit 0001 0010 anstelle von 1100 gespeichert werden. Man erkennt die Speicherplatzverschwendung! Um alle Dezimalziffern speichern zu können, gleichzeitig aber keinen Speicher zu verschwenden, hat man sich bei der Computerentwicklung sehr frühzeitig für die Verwendung des Hexadezimalsystems als Standard entschieden. Das Hexadezimalsystem 4 Bits kann man auf 16 verschiedene Arten miteinander kombinieren. Ordnet man jeder Kombination eine Ziffer zu, so erhält man ein Zahlensystem mit 16 Ziffern, das sogenannte Sedezimal- oder Hexadezimalsystem. Dezimal Dual Hexadezimal 0 0000 0 1 0001 1 2 0010 2 3 0011 3 4 0100 4 5 0101 5 6 0110 6 7 0111 7 8 1000 8 9 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F Tetraden Pseudotetraden Das Hexadezimalsystem kann man als abgekürzte Schreibweise der Halbbytes des Dualsystems verstehen So bedeutet die hexadezimale Zahl AFFE nichts anderes als den binären Speicherinhalt 1010 1111 1111 1110. Hans Wypior - 2 - 15. Mai 2013 Technische Informatik Ziffern und Zahlen Das Dezimalsystem benutzt bekanntlich zur Darstellung von dezimalen Zahlen die 10 Ziffern 0,1,2,...,9. Dabei hat die Stelle, die eine Ziffer in einer dezimalen Zahl einnimmt eine Bedeutung: Sie ist Vielfache einer Potenz zur Basis 10. Beispiel für eine Zahl des 10er-Systems: 3 2 1 0 4235 = 4 * 10 + 2 * 10 + 3 * 10 + 5 * 10 . Was für das Dezimalsystem gilt, gilt für jedes andere Zahlensystem genauso. So hat das System mit der Basis 2 genau 2 Ziffern, nämlich 0 und 1. Das System zur Basis 3 besitzt die 3 Ziffern 0,1,2. Das Hexadezimalsystem mit der Basis 16 benutzt die 16 Ziffern 0,1,...,E,F (siehe oben), wobei die Buchstaben Symbole für die auf die Ziffer 9 folgenden Ziffern darstellen. Man hätte ebensogut die Symbole "Kreis", "Quadrat", "Rechteck", ... nehmen können (Irgendein Symbol musste man ja wählen. Die Entscheidung, Buchstaben zu benutzen war reine Willkür!). Beispiel für eine Zahl des Dualsystems: 7 6 5 4 3 2 1 0 1101 0110 = 1 * 2 + 1 * 2 + 0 * 2 + 1 * 2 + 0 * 2 + 1 * 2 + 1 * 2 + 0 * 2 Basistausch Die Umrechnung von binären in dezimale Zahlen Die Potenzschreibweise kann man jetzt zur Umrechnung vom Dual- ins Dezimalsystem benutzen. Man beachte, dass auf der linken Seite des Gleichheitszeichens Ziffern des Dualsystems, auf der rechten Seite Ziffern des Dezimalsystems stehen. Wenn wir die kleine Rechnung auf der rechten Seite der Gleichung durchführen, bekommen wir den entsprechenden dezimalen Wert: 1101 01102 = (1*128 + 1*64 + 0*32 + 1*16 + 0*8 + 1*4 + 1*2 + 0*1)10 = 21410 Die duale Zahl 1101 0110 entspricht also der dezimalen Zahl 214. Die Umrechnung von dezimalen in binäre Zahlen Bei der Umrechnung der Dezimalzahlen verwenden wir die "Division mit Rest" aus der Grundschule. Wir teilen die Zahl solange durch 2, bis als Ergebnis 0 herauskommt und merken uns dabei den Rest. Als Beispiel soll die dezimale Zahl 13 dienen. 13 : 2 = 6 Rest 1 6 : 2 = 3 Rest 0 3 : 2 = 1 Rest 1 1 : 2 = 0 Rest 1 Die Reste von unten nach oben aneinander gereiht ergeben dann die Dualzahl 1101. Hans Wypior - 3 - 15. Mai 2013 Technische Informatik Die Addition von Dualzahlen Die Addition im Zweiersystem funktioniert wie die Addition von Dezimalzahlen: 0111 + 0100 ---1011 Bei der Addition von 2 Ziffern im Dezimalsystem kann ein Übertrag entstehen, wie z.B. bei 5 + 5 = 0 Übertrag 1. Da der Übertrag zur nächst höheren Stelle hinzuaddiert wird, ergibt sich 5 + 5 = 10. Dasselbe gilt auch im Dualsystem: 1 + 1 = 0 Übertrag 1, also 1 + 1 = 10. Vorsicht Überlauf! Die Addition ist im Prinzip problemlos. Es gibt allerdings einen Haken an der Sache: Die Addition funktioniert in technischen Geräten, wie Taschenrechner oder Computer nur innerhalb eines bestimmten Zahlenbereiches. Woran liegt das? In der Theorie können wir beliebig große Zahlen darstellen. In der Praxis ist aber die maximale Größe einer Zahl durch den begrenzt vorhandenen Speicher eingeschränkt. Um die dadurch entstehenden Probleme zu studieren, schränken wir hier den Speicher auf ein Byte ein. Bei einem Byte ist unsere größte darstellbare Zahl die 1111 1111, also dezimal 255. Was passiert nun, wenn wir eine 0000 0001, also 1, addieren? Das Verrückte ist: es kommt 0000 0000, also 0 heraus. Da binär bekanntlich 1+1=0 Übertrag 1 ergibt, erhält man als Ergebnis in Wirklichkeit nicht 0000 0000, sondern 0000 0000 Übertrag 1. Dieser letzte Übertrag kann jedoch nicht mehr gespeichert werden und wird deshalb einfach ersatzlos gestrichen. Komplemente Subtraktion, Komplementbildung Die Subtraktion wird in einem Computer auf die Addition negativer Zahlen zurückgeführt. Die Darstellung negativer Zahlen wiederum erfolgt durch die sogenannte Komplementbildung, speziell für Dualzahlen durch Bildung von Einer- und Zweierkomplement. Was es mit dem Komplement auf sich hat, soll an einem Beispiel mit Hilfe von Dezimalzahlen verdeutlicht werden: Hans Wypior - 4 - 15. Mai 2013 Technische Informatik herkömmliche Rechnung 3265 - 1546 Komplementrechnung 3265 + 8453 Neunerkomplement: Ergänzung jeder Ziffer auf die 9 Kein Übertrag Zehnerkomplement: Ergänzung jeder Ziffer auf die 10 ggf. Übertragsbildung -----11718 + 1 -----11719 - 10000 ------ ------ 1719 1719 Was ist der Sinn der Rechnung mit den Komplementen? Zunächst erkennt man, dass nur die 10000 subtrahiert werden muss. Während der gesamten Rechnung entfällt das "Borgen" von Ziffern, weil die Ergänzung auf das Neunerkomplement kein Borgen notwendig macht Aber das eigentlich Interessante ist, dass diese Methode in jedem Zahlensystem funktioniert. Man muss lediglich folgende Vorgehensweise einhalten: • • • Von der zu subtrahierenden Zahl wird das Komplement durch Ergänzung auf die höchste Ziffer des betreffenden Zahlensystems gebildet (Dezimalsystem: Neunerkomplement) Durch Addition von 1 ergibt sich das Komplement bezogen auf die Basis (Dezimalsystem: Zehnerkomplement) Subtraktion derjenigen Potenz der Basis, die um eine Stelle größer ist, als die größte an der Rechnung beteiligten Zahl (im Beispiel: Subtraktion von 10000 = 104, größte beteiligte Zahl: 3265) Hans Wypior - 5 - 15. Mai 2013 Technische Informatik Negative Zahlen Subtraktion von Dualzahlen Wir übertragen unsere Erkenntnisse auf ein Beispiel mit Dualzahlen und gehen systematisch anhand der obigen Anleitung vor. Berechnet werden soll (89 - 59)10 = (0101 1001 - 0011 1011)2 = 3010 = 0001 11102 1. Da die höchste Ziffer im Zweiersystem die 1 ist, müssen wir die zu subtrahierende Zahl ziffernweise auf 1 ergänzen. Wir erhalten das Einerkomplement 2. Durch Addition von 1 ergibt sich das Zweierkomplement 3. Subtraktion der Potenz 28 liefert das Ergebnis herkömmliche Rechnung Komplementrechnung 0101 1001 0101 1001 - 0011 1011 + 1100 0100 Einerkomplement: Ergänzung jeder Ziffer auf die 1 Schritt 1 Zweierkomplement: Ergänzung jeder Ziffer auf die 210 = 102 Schritt 2 --------1 0001 1101 + 1 --------1 0001 1110 Schritt 3 - 1 0000 0000 --------- --------- 0001 1110 0001 1110 Ein genialer Schachzug Die Bildung des Einerkomplementes erfolgt, wie oben aus dem Beispiel zu entnehmen ist, einfach durch Vertauschen von 1 und 0 der gegebenen Zahl. Die geniale Idee ist nun folgende: Wenn in einem Computer (bzw. Taschenrechner) eine Zahl mit 1 Byte Breite dargestellt wird, so wird das Ergebnis unter Schritt 1 schon nicht mehr vollständig gespeichert. Das führende Bit entfällt wegen der nicht vorgesehenen Speicherbreite. Damit braucht aber die Subtraktion unter Schritt 3 nicht mehr ausgeführt zu werden! Fazit: Ein Computer subtrahiert Zahlen, ohne subtrahieren zu müssen. Das Ergebnis kommt alleine durch Bitinvertierung und Additionen zustande! Hans Wypior - 6 - 15. Mai 2013 Technische Informatik Negative Dualzahlen Bekanntlich kann man die Subtraktion positiver Zahlen durch die Addition negativer Zahlen ersetzen. Da bei fester Stellenzahl die Subtraktion einer Dualzahl durch die Addition ihres Zweierkomplementes ersetzt werden kann, liegt es nahe, das Zweierkomplement als negative Zahl zu definieren. Beispiel: - 5010 = -(0011 0010)2 = (1100 1101 + 1)2 = (1100 1110)2 Positive und negative Zahlen gleichzeitig Besitzt eine Zahl die Breite von 1 Byte und sind positive und negative Zahlen zugelassen, so müssen die 256 möglichen Kombinationen von 0 und 1 in zwei Teile zerlegt werden, nämlich in 128 positive und 128 negative Zahlen. Man erkennt unschwer, dass positive Zahlen an der führenden 0, negative Zahlen an der führenden 1 zu identifizieren sind. Bereich positiver Zahlen dezimal 0 .. 127 binär 0000 0000 .. 0111 1111 Bereich negativer Zahlen -1 .. -128 1111 1111 .. 1000 0000 Mehrere Bytes umfassende Zahlen Für Zahlen, die größer als ein Byte sind, ändert sich sinngemäß nichts. Der zur Verfügung stehende Bereich wird bei Zulassen von negativen Zahlen ebenfalls in zwei gleich große Teile geteilt. Wie schon oben beschrieben, beginnen positive Zahlen mit einer führenden 0, negative mit einer führenden 1. Dasjenige Byte, das das Vorzeichenbit enthält, heißt Most significant Byte (kurz MSB), dasjenige, das die Potenz 20 enthält, heißt Least significant Byte (kurz LSB). Sinnvollerweise rechnet man bei umfangreicherem Speicher im Hexadezimalsystem. Beispiel: Für die Darstellung von Zahlen stehen 3 Bytes zur Verfügung. Welche hexadezimale Darstellung hat die dezimale Zahl –7523? - 752310 Hans Wypior = = = = -(1D63)16 -(001D63)16 (FFE29C + 1)16 FFE29D16 7523 in hexadezimale Darstellung bringen dann auf 3 Bytes ergänzen 15-er Komplement bilden 16-er Komplement liefert das Ergebnis - 7 - 15. Mai 2013 Technische Informatik Bauelemente Nachfolgend werden die Bauelemente Gatter und Flipflop beschrieben. Flipflops sind Speicherbausteine, Gatter verknüpfen binäre Eingangssignale zu einem Ausgangssignal. Die in der Technik gebräuchlichsten Gatter sind Und- und Oder-Gatter sowie ihre Negate Nand- und Nor-Gatter. Gatter besitzen mindestens 2 Eingänge. Im Handel kann man Gatter mit bis zu 20 Eingängen erhalten. Das Und-Gatter Wahrheitstafel Merke: Ein Und-Gatter besitzt an seinem Ausgang genau dann den Zustand logisch 1, wenn alle Und-Gatter-Eingänge logisch 1 sind. Das Oder-Gatter Wahrheitstafel Merke: Ein Oder-Gatter besitzt an seinem Ausgang genau dann den Zustand logisch 0, wenn alle Oder-Gatter-Eingänge logisch 0 sind. Das Flipflop Das Flipflop ist ein Ein-Bit-Speicher. Es kann an seinem Ausgang den logischen Zustand 0 oder 1 annehmen. Der invertierte Ausgang besitzt immer genau den entgegengesetzten Zustand. Wird der Takteingang mit einem Rechteckimpuls getaktet, so ändert das Flipflop seinen Zustand. Die Zustandsänderung erfolgt je nach Beschaltung der Vorbereitungseingänge. Der Hans Wypior - 8 - 15. Mai 2013 Technische Informatik Begriff "toggeln" besagt, dass das Flipflop nach jedem Takt den Zustand des Ausgangs ändert (aus 1 wird 0, aus 0 wird 1). Der Takteingang reagiert dabei nicht auf den Signalpegel, sondern auf die Taktflanke. Im vorliegenden Schaltsymbol handelt es sich um die fallende Taktflanke. Man erkennt dies am schwarz ausgefüllten Dreieck des Takteingangs. Ein nicht ausgefülltes Dreieck steht für die steigende Taktflanke. Dynamische Schaltungen Das Schieberegister Ein Schieberegister besteht aus mehreren Flipflops, die derart verschaltet sind, dass mit jedem Takt der Inhalt der Flipflops um ein Bit nach rechts geschoben wird. Das letzte Bit entfällt. Sinnvollerweise werden Nullen nachgeschoben (also J=0, K=1). Wird der Inhalt des Schieberegisters als Binärzahl verstanden, so halbiert sich nach jedem Takt der Wert der Zahl. Das Schieberegister kann daher auch als "Teiler durch 2" verwendet werden. Das Ringschieberegister Beim Ringschieberegister wird das letzte Bit beim Schiebevorgang in das erste Flipflop geschoben. Besteht ein Ringschieberegister z.B. aus 4 Flipflops, so ist nach vier Takten wieder der ursprüngliche Inhalt vorhanden. Wird nur 1 Bit gesetzt, so stellt das Ringschieberegister ein Lauflicht dar. Hans Wypior - 9 - 15. Mai 2013 Technische Informatik Der Dualzähler Der Dualzähler ändert automatisch die Zustände der Flipflops derart, dass alle Dualzahlen von 0 bis zur maximalen von der Anzahl der Flipflops abhängigen Zahl in der natürlichen Reihenfolge angezeigt werden. Funktionsweise des Zählers: Die fallenden Taktflanken bewirken eine Zustandsänderung des jeweiligen Flipflops. Wie man dem unten stehenden Bild entnehmen kann, halbiert sich die Taktanzahl pro Zeiteinheit mit zunehmender Zweier-Potenz. Der Zähler ist deshalb auch als Frequenzteiler einsetzbar. Dualzähler von 0 .. 9 Der vorliegende Dualzähler zählt von 0 bis 9 und bildet damit die Dezimalziffern ab. Um zu erreichen, dass die 9 als letzte Ziffer angezeigt wird, wird der Zustand 1010 (dezimal 10) zum Erzeugen eines Reset-Signals abgefragt. Funktionsweise der Resetschaltung: Ein UND-Gatter liefert bekanntlich genau dann eine 1 am Ausgang, wenn alle Eingänge 1 sind (sonst ist es immer 0!). Da nur bei der Binärzahl 1010 der Reset erfolgen soll, darf der UND-Gatterausgang auch nur bei dieser Zahl auf 1 wechseln. Die für die Eingänge notwendigen Einsen sind bei den Flipflops 2 1 und 23 am Ausgang, bei den Flipflops 2 0 und 2 2 am invertierten Ausgang zu finden. Nun ist aber der Reset-Eingang der Flipflops 0-sensitiv. Deshalb muß das Signal am UNDGatter-Ausgang noch invertiert werden, weshalb gleich der invertierte Ausgang benutzt wird. Hans Wypior - 10 - 15. Mai 2013 Technische Informatik Statische Schaltungen Das Nandgatter als Resetschaltung beim obigen Dualzähler stellt eine einfache statische Schaltung dar. Abhängig von den Eingangssignalen wird ein Ausgangssignal generiert. Die Schaltungsentwicklung soll nun systematisiert werden. Zur Ermittlung der notwendigen Steuerschaltung legt man eine Tabelle an, die aus allen Kombinationen von Eingangssignalen und dem gewünschten Ausgangssignal besteht. Das Ausgangssignal ist damit eine Funktion der Eingangssignale. Man bestimmt also aus der Tabelle zuerst die Schaltfunktion und entwickelt aus dieser die Gatterschaltung. Beispiel: Gegeben sind drei Flipflops mit den Bezeichnungen a,b,c. Die Funktion f erhält man nun, indem alle Konjunkte bestimmt werden, die eine 1 als Ausgangssignal liefern. Im vorliegenden Beispiel kann die Funktion den Wert 1 aus den Konjunk–– – – ten a b c oder a b c oder a b c erhalten. – – –– Also ist die Funktion genau dann 1, wenn a b c = 1 oder a b c = 1 oder a b c = 1 gilt. Ansonsten ist sie 0. Hat man den Schaltterm aus der Tabelle entnommen, kann man die Gatterschaltung zeichnen: Hans Wypior - 11 - 15. Mai 2013 Technische Informatik Normalformen Ein logischer Ausdruck der Form heißt disjunktive Normalform ( kurz DN ), wenn alle Ki paarweise nicht äquivalente Konjunktionsterme sind. Beispiele für disjunktive Normalformen: Eine disjunktive Normalform einer Funktion f(a1,a2,...,an) heißt kanonisch ( oder ausgezeichnet ), kurz KDN, wenn jeder der vorhandenen Konjunktionsterme alle n Variablen enthält und keine zwei Konjunktionsterme äquivalent sind. Beispiel für eine kanonische disjunktive Normalform einer Funktion f(a,b,c): Ein aus einer vollständigen Wahrheitstafel entnommener Schaltterm liegt in der kanonischen disjunktiven Normalform vor. Die Konjunktionsterme einer KDN heißen n-stellige Minterme. Da die Belegung der Variablen, die den Wert 1 für einen Minterm liefert, eindeutig ist, charakterisiert sie das entsprechende Konjunkt. Übersetzt man das zugehörige Binärmuster in einen dezimalen Wert, so kann man auf die aufwendige Schreibweise mit Hilfe der Variablen und ihrer Negate ganz verzichten. Es muß nur klar sein, von welchen Variablen der Minterm abhängt. Beispiel: In Mintermschreibweise: Hans Wypior - 12 - 15. Mai 2013 Technische Informatik Boole'sche Algebra Boole' sche Funktionen Die Verknüpfung von zwei Boole'schen Variablen a und b kann auf 16 verschiedene Arten erfolgen, die durch die nachfolgend aufgeführten zweistelligen Funktionen f0 bis f15 beschrieben werden. Für einige der zweistelligen Boole'schen Funktionen werden Operator-Symbole und besondere Namen benutzt, wobei die Operatoren-Schreibweisen unterschiedlich gehandhabt werden. Gesetze der Boole'schen Algebra Nachfolgend sind die Gesetze der Boole'schen Algebra mit den zweistelligen Verknüpfungsoperationen UND und ODER sowie der einstelligen Verknüpfung NICHT aufgeführt. Hans Wypior - 13 - 15. Mai 2013 Technische Informatik Schaltungsvereinfachung Die aus einer Tabelle entnommene Normalform einer Funktion f stellt in aller Regel nicht die einfachste Schaltung dar. Mit Hilfe der Gesetze der Boole'schen Algebra kann man den gegebenen Term durch Äquivalenzumformungen soweit verändern, dass der Aufwand an logischen Gattern möglichst gering wird. Ein Beispiel in 3 Varianten: Man erkennt, dass durch Verdoppelung eines Konjunktes in der 3. Lösung eine weitergehende Vereinfachung erreicht werden kann, als bei den beiden Lösungen zuvor. Das nachfolgende Vereinfachungsverfahren macht systematisch von der Termverdoppelung und anschließender Vereinfachung gebrauch. Schaltungsvereinfachung nach Quine – McCluskey Die Funktion soll so weit wie möglich vereinfacht werden. Dazu teilt man die Konjunkte in Gruppen ein, wobei die Anzahl der Negate in jeder Gruppe gleich groß ist. Die Elemente in benachbarten Gruppen unterscheiden sich in genau einem Querstrich. Hans Wypior - 14 - 15. Mai 2013 Technische Informatik Eine übersichtlichere Darstellung erhält man, wenn man die Minterme durch ihre binären Äquivalente in der Tabelle ersetzt. Die Gruppeneinteilung wird dann nach der Anzahl der Nullen in den Konjunkten vorgenommen. Es ergibt sich folgende Darstellung: Schaltungsvereinfachung mit dem Primimplikantenverfahren Der nach dem Verfahren von Quine-McCluskey erzeugte Schaltungsterm ist der einfachste, der mit Hilfe der Gesetze der Boole'schen Algebra erzeugt werden kann. Dass dieser Term dennoch nicht der einfachste zu sein braucht, zeigt der Vergleich der Wahrheitstafeln von Der Grund liegt darin, dass immer dann, wenn der Term a c den Wert 1 annimmt, auch einer der beiden anderen Terme gerade den Wert 1 besitzt. Man nennt diesen Sachverhalt Überdeckung. Die zugehörige mathematische Theorie der Prim- und Kernprimimplikanten soll hier nicht weiter vertieft werden. Die folgende Tabelle illustriert das Verfahren. Die ermittelte Lösung muß nicht eindeutig sein. Man muß nur sicherstellen, dass alle Minterme der Ausgangsfunktion im Ergebnis repräsentiert werden. Im obigen Beispiel gibt es keine weitere Lösung. Zum Beispiel darf der Term b c in der Lösung nicht fehlen, da sonst die Minterme m 2 und m 3 im Ergebnis nicht vertreten wären. Hans Wypior - 15 - 15. Mai 2013 Technische Informatik Die Verkehrsampel Am Beispiel einer einfachen Ampelschaltung soll nun systematisch gezeigt werden, wie man mit dem besprochenen Know-how von einer Idee zur schaltungstechnischen Umsetzung gelangt. Für eine geeignete Lichtfolge eines Ampelkörpers genügen 8 Zeiteinheiten. Diese werden von einem Dualzähler vorgegeben, der von 0 bis 7 zählt. Die entsprechenden Leuchtzustände der 3 Lampen werden gemäß der nachfolgenden Tabelle definiert. Aus der Tabelle entnimmt man die Schaltterme für die drei Lampen in kanonischer disjunktiver Normalform. Es ergibt sich: Die Termvereinfachung nach Quine - McCluskey liefert Hans Wypior - 16 - 15. Mai 2013 Technische Informatik Das Computermodell Das Minimalmodell eines Computers besteht aus Rechenwerk, Speicherwerk und Steuerwerk. Das Rechenwerk stellt Rechenoperationen zur Verfügung, das Speicherwerk besteht aus Schieberegistern und gestattet neben der eigentlichen Aufgabe, Daten binär zu speichern, Schiebeoperationen. Das Steuerwerk koordiniert den Datenfluss, indem es den Speicher adressiert und die Befehlsdekodierung übernimmt. Für das Grundverständnis der Funktionsweise eines Computers soll im weiteren Verlauf ein Rechenwerk entwickelt werden, das es gestattet, Dualzahlen zu addieren und mit Hilfe des Zweierkomplementes Dualzahlen zu subtrahieren. Voraussetzung zum Bau des Rechenwerkes sind zwei Schaltungen, die zwei Ziffern der Binärzahlen addieren und die Summe sowie den Übertrag als Ergebnisse bereit stellen können. Es sind dies der Halbaddierer und der Volladdierer. Der Halbaddierer Der Halbaddierer addiert genau zwei Ziffern. Dieses Problem tritt grundsätzlich bei der Addition der beiden niederwertigsten Bits von zwei Binärzahlen auf. Der Volladdierer Der Volladdierer kommt bei den höherwertigen Bits zum Einsatz. Hier muss außer den beiden Ziffern der gegebenen Zahlen auch noch der Übertrag der vorherigen Addition berücksichtigt werden. Somit addiert der Volladdierer drei Ziffern. Hans Wypior - 17 - 15. Mai 2013 Technische Informatik Das Rechenwerk Die nachfolgende Schaltung soll vierstellige Dualzahlen addieren und die Summe sowie den Übertrag zur Verfügung stellen. Sie ist als serielles Rechenwerk ausgeführt. Die 1. Zahl befindet sich im Register (Arbeitsspeicher), die 2. Zahl ist im Akkumulator untergebracht. Der Akkumulator ist Teil des Prozessors. Er ist ebenfalls ein Speicher, aber anders als der Arbeitsspeicher wird er zur Aufnahme des Rechenergebnisses benutzt. Zu Beginn der Rechnung muss der Übertragsspeicher auf 0 gesetzt werden. Dieses ist notwendig, weil als Addierschaltung ein Volladdierer verwendet wird. Nach viermaligem Takten steht die Summe im Akkumulator zur Verfügung, während im Register die 1. Zahl erhalten bleibt. Speicheradressierung Zur wahlweisen Benutzung eines Registers des Arbeitsspeichers ist es notwendig, die beteiligten Register am Ausgang mit einer Tor-Steuerung zu versehen. Außerdem bekommt jeder Speicher eine eigene Adresse (eine Nummer). Soll nun ein bestimmter Speicher an der Rechenoperation beteiligt sein, so wird seine Adresse in das Adress-Register geschrieben. Das hat zur Folge, dass nun nur noch Daten aus dem ausgewählten Register über das Tor zum Adder gelangen. Wie man der Tabelle entnehmen kann, kann die Funktionsweise des Und-Gatters so interpretiert werden, dass ein Eingang des Und-Gatters als Steuerleitung und der andere als DatenleiHans Wypior - 18 - 15. Mai 2013 Technische Informatik tung dient. Ist die Steuerleitung logisch 1, so gelangen die Daten zum Ausgang, andernfalls ist der Ausgang logisch 0. Da die Null neutrales Element hinsichtlich der Oder-Verknüpfung ist, stört sie den Datenfluss aus anderen Registern nicht. Adressendekoder Zur Aufnahme der Adresse von 2 Registern reicht 1 Flipflop. Steht mehr Speicher zur Verfügung, benötigt man ein entsprechend größeres Register, wobei die Adresse genauso wie die Daten in binärer Darstellung gespeichert werden. Also: Für 2 Speicher benötigt man 1 Flipflop, für 4 Speicher braucht man 2 Flipflops, für 8 Speicher sind 3 Flipflops notwendig, usw. Allgemein benötigt man für 2n Speicher n Flipflops. Andererseits besitzt jeder Datenspeicher ein Tor am Ausgang, sodass bei einem Speicher der Größe 2n auch tatsächlich 2n Steuerleitungen bedient werden müssen. Die Aufgabe, aus n Eingangsgrößen 2n Ausgangsgrößen zu erzeugen, übernimmt ein Binär-zu-DezimalDekoder. Innere und äußere Adressdekodierung Großer Speicher erfordert umfangreiche Speicherverwaltung. Zu jedem Speicherbaustein führt der Adressbus, der die niederwertigen Teile der Adresse überträgt und die Adressen auf dem Chip vollständig dekodiert. Die höherwertigen Adressanteile werden dagegen extern dekodiert und als Chip-Select-Signal (kurz CS-Signal) zum Speicher geführt. Die nachfolgende Schaltung dekodiert einen 64 KByte großen Speicher. Bei den Dekodern handelt es sich um BCD-zu-Dezimal-Dekoder (BCD: Binär Coded Decimal, d.h., Eingangsgrößen sind Binärzahlen aus dem Bereich 0000 .. 1001, also dezimal 0 bis 9). Hans Wypior - 19 - 15. Mai 2013 Technische Informatik Jeder der Dekoder besitzt 10 Ausgänge, wovon aber nur 8 (0 .. 7) benutzt werden. Das hat zur Folge, dass von den Eingangsleitungen nur die niederwertigen 3 Leitungen für die Dekodierung erforderlich sind. Ist die 4. Eingangsleitung logisch 1, so wird eine Ausgangsleitung selektiert, die nicht benutzt wird. Daher kann die 4. Eingangsleitung als Chip-Select-Leitung angesehen werden. Dekoder A (Adressleitungen A13 .. A15) erzeugt 8 CS-Signale für die nachfolgenden Dekoder B0 bis B7. Zu jedem dieser Dekoder werden die Adressleitungen A10 .. A12 sowie die zugehörige CS-Leitung geführt. Diese wiederum erzeugen CS-Signale für die 1KByte großen Speicherbausteine. Beispiel: Der Speicher mit der Adresse BCA3h soll dekodiert werden. Dann gilt: BCA316 = 1011 1100 1010 00112 Dekoder A : 0 101, also CS = 5 Dekoder B5: 0 111, also CS = 7 Assemblerbefehle Die Festlegung des Befehlssatzes erfolgt in Abhängigkeit der zu realisierenden Hardware. Jedem Maschinenbefehl werden ein Binärmuster und ein Mnemonic (Befehlskürzel) zugeordnet. Ein vollständiger Befehl kann aus einem oder mehreren Bytes bestehen. Im ersten Byte steht der Maschinenbefehl, die weiteren Bytes nehmen Speicheradressen oder direkte hexadezimale Werte auf. Z.B. bedeutet bei einem Pentium-Prozessor der Befehl MOV Ziel, Quelle, dass von einer Quelladresse der Inhalt zu einer Zieladresse bewegt werden soll. Quelle und Ziel können Speicheradressen oder Prozessorregister sein. Quelle kann auch ein direkter hexadezimaler Wert sein, der in eine Zieladresse geschrieben werden soll. Für das Computermodell sollen folgende Befehle realisiert werden: Binärcode Assemblerbefehl Bedeutung Lade den Akkumulator mit dem Wert eines Registers 00 LDA 01 STA 10 ADC Addiere zum Akkumulator den Wert eines Registers zuzüglich Carry (Übertrag), Ergebnis im Akku 11 SBC Subtrahiere vom Akkumulator einen Registerinhalt unter Berücksichtigung von Carry, Ergebnis im Akku Hans Wypior Speichere den Akkumulatorinhalt in ein Register - 20 - 15. Mai 2013 Technische Informatik Datenwegsteuerung Die Daten werden auf verschiedenen Wegen innerhalb des Computers transportiert. Für jeden Befehl müssen bestimmte Wege frei geschaltet und andere gesperrt werden. Dabei sollen grundsätzlich die Daten erhalten bleiben, wenn sie nicht gezielt geändert werden sollen. Im vorliegenden Modell ergeben sich folgende Datenwege, die durch Tore gesteuert werden müssen: Datenweg Nr. Verlauf Beteiligte Befehle 0 Akkumulatorausgang zum Adder ADC, STA 1 invertierter Akkumulatorausgang zum Adder SBC 2 Ring des Schieberegisters ADC, LDA, SBC 3 Akkumulatorausgang zum Registereingang STA 4 Registerausgang zum Adder ADC, LDA, SBC Beim ADC-Befehl muss beachtet werden, dass der Übertragspeicher (Carry-Flag) vor der Addition auf 0 gesetzt wird, beim SBC-Befehl auf 1 (Übergang vom Einer- zum Zweierkomplement). Der LDA-Befehl funktioniert ebenfalls nur korrekt, wenn der Übertrag 0 ist und der Datenweg vom Ausgang des Akkumulators gesperrt (logisch 0) ist. In diesem Fall addiert der Adder zu den Registerdaten 0. Beim STA-Befehl sollen vereinbarungsgemäß die Akkumulatordaten erhalten bleiben. Deshalb muss der Datenweg 0 als Ring funktionieren. Folgerichtig müssen wieder der Übertrag 0 und der Registerausgang (Datenweg 4) gesperrt sein. Hans Wypior - 21 - 15. Mai 2013 Technische Informatik Befehlsdekodierung Für die Befehlsdekodierung ist eine Sortierung der Befehle nach Datenwegen erforderlich: Befehl Datenwege LDA 2,4 STA 0,3 ADC 0,2,4 SBC 1,2,4 Assemblerprogrammierung Der im Mikroprozessor bereit gestellte Befehlssatz stellt das Grundgerüst für alle Programme dar, die auf einem Computer ablaufen. Ein aus Mikroprozessor-Anweisungen geschriebenes Programm nennt man ein Assemblerprogramm, das zugehörige aus Hexadezimalzahlen bestehende Programm ist das Maschinenprogramm. Der Kern aller höheren Programmiersprachen besteht aus einem Bündel von Funktionen, die in Assembler geschrieben sind. Beispiel: Die Aufgabe 2x + y - z soll mit Hilfe des oben entwickelten Computermodells gelöst werden, wobei x,y,z natürliche Zahlen aus dem Dezimalzahlbereich 0..15 sein dürfen. Alle Eingaben erfolgen über den Akkumulator. LDA STA CLC ADC STA LDA CLC ADC STA LDA STA LDA SEC SBC #x Reg 0 Reg 0 Reg 0 #y Reg Reg #z Reg Reg 0 0 1 0 Reg 1 Hans Wypior Zahl x in den Akkumulator schreiben (unmittelbare Adressierung) x in Register 0 speichern Übertragspeicher löschen (Befehl Clear Carry im Modell von Hand durchführen) Ergebnis x+x = 2x im Akku 2x in Register 0 speichern vor jeder Addition Carry löschen! 2x + y im Akku 2x + y in Register 0 speichern z in Register 1 speichern 2x + y in Akku vor der Subtraktion wegen der Zweierkomplement-Arithmetik Carry = 1 setzen 2x + y - z in Akku - 22 - 15. Mai 2013