Talrepresentation. Heltal, positiva heltal (eng. integers)

Relevanta dokument
Digital Design IE1204

Digital Aritmetik Unsigned Integers Signed Integers"

Digital Design IE1204

IE1205 Digital Design: F6 : Digital aritmetik 2

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

Digital- och datorteknik

Digital- och datorteknik

Digital- och datorteknik

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

IE1204 Digital Design

Digital elektronik CL0090

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

Digital- och datorteknik

Datorsystemteknik DVG A03 Föreläsning 3

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

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Transistorn en omkopplare utan rörliga delar

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

Digital- och datorteknik

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

Tenta i Digitalteknik

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

Det finns en hemsida. Adressen är

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

DIGITALA TAL OCH BOOLESK ALGEBRA

Binär addition papper och penna metod

Digital Design IE1204

F2 Binära tal EDA070 Datorer och datoranvändning

Grundläggande Datorteknik Digital- och datorteknik

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

Tenta i Digitalteknik

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

PARITETSKONTROLL. Om generatorn i vidstående exempel avkänner ett jämt antal ettor ger den en nolla ut. Detta innebär att överföringen

Tenta i Digitalteknik

Digital Design IE1204

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Tenta i Digitalteknik

Tentamen i IE1204/5 Digital Design onsdagen den 5/

F5 Introduktion till digitalteknik

DESIGN AV KOMBINATORISK LOGIK

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

F2 Datarepresentation talbaser, dataformat och teckenkodning

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

Digital Design IE1204

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

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

TSEA22 Digitalteknik 2019!

Mintermer. SP-form med tre mintermer. William Sandqvist

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

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

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

VHDL 1. Programmerbara kretsar

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

Laboration Kombinatoriska kretsar

Mattias Wiggberg Collaboration

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

IE1205 Digital Design: F3 : CMOS-kretsen, Implementeringsteknologier. Fredrik Jonsson KTH/ICT/ES

Tenta i Digitalteknik

F5 Introduktion till digitalteknik

Digitalteknik och Datorarkitektur 5hp

Tenta i Digitalteknik

Grindar och transistorer

TSEA28 Datorteknik Y (och U)

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

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

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

Digital elektronik CL0090

Digitala elektroniksystem

Digital- och datorteknik

Laboration Kombinatoriska kretsar

Omtentamen IE Digital Design Måndag 14/

2-14 Binära talsystemet-fördjupning Namn:

Moment 2 - Digital elektronik. Föreläsning 2 Sekvenskretsar och byggblock

Tentamen i IE1204/5 Digital Design Torsdag 29/

Kihl & Andersson: , 4.5 Stallings: , , (7.3)

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

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

Hur implementera algoritmerna på maskinnivå - datorns byggstenar

DIGITALTEKNIK. Laboration D172

Tenta i Digitalteknik

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

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

TSEA28 Datorteknik Y (och U)

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

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

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

Digital- och datorteknik

Grunderna i stegkodsprogrammering

Digital- och datorteknik

Programmerbara kretsar och VHDL 2. Föreläsning 10 Digitalteknik, TSEA22 Oscar Gustafsson Institutionen för systemteknik

Flyttal kan också hantera vanliga tal som både 16- och 32-bitars dataregister hanterar.

Digitala System: Datorteknik ERIK LARSSON

D0013E Introduktion till Digitalteknik

Sekvensnät. William Sandqvist

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

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

IE1204/IE1205 Digital Design

Digital Design IE1204

Foto: Rona Proudfoot (some rights reserved) Datorarkitektur 1. Datapath & Control. December

Transkript:

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 = 1 2 6 + 1 2 5 + 1 2 3 + 1 2 2 + 1 2 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 = - (1 2 5 + 1 2 3 + 1 2 2 + 1 2 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-komplement heltal 000 Dator-register är ringar. Figuren visar ett trebitarsregister. När man räknar med tal med tecken är de negativa talen den vänstra halvan av ringen. 111 0 001-1 1 110-2 2-3 3 101-4 011 100 010

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öra sidan Kopiera alla bitar från binärtalet som är 0 och den första 1:an Invertera Invertera alla andra bitar Kopiera Exempel: 2-komplement från 110 är 010

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 = -1 2 6 + 1 2 5 +1 2 3 + 1 2 2 + 1 2 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!

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

Addition (BV: sida 264) ignorera (+5) + (-2) (+3) 1 1 0101 + 1110 1 0011 Carry-biten kan ignoreras!

Addition (BV: sida 264) ignorera (-5) + (-2) (-7) 1 11 1011 + 1110 1 1001 Carry-biten kan ignoreras!

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

Overflow 2 ignorera Overflow teckenbiten stämmer inte överens med ingående tal... (-5) + (-5) (+6) 1 11 1011 + 1011 1 0110 Carry-biten kan ignoreras!

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) ignorera (+5) - (+2) 0101-0010 1 1 0101 + 1110 (+3)???? 1 0011 Gör en addition med 2-komplementet i stället! Carry-biten kan ignoreras!

