Digital Design IE1204

Relevanta dokument
Talrepresentation. Heltal, positiva heltal (eng. integers)

Digital Design IE1204

Digital Aritmetik Unsigned Integers Signed Integers"

IE1205 Digital Design: F6 : Digital aritmetik 2

Digital Design IE1204

IE1204 Digital Design

Digital elektronik CL0090

IE1204 Digital Design

Digital Design IE1204

Digital Design IE1204

Digital Design IE1204

Digital- och datorteknik

Digital Design IE1204

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

Digital- och datorteknik

Digital- och datorteknik

ÖH kod. ( en variant av koden används i dag till butikernas streck-kod ) William Sandqvist

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

IE1205 Digital Design: F8: Minneselement: Latchar och Vippor. Räknare

Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Tenta i Digitalteknik

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Digital Design IE1204

Digital- och datorteknik

DIGITALA TAL OCH BOOLESK ALGEBRA

Tentamen i IE1204/5 Digital Design onsdagen den 5/

IE1204 Digital Design

Förenklad förklaring i anslutning till kompedieavsnitten 6.3 och 6.4

Switch. En switch har två lägen. Sluten/Till (Closed/On) Öppen/Från (Open/Off) Sluten. Öppen. Symbol. William Sandqvist

Grundläggande Datorteknik Digital- och datorteknik

Digital Design IE1204

Laboration Kombinatoriska kretsar

Datorsystemteknik DVG A03 Föreläsning 3

F5 Introduktion till digitalteknik

F2 Binära tal EDA070 Datorer och datoranvändning

Digital Design IE1204

IE1205 Digital Design: F4 : Karnaugh-diagrammet, två- och fler-nivå minimering

Digital Design IE1204

Det finns en hemsida. Adressen är

Mintermer. SP-form med tre mintermer. William Sandqvist

Datoraritmetik. Binär addition papper och penna metod. Binär subtraktion papper och penna metod. Binär multiplikation papper och penna metod

Tenta i Digitalteknik

Binär addition papper och penna metod

Digital Design IE1204

Digital Design IE1204

Digital- och datorteknik

Digital- och datorteknik, , Per Larsson-Edefors Sida 1

Transistorn en omkopplare utan rörliga delar

Tentamen i Digital Design

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

IE1204/IE1205 Digital Design

Tenta i Digitalteknik

Talrepresentation. Ett tal kan representeras binärt på många sätt. De vanligaste taltyperna som skall representeras är:

Styrteknik: Binära tal, talsystem och koder D3:1

Digital- och datorteknik

Laboration Kombinatoriska kretsar

Översikt, kursinnehåll

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

Tenta i Digitalteknik

VHDL 1. Programmerbara kretsar

Digital Design IE1204

Laboration 6. A/D- och D/A-omvandling. Lunds universitet / Fakultet / Institution / Enhet / Dokument / Datum

Moment 2 - Digital elektronik. Föreläsning 1 Binära tal och logiska grindar

Digital Design IE1204

24/09/2013. Talrepresentationer" Digital Aritmetik Unsigned Integers Signed Integers" Positiva Heltal" Addition" Heltal" Addition"

PNSPO! Adressering i Omrons PLC. 14 mars 2012 OMRON Corporation

F2 Datarepresentation talbaser, dataformat och teckenkodning

Digital elektronik CL0090

Tenta i Digitalteknik

IE1204 Digital Design

Tenta i Digitalteknik

SMD033 Digitalteknik. Digitalteknik F1 bild 1

D0013E Introduktion till Digitalteknik

IE1205 Digital Design. F2 : Logiska Grindar och Kretsar, Boolesk Algebra. Fredrik Jonsson KTH/ICT/ES

Digital Design IE1204

Tentamen med lösningar i IE1204/5 Digital Design Måndag 27/

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

DIGITALTEKNIK. Laboration D172

Datorsystem. Övningshäfte. Senast uppdaterad: 22 oktober 2012 Version 1.0d

F5 Introduktion till digitalteknik

Programmerbar logik (PLD) Programmeringsspråket VHDL Kombinatoriska funktioner i VHDL för PLD Sekvensfunktioner i VHDL för PLD

