180 likes | 322 Views
BCD Ripple Carry Adder. von Enrico Billich. Mathematische Eigenschaften. Addiert zwei 8 Bit BCD Zahlen dies ermöglicht Additionen von Summanden zwischen 0 und 99 unter Berücksichtigung des Carry In sind Summen zwischen 0 und 199 berechenbar. Schaltungstechnische Eigenschaften.
E N D
BCD Ripple Carry Adder von Enrico Billich
Mathematische Eigenschaften • Addiert zwei 8 Bit BCD Zahlen • dies ermöglicht Additionen von Summanden zwischen 0 und 99 • unter Berücksichtigung des Carry In sind Summen zwischen 0 und 199 berechenbar
Schaltungstechnische Eigenschaften • Einfacher modularer Schaltungsaufbau • Schnelle Wandlung wiederum in ein BCD-Codiertes Ergebnis durch eine einfache zweistufige Kombinatorik • Nachteil: Carry wird im Worst-Case durch ganze Schaltung gereicht und steht erst am Ende fest
Cin BCD Ripple Carry Adder A0 S0 B0 S1 A1 B1 S2 A2 S3 B2 A3 S4 B3 S5 A4 B4 S6 A5 S7 B5 A6 Cout B6 A7 B7 Oberste Hierarchieebene
B7 A7 B6 A6 B5 A5 B4 A4 C1 B3 A3 B2 A2 B1 A1 B0 A0 Cin 4Bit BCD-Adder 4Bit BCD-Adder Cout S7 S6 S5 S4 C1 S3 S2 S1 S0 8Bit-Adder aus 2 4Bit-Adder
B3 A3 B2 A2 B1 A1 B0 A0 Cin 4Bit BCD-Adder Full Adder Full Adder Full Adder Full Adder Co3 Z3 Co2 Z2 Co1 Z1 Co0 Z0 & & & & & & & & & & & & ≥1 & ≥1 ≥1 ≥1 ≥1 ≥1 ≥1 C1 S3 S2 S1 S0
& & & & & & & & & & & ≥1 ≥1 ≥1 ≥1 ≥1 Full Adder a b Ci s Co
Gleichungen des Full Adders und längster Pfad durch ihn Negator 2*UND-Gatter 2*ODER-Gatter = 5 Gatter je 5ns = 25ns maximale Verzögerungszeit UND-Gatter 2*ODER-Gatter = 3 Gatter je 5ns = 15ns maximale Verzögerungszeit
Längster Pfad durch 8Bit BCD Adder • Da 8Bit-Adder aus 2 4Bit-Adder aufgebaut ist, lässt sich Problem in 2 Teile zerlegen • Im ersten 4Bit-Adder muss das Carry vom ersten Full Adder bis zum letzten schrittweise durchgereicht werden, so dass erst am Ende mit Berechnung der letzten Summe (Z3) der tatsächlicher Wert des Carry (C1) feststeht • Im zweiten 4Bit-Adder muss durch das erhaltene Carry die Summe im obersten Full Adder so verändert werden, dass S5 möglichst spät seinen endgültiges Wert erreicht
Full Adder Full Adder Full Adder Full Adder Co3 Co2 Co1 Co0 Cin B4 B3 A3 A4 B2 B5 A2 A5 B1 B6 A1 A6 B7 B0 A0 A7 Z3 Z2 Z1 & & ≥1 Full Adder Full Adder Full Adder Full Adder ≥1 Co4 Co5 Co6 C1 Z5 Z6 Z7 Co7 & & & & & ≥1 ≥1 S5
Berechnung des längsten Weges • 7 Carry Berechnungen (Co0, Co1, Co2, C1, Co4, Co5, Co6) je 3 Gatter = 21 Gatter • 2 Summen (Z3, Z7) je maximal 5 Gatter = 10 Gatter • eine Umrechnung des Ergebnisses ins BCD-Format (S5) maximal 5 Gatter • Insgesamt 36 Gatter je 5ns = 180ns
Simulationsproblem des längsten Pfades • Theoretisch längster Pfad kann praktisch nicht vorkommen weil sich bestimmte Konstellationen, die an den Gattern nötig sind, sich gegenseitig widersprechen • deshalb wird eine möglichst langsame Lösung gesucht, die der theoretisch langsamsten am nächsten kommt
Beweis für vorherige Behauptung Belegungen für ersten 4Bit-BCD-Adder Damit C1 so spät wie möglich feststeht, muss es von Z3 abhängig sein, dass sich dadurch ebenfalls so spät wie möglich ändern muss. Folglich: Wegen dieser Bedingungen, der Beschränkung auf BCD Zahlen und dass Z3 erst mit dem erhaltenen und negierten Carry Co2 sein endgültiges Ergebnis erreicht, ergibt sich folgende Eingangsbelegung. Au=0111 Bu=1000 Für das Ci, dass sich als einziges ändert, ergeben sich die Belegungen: Ci ändert sich von 1 auf 0 Folglich ändert sich C1 von anfangs 1 auf 0 (nachdem Co3 feststeht) und endgültig auf 1 (nachdem Z3 feststeht). 17 Gatter = 85ns.
Beweis für vorherige Behauptung Belegungen für zweiten 4Bit-BCD-Adder Da auch hier das Carry durchgereicht werden muss, damit Z7 möglichst spät fest steht, gilt ähnliche Eingangsbelegung wie für den ersten Adder. Ao=0111 Bo=1000 Durch diese Eingangsbelegung werden aber Z5 und Z6 immer 0, wenn das Carry (C1=1) ankommt. Folglich werden auch alle Terme 0, in denen das negierte Z7 steht. Das gleiche gilt auch für den Weg über S6. Da der längste Weg über das negierte Z7 nicht mehr geht, bleibt nur der Weg über das nichtnegierte Z7, was mit den Werten für Z6 und Z5 im zweiten Term von S7 passt. Das sind wieder 17 Gatter mit 85ns, was sich mit dem vorherigen 4Bit-BCD-Adder zu 170ns addiert.
Beispiel mit 170ns (34 Gatter) • Anfangsbelegung einstellen A: 01110111 (77) B: 10001000 (88) Cin: 1 • Änderung des Carry In Cin: 0
Literaturreferenz • Randy H. Katz – Contemporary Logic Design (S. 265, ZN 5630 kat) • Balabanian, Cartson – Digital Logic Design Principles (ZN 4930 bal) • Reichardt, Schwarz – VHDL-Synthese