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

Halbadader -Logikdiagramm
Halbaddierer in Aktion

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
half adder circuit using NAND gates only
Hälfte Addierer nur mit Nand -Toren.

Voller Addierer

Logikdiagramm für einen vollen Addierer.
Voller Addierer in Aktion. Ein vollständiger Addierer gibt die Anzahl der 1s im Eingang in der binären Darstellung an.
Schematisches Symbol für einen 1-Bit-vollen Addierer mit Cin und Caus Auf den Seiten des Blocks gezeichnet, um ihre Verwendung in einem Multi-Bit-Addierer hervorzuheben
Voller Addierer aus neun NAND -Toren.

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 = ABCin und Caus = (AB) + (Cin ≤ (AB)).

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]

Voller Addierer mit umgekehrten Ausgängen mit einem einzelnen Transistor-Tragverteilungsverzögerung in CMOs[5]

Addierer, die mehrere Bits unterstützen

Ripple-Carry-Addierer

4-bit adder with logical block diagram shown
4-Bit-Addierer mit logischem Blockdiagramm gezeigt
Dezimaler 4-stelliger Ripple Carry Addierer. FA = Voller Addierer, Ha = Halbaddierer.

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]

4-Bit-Addierer mit Carry Lookahead

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.

Ein 64-Bit-Addierer

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

Quantentopper Addierer verwendet Toffoli und Cnot Tore. Das Cnot-Gate, das von einem gepunkteten Quadrat in diesem Bild umgeben ist, kann weggelassen werden, wenn Unkomputation um die wiederherzustellen B Ausgang ist nicht nötig.

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

Verweise

  1. ^ Singh, Ajay Kumar (2010). Digitales VLSI -Design. Prentice Hall India. p. 321. ISBN 9788120341876 - über Google Books.
  2. ^ Lancaster, Geoffrey A. (2004). Excel HSC -Softwaredesign und -entwicklung. Pascal Press. p. 180. ISBN 978-1-74125175-3.
  3. ^ Mano, M. Morris (1979). Digitale Logik und Computerdesign. Prentice-Hall. pp.119–123. ISBN 978-0-13-214510-7.
  4. ^ Teja, Ravi (2021-04-15), Halbaddier- und Full Adder Circuits, abgerufen 2021-07-27
  5. ^ 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.
  6. ^ 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.
  7. ^ Burgess, Neil (2011). Schnelle Ripple-Carry-Addierer in Standard-Zell-CMOS-VLSI. 20. IEEE -Symposium auf Computerarithmetik. S. 103–111.
  8. ^ 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.
  9. ^ 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.
  10. ^ 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.
  11. ^ 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.
  12. ^ "Code Beispiel: Quantum Full Addierer". Qutech (Delft University of Technology (TU Delft) und die Niederlandeorganisation für angewandte wissenschaftliche Forschung (TNO)).
  13. ^ Draper, Thomas G. (7. August 2000). "Addition auf einem Quantencomputer". Arxiv:Quant-Ph/0008033.
  14. ^ 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.
  15. ^ https://www.electronics-tutorials.ws/opamp/opamp_4.html

Weitere Lektüre

Externe Links