DIGITALTEKNIK I. Laboration DE1. Kombinatoriska nät och kretsar

Tentamen med lösningar för IE1204/5 Digital Design Torsdag 15/

DIGITAL ELEKTRONIK. Laboration DE3 VHDL 1. Namn... Personnummer... Epost-adress... Datum för inlämning...

Omtentamen med lösningar i IE1204/5 Digital Design Fredag 10/

Ett minneselements egenskaper. F10: Minneselement. Latch. SR-latch. Innehåll:

Tentamen i IE1204/5 Digital Design måndagen den 15/

Högskolan i Halmstad Digital- och Mikrodatorteknik 7.5p. Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

Digital Design IE1204

Mattias Wiggberg Collaboration

Tentamen i IE1204/5 Digital Design Torsdag 29/

Tenta i Digitalteknik

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

DIGITALTEKNIK. Laboration D161. Kombinatoriska kretsar och nät

Maurice Karnaugh. Karnaugh-diagrammet gör det enkelt att minimera Boolska uttryck! William Sandqvist

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

Tentamen i IE Digital Design Fredag 21/

Laboration D181. ELEKTRONIK Digitalteknik. Kombinatoriska kretsar, HCMOS v 2.1

Transkript:

Digital Design IE1204 F5 Digital aritmetik I william@kth.se

IE1204 Digital Design F1 F3 F2 F4 Ö1 Booles algebra, Grindar MOS-teknologi, minimering F5 F6 Ö2 Aritmetik Ö3 KK1 LAB1 Kombinatoriska kretsar F7 F8 Ö4 F9 Ö5 Multiplexor KK2 LAB2 Låskretsar, vippor, FSM F10 F11 Ö6 KK3 LAB3 FSM, VHDL introduktion F12 Ö7 F13 Asynkron FSM Ö8 F14 tentamen Minnen Föreläsningar och övningar bygger på varandra! Ta alltid igen det Du missat! Läs på i förväg delta i undervisningen arbeta igenom materialet efteråt!

Detta har hänt i kursen Talsystem: Decimala, hexadecimala, oktala, binära (175,5) ( AE.8) (256.4) (10101110.1) 10 16 8 2 AND OR NOT EXOR EXNOR Sanningstabell, mintermer Maxtermer PS-form SP-form demorgans lag Bubbelgrindar Fullständig logik NAND NOR CMOS grindar, standardkretsar Minimering med Karnaughdiagrammet 2, 3, 4, 5, 6 variabler

Talrepresentation Ett tal kan representeras binärt på många sätt. De vanligaste taltyperna som skall representeras är: Heltal, positiva heltal (eng. integers) ett-komplementet, två-komplementet, sign-magnitude Decimala tal med fix tal-område Fix-tal (eng. fixed-point) Decimala tal i olika talområden Flyt-tal (eng. floating-point)

Heltal Positiva Heltal: 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 1 0 1 1 0 1 = 12 6 + 12 5 + 12 3 + 12 2 + 12 0 = 109

Positiva heltal Dator-register är ringar. Figuren visar ett fyrabitarsregister. Om man adderar 1 till det högsta talet 15 hamnar man på 0. ( 15+1=0 )

Carry flagga Om 15+1 0 Är det bra att bli varnad! Carry biten brukar sparas för sig som en Carry flagga som visar att svaret av additionen blev felaktigt. Kanske bättre att svara med 15+1=15? ( Saturation ).

Utöka registret Carry Utökar registret (9) + (9) (2) 1 1 1001 + 1001 0010 10010 (18) Om resultatet av en addition blir för stort för registret så får man en Carry bit. Den kan användas till att utöka registret, och ger då rätt svar som 5 bitstal.

Seriell addition Carry Addera Hexadecimalt direkt! FEC 1DB 11C7 F E C 1 D B C OUT C IN

Seriell addition Carry FEC 1DB 11C7 1 F E C 1 D B 7 C B 1 C OUT C IN 0 7

