===== Hardwareumsetzung ===== Wir haben nun unseren Volladdierer in drei einfacherer Teile zerlegt, aber das ist noch nicht einfach genug um es zu bauen. Wir müssen erst noch unsere Halbaddierer auf seine booleschen Operatoren vereinfachen, was zum Glück nicht so schwer ist. \\ Aus dem Teil über den Halbaddierer wissen wir, dass s= x ⊕ y und c = x ∧ y ist. Damit brauchen wir nun 2 Logik-Gatter, die die exklusiv-Oder und "Und"-Operation durchführen: \\ {{:electronics:projects:xor-gatter.png|XOR-Gatter}} \\ \\ Stellt ein XOR-Gatter dar und: \\ {{:electronics:projects:und-gatter.png|Und-Gatter}} \\ \\ ein "Und"-Gatter. Wir müssen das ganze nur noch Verbinden, x und y an die Eingänge des Und- und XOR-Gatters anschließen und das Ergebnis der XOR-Operation ist unser s und das Ergebnis der &-Verknüpfung unser c. Macht als schematische Darstellung:\\ {{:electronics:projects:halbaddierer-schematisch.png|Halbaddierer aus XOR- und Und-Gatter}} \\ \\ und Eingefügt in unseren Volladdierer ergibt sich folgendes Bild:\\ {{:electronics:projects:volladdierer-schematisch.png|Volladdierer aus Und-, Oder- und Xor-Gattern}}\\ \\ Damit können wir schon fast unseren Volladdierer aufbauen, aber vorher müssen wir uns noch über die Realisierung der Gatter und das Addieren von 4-Bit-Breiten Variablen Gedanken machen. ===== 4-Bit Addieren ===== Bevor wir uns nun um die Umsetzung unseres Volladdierers auf Hardwareebene kümmern, müssen wir uns erst einmal eine Lösung überlegen, um unsere **4-Bit** breiten Variablen zu addieren, denn unserer einfacher Volladdierer kann nur zwei **1-Bit** breite Variablen und einen Übertrag addieren. Und im Übertrag liegt auch unsere Lösung: \\ Wir schalten 4 Volladdierer hintereinander, wobei wir an x und y jedes Volladdierers jeweils die entsprechende Stelle der 4-Bit-Variablen(der erste Volladdierer die erste Stelle, der Zweite die zweite Stelle usw.) anschließen und die c_OUT Pins mit den c_IN Pins des nächsten, höherwertigen Volladdierers verbinden. Zur Verdeutlichung als Schema-Plan: \\ {{:electronics:projects:4_bit_volladdierer.png|4-Bit Volladdierer aus 4 einzelnen Volladdierern}} \\ \\ Der erste Volladdierer ist mit der 0 gekennzeichnet. Wir sehen auch das der c_IN des ersten VA nicht angeschlossen ist, da man aber auch bei der Schriftlichen Addition an der ersten stelle kein Übertrag hat, ist dies hier korrekt. Am c_OUT des letzten VA wird die 5-Stelle der binären Addition ausgegeben. Somit müssen wir nur noch unsere Gatter bauen. ===== Gatter aus TTL ===== Unsere Gatter sind momentan nur Theoretisch vorhanden, also wird es Zeit, sie in TTL(Transistor-Transistor-Logik) umzusetzen. Dazu noch ein paar Vorüberlegungen: * Jeder "höhere" boolesche Operator lässt sich durch AND, OR und NOT darstellen, z.b kann man ein XOR mit (overline{A} ∧ B) ∨ (A ∧ overline{B}) darstellen. * Eine logische 1 kann man als Strom an und eine logische 0 als Strom aus betrachten. * Ein Transistor ist ein Bauelement, das über eine Steuerspannung auf der Basis einen Widerstand zwischen Kollektor und Emitter niederohmig werden lässt, je nach Bauart (NPN oder PNP) bei einer logischen 1(NPN) oder einer logischen 0(PNP)(Dies ist eine starke Vereinfachung, genaueres hier: [[electronics:knowledge:transistor|Transistoren]]). Mit diesen Informationen können wir nun unser erstes Gatter bauen, das UND-Gatter.\\ ==== UND-Gatter in TTL ==== {{:electronics:projects:und-gatter.png|UND-Gatter}}\\ \\ Wir haben also 2 logische Eingänge und wollen 1 logischen Ausgang haben. Zusätzlich wissen wir, dass wir nur eine logische 1 auf dem Ausgang haben wollen, wenn beide Eingänge auch logisch 1 sind. \\ Eine Lösung ist denkbar einfach: Es werden zwei NPN-Transistoren hintereinander geschaltet und an dem 2 NPN greifen wir dann den Output ab: \\ {{:electronics:projects:ttl-und.jpg|TTL-UND}} \\ \\ Die Widerstände dienen hier der Strombegrenzung, damit kein Kurzschluss entsteht. Diese müssen auf die Transistoren und Arbeitsspannung angepasst sein, damit die Basis eines Transistors immer genug Strom bekommt, um richtig Durchzuschalten.\\ Aber wir sind noch nicht am Ziel, wir brauchen noch zwei zusätzliche Logikgatter: ODER und NICHT.\\ Auch hier ist die Umsetzung nicht so Kompliziert:\\ ==== ODER-Gatter in TTL ==== Das Logische-ODER Realisieren wir mit 2 parallel geschalteten NPN-Transistoren und verbinden jeweils den Emitter beider Transistoren, wo wir dann auch den Output abgreifen: \\ {{:electronics:projects:ttl-oder.jpg?400|TTL-ODER}} \\ \\ ==== NICHT-Gatter in TTL ==== Die NICHT Schaltung besteht nur aus einem NPN, den Output greifen wir aber nicht am Emitter wie bei UND bzw. ODER sondern am Kollektor. Damit ist bei einer logischen 0 an der Basis des Transistors eine logische 1 am Ausgang des Gatters:\\ {{:electronics:projects:ttl-inverse.png?400|NOT-Gatter}} \\ \\ ==== XOR-Gatter in TTL ==== Wie vorhin schon erwähnt können wir XOR auch durch AND, OR und NOT ausdrücken, also lässt es sich auch aus diesen teilen Bauen: \\ {{:electronics:projects:ttl-xor.jpg?400|TTL-XOR}} \\ \\ ===== Fazit ===== Aber wenn wir uns wieder daran erinnern, das wir für jeden Volladdierer 2 XOR-Gatter und zusätzlich noch zwei AND- und ein OR-Gatter brauchen, bemerken wir, wie groß das Projekt so werden würde: 88 Transistoren + weit über 100 Widerstände sind etwas viel Arbeit, also müssen wir uns Gedanken über Optimierung machen: [[electronics:projects:adder:build|Optimieren und bauen]] \\ \\ [[electronics:projects:adder:theory|<>]]