Addierer (Elektronik)
Ein Addierer, oder Sommer,[1] ist ein Digitaler Schaltung das läuft Zusatz Zahlen. In vielen Computers und andere Arten von Prozessoren Addierer werden in der verwendet Arithmetische Logikeinheiten (Alus). Sie werden auch in anderen Teilen des Prozessors verwendet, wo sie zur Berechnung verwendet werden Adressen, Tischindizes, Inkrement- und Decrement -Operatoren und ähnliche Operationen.
Obwohl Addierer für viele konstruiert werden können Zahlenpräsentationen, wie zum Beispiel Binärcodierte Dezimalzahl oder Überschuss-3Die häufigsten Addierer arbeiten weiter Binärzahlen. In Fällen, wo Zwei ergänzt oder Einen Ergänzung wird verwendet, um darzustellen Negative ZahlenEs ist trivial, einen Addierer in eine zu modifizieren Adder -Subtractor. Sonstiges Signierte Zahlen Darstellungen Erfordern Sie mehr Logik um den Basisaddierer.
Binäre Addierer
Halbaddierer


Das Halbaddierer Fügt zwei einzelne binäre Ziffern hinzu A und B. Es hat zwei Ausgänge, Summe (S) und tragen (C). Das Tragsignal repräsentiert eine Überlauf in die nächste Ziffer einer mehrstelligen Ergänzung. Der Wert der Summe ist 2C + S. Das einfachste halbmedizinische Design, das rechts abgebildet ist, enthält eine XOR -Tor zum S und ein Und Tor zum C. Die Boolesche Logik für die Summe (in diesem Fall S) wird sein A'B + AB ' wohingegen für den Carry (C) wird sein Ab. Mit einem Hinzufügen eines Oder Tor Um ihre Tragausgänge zu kombinieren, können zwei Halbadler kombiniert werden, um einen vollen Addier zu erstellen.[2] Der halbe Addierer fügt zwei Eingangsbits hinzu und erzeugt eine Trage und Summe, die die beiden Ausgänge eines halben Addierers sind. Die Eingabe Variablen von einem halben Addierer werden Augend- und Addend -Bits genannt. Die Ausgangsvariablen sind die Summe und tragen. Das Wahrheitstabelle Für den Halbaddier ist:
Eingänge Ausgänge A B C S 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0

Voller Addierer




A Voller Addierer Fügt Binärzahlen und Konten für eingetragene Werte sowie aus. Ein One-Bit-Volladder fügt drei Ein-Bit A, B, und Cin; A und B sind die Operanden und Cin ist ein bisschen aus der vorherigen weniger signifikanten Stufe.[3] Der vollständige Addierer ist normalerweise eine Komponente in einer Kaskade von Addern, die 8, 16, 32 usw. hinzufügen. Die Schaltung erzeugt einen Zwei-Bit-Ausgang. Ausgangstrage und Summe, die typischerweise durch die Signale dargestellt werden Caus und S, wo die Summe gleich ist 2Caus + S.
Ein vollständiger Addierer kann auf viele verschiedene Arten implementiert werden, beispielsweise mit einem Brauch Transistor-Levelschaltung oder aus anderen Toren. Eine Beispielimplementierung ist mit S = A ⊕ B ⊕ Cin und Caus = (A ⋅ B) + (Cin ≤ (A ⊕ B)).
In dieser Implementierung das Finale Oder Tor Bevor die Ausgabe durch die Durchführung durch eine ersetzt werden kann XOR -Tor ohne die resultierende Logik zu ändern. Die Verwendung von nur zwei Arten von Gates ist bequem, wenn die Schaltung mit einfachem implementiert wird Integrierter Schaltkreis Chips, die nur einen Gate -Typ pro Chip enthalten.

Ein vollständiger Addierer kann auch von zwei Halbzädern durch Anschließen konstruiert werden A und B zum Eingang von einem halben Addier S als einer der Eingänge in die zweite Hälfte Addierer und Cin Als andere Eingabe und schließlich sind die Trageausgänge von den beiden Halbfächern mit einem oder Gate verbunden. Der Summenausgang aus dem Addierer der zweiten Halbzeit ist die endgültige Summenausgabe (S) des vollen Addierers und der Ausgang vom oder des Gate ist die endgültige Trageausgabe (Caus). Der kritische Pfad eines vollständigen Addierers verläuft beide XOR -Gates und endet mit dem Summenbit s. Es wurde angenommen, dass ein XOR -Gate 1 Verzögerungen durchführt, um die Verzögerung durch den kritischen Pfad eines vollständigen Addierers zu verzeichnen
Der kritische Pfad eines Trages verläuft durch ein Xor-Tor in Addierer und durch 2 Tore (und und oder) in Trageblock, und daher, wenn und oder oder Tore 1 Verzögerung, hat eine Verzögerung von
Ein voller Addierer kann mit neun implementiert werden NAND -Tore.[4]
Das Wahrheitstabelle Für den vollen Addierer ist:
Eingänge Ausgänge A B Cin Caus S 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1
Invertiert alle Eingänge eines vollständigen Addierers auch alle seine Ausgänge, die für die Gestaltung schneller Ripple-Carry-Addierer verwendet werden können, da es nicht erforderlich ist, den Trage umzukehren.[5]
Addierer, die mehrere Bits unterstützen
Ripple-Carry-Addierer