Seriell addition Carry FEC 1DB 11C7 1 1 F E C 1 D C B 7 E D 1 C OUT C IN 1 C

Seriell addition Carry FEC 1DB 11C7 1 1 1 F E C 1 1 1 D C B 7 F 1 1 C OUT C IN 1 Även en liten processor kan räkna med stora tal! 1

Positiva Heltal: Heltal med tecken 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 1 0 1 1 0 1 = 12 6 + 12 5 + 12 3 + 12 2 + 12 0 = 109 Men hur representerar vi negativa tal???

( Sign-magnitude ) Heltal: S 2 5 2 4 2 3 2 2 2 1 2 0 1 1 0 1 1 0 1 = - (12 5 + 12 3 + 12 2 + 12 0 ) = - 45 Magnituden (beloppet) av talet Tecken-bit Nackdel: två nollor (+/-) 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0

( 1-komplement ) De negativa talen är komplementet av de positiva talen. Bit för i det positiva talet bit inverteras för att ge den negativa motsvarigheten. B=b N-1 b N-2...b 1 b 0 där b i {0,1} b N-1 b N-2... b 1 b 0 Tecken-Bit (Sign Bit) Nackdelar: Två nollor (+/-) 0. Vid vissa additioner krävs justering av resultatet.

2-komplement heltal Representation med 2-komplement B=b N-1 b N-2...b 1 b 0 där b i {0,1} Tecken-Bit (Sign Bit) Decimalvärde: b N-1 b N-2... b 1 b 0 D(B)= - b N-1 2 N-1 +b N-2 2 N-2 +...+b 1 2 1 +b 0 2 0 Detta är den vanligaste representationen av tal med tecken.

2-komplement heltal Omvandlingsexempel: B=b N-1 b N-2...b 1 b 0 där b i {0,1} 1 1 1 1 1 1 1 1 Tecken-Bit (Sign Bit) Decimalvärde: D(B)= - b N-1 2 N-1 +b N-2 2 N-2 +...+b 1 2 1 +b 0 2 0 = -128 + 127 = -1 Det är alltid det största talet som motsvarar -1.

Talkonvertering positivt tal till negativt Tvåkomplementmetoden 01111 +15 10000 invertera 10001 lägg till ett 10001-15

Talkonvertering negativt tal till positivt Tvåkomplementmetoden 10001-15 01110 invertera 01111 lägg till ett 01111 +15 Samma procedur i bägge riktningarna!

2-komplementet snabbt För att lätt ta fram 2-komplementet av ett binärtal kan man använda följande förfarande: Börja från högra sidan Kopiera alla bitar som är 0 och fram till och med den första 1:an Invertera Invertera därefter alla andra bitar Kopiera Exempel: 2-komplement från 0110 är 1010

Sign-extension Vid beräkningar i datorer behöver man ofta öka antalet siffror (bitar) inför någon beräkning hur gör man det med negativa tal? Heltal: -2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 1 0 1 1 0 1 = -12 6 + 12 5 +12 3 + 12 2 + 12 0 = - 45 Teckenbiten har negativ vikt -2 n-1 2 n-2 1 1 2 7 1 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 1 0 1 1 0 1 Om man vill utvidga talområdet genom att använda flera bitar kopierar man teckenbiten till de nya bitarna!

En Snabbfråga Talet +5 representeras med 0101 om vi använder 4 bitar. Vilket tal motsvarar -5 om vi använder 8 bitars två-komplement representation? a: 1111 1011 b: 1111 1010 c: 1000 0101

2-komplement heltal Dator-register är ringar. Figuren visar ett fyrabitarsregister. När man räknar med tal med tecken är de negativa talen den vänstra halvan av ringen. Negativa tal Positiva tal

Addition (BV: sida 264) (+5) + (+2) (+7) 0101 + 0010 0111

Addition (BV: sida 264) Används ej (+5) + (-2) (+3) 1 1 0101 + 1110 0011 Teckengräns Carry-biten används ej!

Addition (BV: sida 264) Används ej (-5) + (-2) (-7) 1 11 1011 + 1110 1001 Teckengräns Carry-biten används ej!