Subtraktion (BV: sida 265) ignorera (-5) - (+2) 1011-0010 111 1011 + 1110 (-7)???? 1 1001 Carry-biten kan ignoreras!

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

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

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å nummer 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.

Alternativt sätt att detektera overflow (BV: sida 271) c 4 =0 c 3 =1 (+7) + (+2) (-7) 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) ignorera (+7) + (-2) (+5) c 4 =1 c 3 =1 1 1 1 0111 + 1110 1 0101 Inte Overflow eftersom c 4 och c 3 är lika! Carry-biten kan ignoreras!

Alternativt sätt att detektera overflow (BV: sida 271) ignorera (-7) + (-2) (+7) c 4 =1 c 3 =0 1 0 1001 + 1110 1 0111 Carry-biten kan ignoreras! 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 n 1 c n

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

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 c = a b s = a b a b s c

Hel-adderaren ( Full adder ) a b c in FA s c ut 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

Carryfunktionen? 00 01 11 10 0 1 0 0 0 1 1 0 1 1 Majoritetsfunktionen. Utgången antar det som är flest 1/0 på ingångarna. 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 c ut 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 c in a b HA Man kan använda (a b) till både s och c ut! a b HA s cut s c ut c in c in ab a b 00 01 11 10 0 0 0 1 0 1 0 1 1 1 (a b) c in c ut = (a b) c in + a b 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! 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: )

( 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 Man behöver n hel-adderare för att konstruera en n-bit-adderare ( eller 2 n halvadderare )

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 n t FA Totala arean blir n A 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 Carry-funktion & AND-OR A AND-OR = 20 MOS T AND-OR = 5T NAND & NAND-NAND & >1 & & & A NAND-NAND = 14 MOS T NAND-NAND = 3T NAND &

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

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) p i = x i + y i 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 ) p i = x i y Fungerar också! i c = g + i+1 i p i c i c i c i x i y i 0 1 c = 0 1 c i+ 1 x 00 01 11 10 0 0 0 1 i x i y i = y i x i 0 0 0 1 y i + c i 1 0 1 1 + c ( x i i x + 00 01 11 10 = x y 1 0 1 1 + c i + c y ( x i ) i y y i+ 1 i i i i i i )

Carry-look-ahead funktion Carry-bit c 0 g i = x i y i c 1 = g 0 + p 0 c 0 Carry-bit c 1 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 genereras parallellt 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 #2 #3 #4 c1 c 2 #5 p 2 #6 g 2 6 grindnivåer c 3

Snabbare implementering av Carry-kedjan p 0 g 0 #1 #2 c 0 c 1 p 1 #2 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 specialgrindar till detta Ooops!

Carry-lookahead adder (CLA) 8-bit adder c s s s s s s = a a a a a a + b 8 7 6 5 4 3 2s1s0 7 6 5 4 3 2a1a0 7 6 5 4 3 2b1b 0 b b b b b 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 P G P G 3 3 2 2PG 1 1P0 G0 c 0 P G 2 2PG 1 1P0 G0 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 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 grindar med färre ingångar användas, men varje nivå bidrar med extra grindfördröjningar.

(Carry look ahead three level hierarchy) 16-bit LCU 64-bit adder 64-bit LCU

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 Carry-Select-Adder c 8-high b[7:4] a[7:4] a[3:0] b[3:0] 1 0 Add Add Add c 8-low c 0 a b a+b = s Mux c c 8 Mux c c 4 s[7:4] s[3:0] s

Ripple-Carry Adder Jämförelse T(n)= n*2.5*t NAND, A = n*12.5t NAND +T XOR T(4)= 14T NAND, A(4) = 50 A NAND Carry-Lookahead Adder (4bits) 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

Arithmetic Logic Unit (ALU) Funktionsväljare f 0 f 1 AU LU A/L MUX 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 Komparatorn implementeras som subtraktionskrets???

Komparator Komparatorn implementeras som subtraktionskrets

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)