Es ist möglich, einen logischen Schaltkreis mit mehreren vollständigen Addernern zum Hinzufügen zu erstellen N-bitnummern. Jeder vollständige Addierer gibt a Cin, was das ist Caus des vorherigen Addierers. Diese Art von Addierer heißt a Ripple-Carry-Addierer (RCA), da jedes "Wellen" zum nächsten vollständigen Addierer ist. Beachten Sie, dass der erste (und nur der erste) volle Addierer durch einen halben Addierer ersetzt werden kann (unter der Annahme, dass Cin = 0). Die Ausgabe des vorherigen Addierers (COUT n-1) als Eingabe an den nächsten Addierer (CIN) übergeben.
Das Layout eines Ripple-Wagen-Addierers ist einfach, was eine schnelle Designzeit ermöglicht. Der Ripple-Carry-Addierer ist jedoch relativ langsam, da jeder volle Addierer darauf warten muss, dass das Tragbit aus dem vorherigen vollen Addierer berechnet wird. Das Torverspätung kann leicht durch Inspektion des vollständigen Addiererschaltungskreises berechnet werden. Jeder volle Addierer benötigt drei Logikebenen. In einem 32-Bit-Ripple-Wolken-Addierer gibt es 32 vollständige Addierer, so Gate -Verzögerungen.[6] Die allgemeine Gleichung für die schlechteste Verzögerung für a n-Bit-Carry-Ripple Addierer, die sowohl die Summe als auch die Trageteile berücksichtigen, ist
Ein Design mit abwechselnden Tragpolaritäten und optimiert Und oder invertieren Tore können ungefähr doppelt so schnell sein.[7][5]

Carry-Lookahead Addierer
Um die Berechnungszeit zu verkürzen, entwickelten Ingenieure schnellere Möglichkeiten, um zwei Binärzahlen mithilfe der Verwendung hinzuzufügen Carry-Lookahead-Addierer (Cla). Sie arbeiten, indem sie zwei Signale erstellen (P und G) Für jede Bitposition, basierend darauf, ob ein Trage von einer weniger signifikanten Bitposition ausbreitet (mindestens ein Eingang ist 1), in dieser Bitposition erzeugt (beide Eingänge sind 1) oder in dieser Bitposition getötet (beide Eingänge sind 0). In den meisten Fällen, P ist einfach die Summenausgabe von einem halben Addierer und G ist die Trageausgabe desselben Addierers. Nach P und G werden generiert, die Trages für jede Bitposition werden erstellt. Einige fortgeschrittene Carry-Lookahead-Architekturen sind die Manchester Tragkette, Brent -Kung Addierer (BKA),[8] und die Kogge -Stone Addierer (KSA).[9][10]
Einige andere Multi-Bit-Addiererarchitekturen bringen den Addierer in Blöcke. Es ist möglich, die Länge dieser Blöcke basierend auf dem zu variieren Ausbreitungsverzögerung der Schaltkreise zur Optimierung der Rechenzeit. Diese blockbasierten Addierer enthalten die Carry-Skip- (oder Tragetypass) Addierer was bestimmen wird P und G Werte für jeden Block und nicht für jedes Bit und die Carry-Select Addierer Was die Summe vorgeneriert und Werte für eine mögliche Trageeingabe (0 oder 1) zum Block tragen, wobei Multiplexer das entsprechende Ergebnis ausgewählt haben Wenn Das Tragebit ist bekannt.