Overflow! Overflow teckenbiten stämmer inte överens med ingående tal... (+5) + (+5) (-6) 1 1 0101 + 0101 1010 Teckengräns

Overflow 2 Används ej Overflow teckenbiten stämmer inte överens med ingående tal... (-5) + (-5) (+6) 1 11 1011 + 1011 0110 Teckengräns Carry-biten används ej!

Subtraktion (BV: sida 265) Låna ett (+5) - (+2) (+3) 10 0101-0010???? Hur gör man subtraktionen på ett enkelt sätt?

Subtraktion (BV: sida 265) Används ej (+5) - (+2) 0101-0010 1 1 0101 + 1110 (+3)???? 0011 Gör en addition med 2-komplementet i stället! Carry-biten används ej!

Subtraktion (BV: sida 265) Används ej (-5) - (+2) 1011-0010 111 1011 + 1110 (-7)???? 1001 Teckengräns Carry-biten används ej!

Subtraktion (BV: sida 265) (+5) - (-2) (+7) 0101-1110???? 0101 + 0010 0111 Teckengräns

Subtraktion (BV: sida 265) (-5) - (-2) (-3) 1011-1110???? 1 1011 + 0010 1101 Teckengräns

2-komplement sammanfattning Område: -2 N-1 upp till 2 N-1-1 Negation: Invertera varje bit (det boolska komplementet), addera sedan 1. Expansion av bit-längd: Lägg till ytterligare bit positioner till vänster om teckenbiten, med samma värde som teckenbiten. Overflow-regeln: Om två tal med samma tecken adderas, så har det blivit overflow om resultatet har ett motsatt tecken. Subtraherings-regeln: För att subtrahera B från A, ta tvåkomplementet av B och addera till A.

Hur kan Carry biten användas vid 2-komplementtal? Vid teckenutvidgning genererar efterföljande Carry den utvidgade summans teckenbitar. Samma! (+7) + (-2) (+5) 1 1 1 0111 + 1110 0101 teckenbit 1 1 1 1 0 0111 + 1 1110 0 0101 1 1 1 1 1 0 0 0111 + 1 1 1110 0 0 utökade teckenbitar 0101 teckenbit

Alternativt sätt att detektera overflow (BV: sida 271) Vid overflow kan summan inte teckenutvidgas med hjälp av Carry! (+7) + (+2) (-7) Inte samma! c 4 =0 c 3 =1 0 1 1 0111 + 0010 1001 Overflow eftersom c 4 och c 3 är olika!

Alternativt sätt att detektera overflow (BV: sida 271) c 4 =0 c 3 =0 (-7) + (+2) (-5) 0 0 1001 + 0010 1011 Inte Overflow eftersom c 4 och c 3 är lika!

Alternativt sätt att detektera overflow (BV: sida 271) c 4 =1 c 3 =1 (+7) + (-2) (+5) 1 1 1 0111 + 1110 0101 Inte Overflow eftersom c 4 och c 3 är lika!

Alternativt sätt att detektera overflow (BV: sida 271) c 4 =1 c 3 =0 (-7) + (-2) (+7) 1 0 1001 + 1110 0111 Overflow eftersom c 4 och c 3 är olika!

Logik för att detektera overflow För 4-bit-tal Overflow om c 3 och c 4 är olika Annars är det inte overflow XOR testar olikhet Overflow = c 3 c 4 c 3 c 4 c 3 c 4 För n-bit-tal Overflow = c n1 c n Overflow biten kan användas som overflow flagga

När är overflow ett problem? För en 32-bitars dator är talområdet 2147483648 stort, då kan inte overflow vara något stort problem! Vem ansvarar? Du som programmerare ser till att använda variabeltyper som minst rymmer så stora tal som används av programmet. Annorlunda är det med digital hårdvara som utför beräkningar på signaler i realtid här använder man ogärna fler bitar än vad som verkligen är nödvändigt. Då måste man se upp med overflow! Radarsignaler behöver bearbetas i realtid

Mättning (Saturation) Overflow. En positiv summa har blivit negativ, byt till det största möjliga positiva värdet. s3 s2 s1 s0 C 4 0 C 1 3 00 10 11 sum will pass 01 sum 0111 0 1 1 1