Durch die Kombination mehrerer Carry-Lookahead-Addierer können noch größere Addierer erstellt werden. Dies kann auf mehreren Ebenen verwendet werden, um noch größere Addierer zu machen. Zum Beispiel ist der folgende Addierer ein 64-Bit-Addierer, der vier 16-Bit-Clas mit zwei Ebenen von verwendet Lookahead Carry -Einheiten.
Andere Adder -Designs sind die Carry-Select Addierer, Bedingter Summenadder, Carry-Skip-Addiererund Carry-Complete Addierer.
Carry-Save-Addierer
Wenn ein Hinzufügungskreis die Summe von drei oder mehr Zahlen berechnen soll, kann es vorteilhaft sein, das Carry -Ergebnis nicht zu verbreiten. Stattdessen werden Drei-Input-Addierer verwendet und generieren zwei Ergebnisse: eine Summe und ein Tragen. Die Summe und der Trag können in zwei Eingaben des nachfolgenden 3-Nummer-Addlers eingespeist werden, ohne auf die Ausbreitung eines Tragsignals warten zu müssen. Nach allen Additionsstufen muss jedoch ein herkömmlicher Addierer (wie der Ripple-Carry oder das Lookahead) verwendet werden, um die endgültige Summe zu kombinieren und Ergebnisse zu führen.
3: 2 Kompressoren
Ein voller Addierer kann als als angesehen werden 3: 2 Verlustkompressor: Es fasst drei Ein-Bit-Eingänge zusammen und gibt das Ergebnis als einzelne Zwei-Bit-Zahl zurück. Das heißt, es ordnet 8 Eingabewerte auf 4 Ausgangswerte zu. Somit führt beispielsweise eine binäre Eingabe von 101 zu einem Ausgang von 1 + 0 + 1 = 10 (Dezimalzahl 2). Das Carry-out repräsentiert ein Bit eines der Ergebnisse, während die Summe Bit Null darstellt. Ebenso kann ein halber Addierer als verwendet werden 2: 2 VerlustkompressorKomprimieren Sie vier mögliche Eingänge in drei mögliche Ausgänge.
Solche Kompressoren können verwendet werden, um die Summe von drei oder mehr Addends zu beschleunigen. Wenn die Addends genau drei sind, ist das Layout als das bezeichnet Carry-Save-Addierer. Wenn die Addends vier oder mehr sind, sind mehr als eine Schicht Kompressoren erforderlich, und es gibt verschiedene mögliche Designs für die Schaltung: Am häufigsten sind Dadda und Wallace -Bäume. Diese Art von Schaltung wird vor allem in verwendet MultiplikatorenAus diesem Grund werden diese Schaltungen auch als DADDA- und Wallace -Multiplikatoren bezeichnet.
Quantenzettel

Nur die Toffoli und Cnot Quantenlogik -ToreEs ist möglich, einen quantenvollen Addierer zu produzieren.[11][12] Der gleiche Schaltkreis kann auch in klassischer Sprache verwendet werden Reversible Berechnung.
Seit der Quantenfourier -Transformation einen niedrigen haben Komplexität der SchaltungEs kann auch zum Hinzufügen von Zahlen effizient verwendet werden.[13][14]
Analoge Addierer
Genau wie bei binären Addierern fügt die Kombination von zwei Eingangsströmen diese Ströme effektiv zusammen. Innerhalb der Einschränkungen der Hardware können nicht-binäre Signale (d. H. Mit einer Basis über 2) zusammengefügt werden, um eine Summe zu berechnen. Auch als "summierender Verstärker" bekannt,[15] Diese Technik kann verwendet werden, um die Anzahl der Transistoren in einem Additionskreis zu verringern.
Siehe auch
- Binärer Multiplikator
- Subtrahierer
- Elektronischer Mischer - zum Hinzufügen analogen Signale
Verweise
- ^ Singh, Ajay Kumar (2010). Digitales VLSI -Design. Prentice Hall India. p. 321. ISBN 9788120341876 - über Google Books.
- ^ Lancaster, Geoffrey A. (2004). Excel HSC -Softwaredesign und -entwicklung. Pascal Press. p. 180. ISBN 978-1-74125175-3.
- ^ Mano, M. Morris (1979). Digitale Logik und Computerdesign. Prentice-Hall. pp.119–123. ISBN 978-0-13-214510-7.
- ^ Teja, Ravi (2021-04-15), Halbaddier- und Full Adder Circuits, abgerufen 2021-07-27
- ^ a b c Fischer, P. "Einfache Schaltungsblöcke" (PDF). Universität Heidelberg. Archiviert von das Original (PDF) am 2021-09-05. Abgerufen 2021-09-05.
- ^ Satpathy, Pinaki (2016). Design und Implementierung von Carry Select Addierer mit T-Gewürz. Anker -Akademik -Veröffentlichung. p. 22. ISBN 978-3-96067058-2.
- ^ Burgess, Neil (2011). Schnelle Ripple-Carry-Addierer in Standard-Zell-CMOS-VLSI. 20. IEEE -Symposium auf Computerarithmetik. S. 103–111.
- ^ Brent, Richard Peirce; Kung, Hsiang TE (März 1982). "Ein reguläres Layout für parallele Addierer". IEEE -Transaktionen auf Computern. C-31 (3): 260–264. doi:10.1109/tc.1982.1675982. ISSN 0018-9340. S2CID 17348212. Archiviert von das Original am 24. September 2017.
- ^ Kogge, Peter Michael; Stone, Harold S. (August 1973). "Ein paralleler Algorithmus für die effiziente Lösung einer allgemeinen Klasse von Wiederholungsgleichungen". IEEE -Transaktionen auf Computern. C-22 (8): 786–793. doi:10.1109/tc.1973.5009159. S2CID 206619926.
- ^ Reynders, Nele; Dehaene, Wim (2015). Ultra-Low-Volt-Design von energieeffizienten digitalen Schaltkreisen. Analoge Schaltkreise und Signalverarbeitungsreihen. Analoge Schaltungen und Signalverarbeitung (ACSP) (1 ed.). Cham, Schweiz: Springer International Publishing AG Schweiz. doi:10.1007/978-3-319-16136-5. ISBN 978-3-319-16135-8. ISSN 1872-082X. Lccn 2015935431.
- ^ Feynman, Richard P. (1986). "Quantenmechanische Computer". Grundlagen der Physik. Springer Science and Business Media LLC. 16 (6): 507–531. Bibcode:1986foph ... 16..507f. doi:10.1007/bf01886518. ISSN 0015-9018. S2CID 122076550.
- ^ "Code Beispiel: Quantum Full Addierer". Qutech (Delft University of Technology (TU Delft) und die Niederlandeorganisation für angewandte wissenschaftliche Forschung (TNO)).
- ^ Draper, Thomas G. (7. August 2000). "Addition auf einem Quantencomputer". Arxiv:Quant-Ph/0008033.
- ^ Ruiz-Perez, Lidia; Juan Carlos, Garcia-Escartin (2. Mai 2017). "Quantenarithmetik mit der Quanten -Fourier -Transformation". Quanteninformationsverarbeitung. 16 (6): 152. Arxiv:1411.5949v2. Bibcode:2017Quip ... 16..152r. doi:10.1007/s11128-017-1603-1. S2CID 10948948.
- ^ https://www.electronics-tutorials.ws/opamp/opamp_4.html
Weitere Lektüre
- Liu, Tso-Kai; Hohulin, Keith R.; Shiau, Lih-er; Muroga, Saburo (Januar 1974). "Optimale Ein-Bit-Vollfaden mit verschiedenen Arten von Toren". IEEE -Transaktionen auf Computern. Glockenlabors: IEEE. C-23 (1): 63–70. doi:10.1109/t-c.1974.223778. ISSN 0018-9340. S2CID 7746693.
- Lai, Hung Chi; Muroga, Saburo (September 1979). "Minimale binäre parallele Addierer mit Nor (NAND) Toren". IEEE -Transaktionen auf Computern. IEEE. C-28 (9): 648–659. doi:10.1109/tc.1979.1675433. S2CID 23026844.
- Mead, Schnitzer; Conway, Lynn (1980) [Dezember 1979]. Einführung in VLSI -Systeme (1 ed.). Lesen, MA, USA: Addison-Wesley. Bibcode:1980AW ... Buch ..... M.. ISBN 978-0-20104358-7. Abgerufen 2018-05-12.
- Davio, Marc; DECHAMPS, Jean-Pierre; Thayse, André (1983). Digitale Systeme mit Algorithmus -Implementierung (1 ed.). Philips Forschungslabor, Brüssel, Belgien: John Wiley & Sons, eine Wiley-Intersidecience-Publikation. ISBN 978-0-471-10413-1. Lccn 82-2710.
Externe Links
- Hardwarealgorithmen für arithmetische Module, enthält die Beschreibung mehrerer Adder -Layouts mit Zahlen.
- 8-Bit-Volladdierer und Subtrahierer, eine Demonstration eines interaktiven vollständigen Addierers, der in JavaScript ausschließlich zu Lernzwecken eingebaut ist.
- Interaktive Volladder -Simulation (Benötigt Java), interaktive vollständige Addiererschaltung, die mit dem Online -Simulator von Teehlab konstruiert ist.
- Interaktive Halbadder -Simulation (Benötigt Java), halber Addierer, der mit dem Schaltungssimulator von Teehlab gebaut wurde.
- 4-Bit-Simulation mit voller Addierer in Verilog eingebaut und die Begleitung Ripple Carry Full Adder Video Tutorial
- Shirriff, Ken (November 2020). "Umgekehrter Engineering der Carry-Lookahead-Schaltung im Intel 8008-Prozessor".