Mättning (Saturation) Underflow. En negativ summa har blivit positiv, byt till det största möjliga negativa värdet. s3 s2 s1 s0 C 4 1 C 0 3 00 01 11 sum will pass 10 sum 1000 1 0 0 0

1939 heladderare med kontaktnät Konrad Zuse Dual rail carry full adder Demo

1939 heladderare med kontaktnät Demo

Hårdvara för aritmetik Nu när Hastighet/Komplexitet har betydelse!

Halv-adderaren (Half adder) a b HA s c a b c s 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 a b 0 1 0 1 0 0 0 1 a b 0 1 0 1 0 1 1 0 0 0 + 0 0 0 + 1 0 1 + 0 1 1 + 1 c = ab a b s = a b s c 0 1 1 0

Hel-adderaren ( Full adder ) a b c in FA s cut a b c in c ut 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 a b c in s c ut c in c in 0 1 ab 00 01 11 10 0 1 0 1 1 0 1 0 s = a b c in 00 01 11 10 0 0 0 1 0 1 0 1 1 1 c ut = a b + c in a + c in b

Summafunktionen? c in 00 01 11 10 0 1 0 1 1 0 0 1 1 0 s = a b c in

Summa = Udda paritet Heladderarens summafunktion är den udda -paritetsfunktionen. Detta är XOR-funktionens naturliga utökning för fler variabler än två. Udda paritet är när antalet 1:or på ingångarna är ett udda tal. b 0 a XOR 0 1 0 1 Udda paritet a b c ab Udda paritet 00 01 11 10 1 1 0 a b c Udda paritet 0 1 0 1 1 0 0 1 1 0

( XOR odd parity ) b a b a b a b a c b a c b a c b a c ab ab c ab ab c cab cab cab cab ) ( ) ( ) ( ) ( ) ( XOR-2 XOR-3

) ( ) ( a b dc ba ba c d ) ( ) ( a b dc ba ba c d ) ( ) ( a b dc ba ba dc ) ( ) ( a b dc ba ba c d ( XOR odd parity ) a b c d a b c d ) ( ) ( XOR-4 ) )( ( ) )( ( ) )( ( ) )( ( ) ( ) ( ) ( ) ( a b c d a b c d a b dc dc a b dc dc a b dc a b dc a b dc a b dc

Carryfunktionen? 00 01 11 10 0 1 0 0 0 1 1 0 1 1 Majoritetsfunktionen. Utgången antar det värde 1/0 som flest av ingångarna har. M

Hel-adderaren med två ½ -adderare Vi kan även konstruera en hel-adderare mha två halv-adderare och en OR-grind a b c in FA s cut a b c in HA HA s cut Dekomposition innebär att man ser kretsen som sammansatt av byggblock. Med hjälp av sådana kända byggblock kan man sedan bygga helt nya system Komposition.

a b c in c ut 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 Hel-adderaren ½+ ½ = 1 c in a b c in a b HA Man kan använda (ab) till både s och c ut! HA s cut s c ut c in c in ab ab 00 01 11 10 0 0 0 1 0 1 0 1 1 1 (a b)c in c ut = (a b)c in + ab ab 00 01 11 10 0 0 1 0 1 1 1 0 1 0 s = a b c in

Populär tatuering? Tatueringar är för evigt! Men, tyvärr är detta inte den bästa adderarkretsen, inte om man vill ha snabba datorer. Spännande fortsättning om adderarkretsar följer

( Paritetsfunktionen trevägs ljuskontroll ) c in 0 1 00 01 11 10 0 1 0 1 1 0 1 0 Udda paritet. s = a b c in

Trevägs ljuskontroll - revisited Brown/Vranesic: 2.8.1 Antag att vi behöver kunna tända/släcka vardagsrummet från tre olika ställen. Lösningen är paritetsfunktionen. Paritetsfunktionen x 3 x 2 f x 1 x 2 x 3 Udda paritet f x 1

XOR eller NAND? x 1 x 2 x 3 Udda paritet f Den tidigare lösningen baserades på NAND-grindar. XOR-grindar blir mycket effektivare än NAND grindar! x 1 x 2 x 3 f x x 2 x 3 1 00 01 11 10 f 0 1 0 1 1 0 0 1 1 0

Enklare med XOR-grindar Med XOR-grindar: x 1 x 2 x 3 f 7486 ( Med NAND-grindar: )

Enklare med XOR-grindar x 1 x 2 x 3 f

( Paritetscheck ) Med paritetsfunktioner kan man kontrollera om data blivit stört eller ej. 0 P U 1 0 1 0 Data - orginal Störning! Data som överförs har alltid jämn paritet! LARM! En bit ändrad! Data har störts! 1 P U? 0 1 0 1 0 0 1 1 1 0 1 1 1 0 Paritetsbit läggs till Paritetscheck kontrollerar om udda antal 1:or Data ev fel

Mer komposition Komposition kan även användas för att konstruera n-bit-adderare F6aritmetik2.pdf Man behöver n hel-adderare för att konstruera en n-bit-adderare ( eller 2n halvadderare ) Inte ovanligt med 128-bits adderare!

(Vem behöver en 128 bit adderare?) 2 128 = 34028236692093846346337460743177 Kronor? VLIW Very Long Instruction Word. Kompilatorn parar ihop lämpliga instruktioner och packar ihop dem för att exekveras samtidigt. Matteläxa: a) addera 12+74 b) addera 27+39 Varför inte göra hela matteläxan, uppgifterna a och b, på en och samma gång? Den här tekniken används i Intel Svar: a) 86 och b) 66 Itanium ( EPIC, Explicit Parallel Instruction Code ).

Ripple-Carry Adderare (RCA) a 1 b 1 a 0 b 0 c ut1 FA c in1 c ut0 FA c in0 s 1 s 0 + c ut1 c ut0 b 1 a 1 s 1 c in0 b 0 a 0 s 0

Ripple-Carry Adderare (RCA) a n-1 b n-1 a 1 b 1 a 0 b 0 c utn-1 FA c inn-1 FA c in1 c ut0 FA c in0 s n-1 s 1 s 0 a n-1 b n-1... a 0 b 0 A FA area för en Fulladder t FA fördröjning genom en Fulladder c utn-1 n-bit ADD s n-1... s 0 c in0 Tidsfördröjning från c in0 till c outn-1 blir hela nt FA Totala arean blir na FA

Ripple-Carry Adderare (RCA) a0 b0 c in0 s0 Critical path a1 b1 s1

Ripple effect = efterdyningar Carry måste rippla igenom hela adderaren!

Heladderarens & AND-OR Carry-funktion A AND-OR = 36+18= 26 MOS T AND-OR = 3T NAND & NAND-NAND & >1 & & & A NAND-NAND =34+16= =18 MOS T NAND-NAND = 2T NAND & Viktig fördröjning eftersom Carry är längs the critical path

XOR med NAND & & & & a b a b Area: A XOR =16 MOS Delay: T XOR =3T NAND b a ab ab b a b b a a b a b b a a b a b b a a ) ( ) ( ) ( ) ( ) ( ) (

XOR (3) med NAND S Area: A XOR =32 MOS Delay: T XOR =6T NAND Mindre viktig fördröjning eftersom S inte är längs the critical path

Kan vi konstruera en snabbare adderare? Fördröjningen i en rippleadderare växer proportionellt med antalet bitar För 32 bitar kan fördröjningen blir mycket stor (65 gate delays)

generate- och propagate- funktionerna Carry-kedjan kan beskrivas med två funktioner: Generate g i (carry-out c i+1 = 1 ifall g i = 1) g i x i y i Propagate p i (carry-out c i+1 = 1 ifall c i = 1 och x i = 1 eller y i = 1 ) c i x i y i 0 1 c i1 x 00 01 11 10 0 0 0 1 i y i x i y i c i 1 0 1 1 c ( x i i x i c y i ) i y i p i x i y i p x y i Fungerar också! i i c i1 g i p i c i c i x i y i 00 01 11 10 0 0 0 1 0 1 0 1 1 1 c x y c ( x y i1 i i i i i )

Carry-look-ahead funktion Carry-bit c 0 Carry-bit c 1 c 1 g 0 p 0 c 0 c 2 g 1 p 1 c 1 g 1 p 1 (g 0 p 0 c 0 ) Propagate funktionen från föregående bitar kan snabbas upp genom att genereras parallellt g i x i y i p i x i y i g 1 p 1 g 0 p 1 p 0 c 0 Bara två logiknivåer behövs

Carry-kedjan i ripple-adderaren #1 ½ + ½ OR eller XOR kan användas till p funktionen! p 0 c 0 g 0 p 1 g 1 #3 #2 #4 c 2 #5 p 2 #6 c1 g 2 6 grindnivåer c 3

Snabbare implementering av Carry-kedjan (med g och p) p 0 #1 #2 c 0 g 0 p 1 #2 c 1 g 1 #1 c 2 c 1 = g 0 +p 0 c 0 c 2 = g 1 +p 1 g 0 +p 1 p 0 c 0 Två-nivåers nät

(n = 8) med två logiknivåer c 1 =g 0 +p 0 c 0 c 2 =g 1 +p 1 g 0 +p 1 p 0 c 0.. Snabbt, men otympligt med så här många ingångar! c 8 =g 7 +p 7 g 6 +p 7 p 6 g 5 +p 7 p 6 p 5 g 4 +p 7 p 6 p 5 p 4 g 3 + + p 7 p 6 p 5 p 4 p 3 g 2 +p 7 p 6 p 5 p 4 p 3 p 2 g 1 + + p 7 p 6 p 5 p 4 p 3 p 2 p 1 g 0 + p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 c 0 Det behövs nog specialgrindar till detta Ooops!

c Carry-lookahead adder (CLA) 8-bit adder 8s7s6s5s 4s3s2s1s 0 a7a6a5 a4a3a2a 1a0 b7b 6b5b 4b3b 2b1 b0 a 7 b 7 a 6 b 6 a 5 b 5 a 4 b 4 a 3 b 3 a 2 b 2 a 1 b 1 a 0 b 0 1-bit Full Adder 1-bit Full Adder 1-bit Full Adder 1-bit Full Adder 1-bit Full Adder 1-bit Full Adder 1-bit Full Adder 1-bit Full Adder c 0 s 7 s 6 s 5 s 4 s 3 s 2 s 1 s 0 c 8 p 7 g 7 c 7 p 6 g 6 c 6 p 5 g 5 c 5 p 4 g 4 c 4 p 3 g 3 Carry look ahead unit c 3 p 2 g 2 c 2 p 1 g 1 c 1 p 0 g 0 P 0 G 0 c 8 =g 7 +p 7 g 6 +p 7 p 6 g 5 +p 7 p 6 p 5 g 4 +p 7 p 6 p 5 p 4 g 3 +p 7 p 6 p 5 p 4 p 3 g 2 +p 7 p 6 p 5 p 4 p 3 p 2 g 1 + + p 7 p 6 p 5 p 4 p 3 p 2 p 1 g 0 + p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 c 0

c 32 Hierarkisk expansion (BV sid 277) a 31-24 b 31-24 Block 3 CLA a 23-16 b 23-16 Block 2 CLA 32-bit adder a 15-8 b 15-8 Block 1 CLA a 7-0 b 7-0 Block 0 CLA G 3 P 3 S 31-24 G 2 P 2 S 23-16 G 1 P 1 S 15-8 G 0 P 0 S 7-0 c 24 c 16 c 8 PG PG PG P 3 3 2 2 1 1 0G0 c 0 PG PG P 2 2 1 1 0G0 c 0 PG P 1 1 0G0 c 0 P 0 G 0 c 0 c 0 32-bits adderare. Varje block består av en 8-bits CLA. First level four 8-bit adders with Carry lookahead Second level four Carry lookahead units

Hierarkisk expansion nivå 2 Carry-bitar från en andra nivåns Carry lookahead enheter C 8 = G 0 +P 0 c 0 C 16 = G 1 +P 1 G 0 +P 1 P 0 c 0 C 24 = G 2 +P 2 G 1 +P 2 P 1 G 0 +P 2 P 1 P 0 c 0 C 32 = G 3 +P 3 G 2 +P 3 P 2 G 1 +P 3 P 2 P 1 G 0 +P 3 P 2 P 1 P 0 c 0 etc. Med Carry lookahead enheter i flera nivåer kan adderare med fler bitar konstrueras. Med flera nivåer kan också grindar färre ingångar användas, men varje nivå bidrar med extra grindfördröjningar.

( Carry look ahead 3 level hierarchy ) 5-ingångars grindar med 2 nivåer 5-ingångars grindar med 2 nivåer 16-bit LCU 64-bit adder 5-ingångars grindar med 2 nivåer 64-bit LCU Totalt sex grindnivåer

Carry-Select-Adder (CSA) Idé Man delar upp en adderare i två steg med samma antal bitar För att snabba upp processen så räknar man ut resultatet av det andra steget i förväg för två fall Carry-in = 0 Carry-in = 1 När beräkningen av carry-biten är klar för det första steget, så väljer man resultatet av det andra steget beroende på carry-bitens värde!

8-bit (4+4) ripple carry Adder b[7:4] a[7:4] a[3:0] b[3:0] a b a+b = s c c 4 c 0 8 Add Add s[7:4] s[3:0] s

4+4/4 bit Carry-Select-Adder c 8-high b[7:4] b[7:4] a[3:0] b[3:0] 1 0 Add Add Add Mux c c 8 a[7:4] c 8-low Mux c a[7:4] c 4 s[7:4] s[3:0] s c 0 a b a+b = s Dubbla hastigheten 1/3 extra area

Ripple-Carry Adder Jämförelser T(n)= n*2.5*t NAND, A = n*12.5a NAND T(4)= 14T NAND, A(4) = 50 A NAND Carry-Lookahead Adder (4 bits) T(4)= ~8T NAND, A(4)= 43A NAND +4*4*A NAND = ~60A NAND Carry-Select Adder (8 bits) T(8)= ~(8+4)T NAND, A(8)= ~(120+20)A NAND

Vilken är den bästa adderaren? Det finns inget entydigt svar! Ripple-adderaren tar minst plats men är långsam Carry-lookahead-adderaren tar mycket plats men är snabb Carry-select-adderaren är en kompromiss Man måste göra en trade-off mellan area och speed

Subtraktion Subtraktion kan göras genom addition med två komplementet Invertera alla bitar av den andra operanden Addera 1

Add/sub-enheten y n 1 y 1 y 0 Add/Sub = 0: Addition Add/Sub = 1: Subtraktion Add Sub control x n 1 x 1 x 0 c n n -bit adder c 0 s n 1 s 1 s 0

Add

Sub

Arithmetic Logic Unit (ALU) Funktionsväljare f 0 f 1 AU LU A/L MUX Ex. ALU specification f 0 f 1 A/L x ALU y c in Processorer brukar alltid ha en ALU, inte bara en adderare. A/L f1 f0 Funktion 0 0 0 x+y 0 0 1 x+y+c in 0 1 0 x-y 0 1 1 x-y-c in 1 0 0 x or y 1 0 1 x and y 1 1 0 x xor y 1 1 1 inv x

Komparator och flaggor Komparatorn, = jämförelse, implementeras som en subtraktionskrets Flaggor:???

Komparator Komparatorn, = jämförelse, implementeras som en subtraktionskrets Flaggor: På övningen får Du veta hur > < jämförelser görs.

Sammanfattning Addition och subtraktion av heltal Två-komplementet Subtraktion av ett tal implementeras som addition med dess två-komplement Trade-Off: Area mot Speed Olika Adder-strukturer Ripple-Carry Adder (RCA) Carry-Lookahead Adder (CLA) Carry-Select Adder (CSA)

Just for fun Halvadderarkrets med Dominobrickor

Just for fun 4 bits adderare med Dominobrickor