IE1205 Digital Design: F6 : Digital aritmetik 2

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

Digital Aritmetik Unsigned Integers Signed Integers"

Talrepresentation. Heltal, positiva heltal (eng. integers)

Datorsystemteknik DVG A03 Föreläsning 3

Digital Design IE1204

Digital- och datorteknik

Digital Design IE1204

Digital- och datorteknik

Digital- och datorteknik

IE1204 Digital Design

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

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

Föreläsning 8: Aritmetik och stora heltal

F2 Datarepresentation talbaser, dataformat och teckenkodning

F2 Binära tal EDA070 Datorer och datoranvändning

Digital Design IE1204

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

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

NUV 647E. Digitalteknik och Datorarkitektur 5hp. 3x12 = 36 2x12 = 24 1x12 = 12 0x12 = 18

Digital- och datorteknik

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

Digital elektronik CL0090

Föreläsning 8: Aritmetik och stora heltal

Maskinorienterad Programmering /2011. Maskinorienterad Programmering 2010/11. Maskinnära programmering C och assemblerspråk

DIGITALA TAL OCH BOOLESK ALGEBRA

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

Hur implementera algoritmerna på maskinnivå - datorns byggstenar

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

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

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

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

Binär addition papper och penna metod

PASS 2. POTENSRÄKNING. 2.1 Definition av en potens

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

Tenta i Digitalteknik

Föreläsning 8: Aritmetik I

Teknisk Beräkningsvetenskap I Tema 1: Avrundning och populationsmodellering

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

Grunderna i stegkodsprogrammering

Digital- och datorteknik

Datoraritmetik. Från labben. Från labben. Några exempel

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.

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

Institutionen för elektro- och informationsteknologi, LTH

Innehåll. Datorteknik. Abstraktionsnivå 1. Spelkonsol - blockschema. Spelkonsol abstraktionsnivå 2. Abstraktionsnivå 2

Denna uppdelning är ovanlig i Sverige De hela talen (Både positiva och negativa) Irrationella tal (tal som ej går att skriva som bråk)

Översikt, kursinnehåll

Tenta i Digitalteknik

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

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

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

Tentamen. Datorteknik Y, TSEA28

D0013E Introduktion till Digitalteknik

Det finns en hemsida. Adressen är

Grundläggande Datorteknik Digital- och datorteknik

översiktskurs (5DV031)

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

Tentamen. Datorteknik Y, TSEA28

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

n Kap 4.1, 4.2, (4.3), 4.4, 4.5 n Numerisk beräkning av derivata med n Felen kan t ex vara avrundningsfel eller mätfel n Felet kan mätas

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

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Tenta i Digitalteknik

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

Tentamen. Datorteknik Y, TSEA28

Ma C - Tek Exponentialekvationer, potensekvationer, logaritmlagar. Uppgift nr 10 Skriv lg4 + lg8 som en logaritm

Digitala System: Datorteknik ERIK LARSSON

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Elektronik. Viktor Öwall, Digital ASIC Group, Dept. of Electroscience, Lund University, Sweden-

Tentamen. Datorteknik Y, TSEA28

Matematik EXTRAUPPGIFTER FÖR SKOLÅR 7-9

Binär aritmetik TSIU02 Datorteknik

Tenta i Digitalteknik

AD-/DA-omvandlare. Digitala signaler, Sampling och Sample-Hold

Laboration Kombinatoriska kretsar

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

Digital- och datorteknik

Digitalteknik och Datorarkitektur

Elektronik Dataomvandlare

Datorsystem. Exempeltentamen

Styrteknik: MELSEC FX och numeriska värden

Grundläggande datavetenskap, 4p

Dra streck. Vilka är talen? Dra pil till tallinjen. Skriv på vanligt sätt. Sätt ut <, > eller =

Räkna med C# Inledande programmering med C# (1DV402)

Tenta i Digitalteknik

Mattias Wiggberg Collaboration

Övningsblad 1.1 A. Tallinjer med positiva tal. 1 Skriv det tal som motsvaras av bokstaven på tallinjen.

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

Grundläggande A/D- och D/A-omvandling. 1 Inledning. 2 Digital/analog(D/A)-omvandling

DE FYRA RÄKNESÄTTEN (SID. 11) MA1C: AVRUNDNING

Algebra, exponentialekvationer och logaritmer

Tentamen Datorteknik Y, TSEA28 Datum

Tenta i Digitalteknik

Datorsystem. Tentamen

DOP-matematik Copyright Tord Persson. Potensform. Uppgift nr 10. Uppgift nr 11 Visa varför kan skrivas = 4 7

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Övning log, algebra, potenser med mera

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

TAL OCH RÄKNING HELTAL

Transkript:

IE1205 Digital Design: F6 : Digital aritmetik 2

Talrepresentationer 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) 2

Heltal Positiva Heltal: -2 7 0 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 Negativa Heltal: -2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 1 1 0 1 1 0 1 =-1*2 7 +1*2 6 + 1*2 5 + 1*2 3 + 1*2 2 + 1*2 0 = -19 3

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 4

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 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 5

Komparator Komparatorn implementeras som subtraktionskrets 6

Exempel: ALU i mikrokontroller Microkontroller finns tex i smartcard Exempel på instruktion i mikrokontroller

Multiplikation av två (positiva) heltal 0 0 1 0 * 1 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 + 0 0 1 0 0 0 1 0 1 1 0 2 11 22 8

Multiplikation med en teckenbit Teckenförläng! (Sign Extension) 1 0 1 1-5 * 0 0 1 0 2 0 0 0 0 1 1 1 0 1 1 0 0 0 0 + 0 0 0 0 1 1 1 0 1 1 0-10 9

Teckenbiten på det andra stället Teckenbiten har negativ vikt! => Två-komplementera! 0 0 1 0 2 * 1 0 1 1-5 0 0 1 0 0 0 1 0 0 0 0 0 + 1 1 1 0 1 1 1 0 1 1 0-10 Eller ta två-komplement av båda termer och använd tidigare algoritm 10

Eller så gör vi det enkelt för oss... Använd enbart positiva tal i multiplikationen Konvertera till positiva tal Håll reda på resultatets tecken (+,+)=>+; (+,-)=>-; (-,+)=>-; (-,-)=>+ Två-komplementera till negativt tal om nödvändigt 11

En enkel lösning (forts.) Sign A A N-1 A N-2 A 0 0 1 Sign B 0 1 0 1 1 0... HA HA... HA F invert =S A xor S B 2 s complement of A 12

Multiplikation a 3 b 0 a 2 b 0 a 1 b 0 a 0 b 0 a 3 b 1 a 2 b 1 a 1 b 1 a 0 b 1 + c 40 c 30 c 20 c 10 r 14 r 13 r 12 q 1 q 0 a 3 b 2 a 2 b 2 a 1 b 2 a 0 b 2 + c 41 c 31 c 21 c 11 r 25 r 24 r 23 q 2 + a 3 b 3 a 2 b 3 a 1 b 3 a 0 b 3 c 42 c 32 c 22 c 12 q 7 q 6 q 5 q 4 q 3 13

Multiplikatorn (två positiva tal) 0 a(3) a(3) a(2) a(2) a(1) a(1) a(0) a(0) 0 b(0) b(1) a(3) a(2) a(1) a(0) b(2) a(3) a(2) a(1) a(0) b(3) q(7) q(6) q(5) q(4) q(3) q(2) q(1) q(0) 14

Snabbfråga repetition Varför är en carry look ahead adder snabbare än en ripple adder? A: Den har fler antal grindar B: Den har färre antal grindar i signalvägen C: Den kan implementeras med en bättre teknologi

Multiplikatorn (två positiva tal) T MUL =~(3*N-4)*T 0 a(3) a(3) a(2) a(2) a(1) a(1) a(0) a(0) 0 b(0) b(1) a(3) a(2) a(1) a(0) b(2) a(3) a(2) a(1) a(0) b(3) q(7) q(6) q(5) q(4) q(3) q(2) q(1) q(0) 16

En snabbare lösning - Carry-Save Adders (BV: sida 311) T MUL =~(2*N-2)*T Minskar fördröjningen eftersom carry utgången kopplas direkt till nästa steg! 0 a(3) a(3) a(2) a(2) a(1) a(1) a(0) a(0) 0 HA a(3) a(2) a(1) a(0) b(0) b(1) b(2) a(3) a(2) a(1) a(0) b(3) q(7) q(6) q(5) q(4) q(3) q(2) q(1) q(0) 17

Multiplikation med 2 0101*2=1010 (5*2=10) 1010*2=10100 (-6*2=-12) 01010101*2=010101010 (85*2=190) 10010101*2 = 100101010 (-107*2=-214) jfr multiplikation med 10 i basen 10: 63*10 = 630, -63*10=-630 etc. 18

Multiplikation med 2 n 0101*2=1010 (5*2=10) 0101*2 2 =10100 (5*4=20) 0101*2 3 =101000 (5*8=40) 0101*2 4 =1010000 (5*16=80) jmfr multiplikation med 10 i basen 10: 6*10 = 60, 6*100=600, 6*1000=6000 etc. 19

Multiplikation med 2 n En multiplikation med 2 n kan göras med genom att skifta alla bitar n steg till vänster och att fylla på med nollor 13*8 kan beräknas genom att skifta (01011) tre bitar till höger Resultat: 01011000 motsvarar (104) 10 Observera att man behöver flera bitar för att representera resultatet! 20

Barrel-shiftern A 0 A 1 A 2 A 3 0 0 0 0 0 0 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 B 0 B 1 Multiplikation med (2 0, 2 1, 2 2, 2 3 ) dvs 1, 2, 4, 8 21

Division mellan två (positiva) heltal (BV sid 693 Fig 10.21 b) 0 1 0 1 1 0 1 0 1 1-1 0 0 0 1-0 0 0 1 1-1 0 1 11/2 = 5 Rest = 1 22

Lite mer detaljerat... 0 1 0 1 1 0 0 1 0 1 1-0 0 1 0-1 0 0 0 1-0 0 0 1 1-1 0 1 11/2 = 5 Rest = 1 23

Divideraren Täljare Från fg steg n-bit SUB Res < 0? Y/N MUX Täljare 1 0 Kvot i Till nästa steg 24

Divideraren (forts.) 0 b(1) a(3) b(0) 1 b(1) a(1) b(0) 1 q(1) 1 q(3) 1 0 b(1) a(2) b(0) 1 q(0) 1 0 1 1 0 1 0 b(1) a(0) b(0) 1 0 1 1 0 1 0 q(2) r(1) r(0) 25

Using a multiplier and a ROM for division Q=A/B=A*(1/B) ROM Properties - Fast - VERY big!! MUL 26

Division med negativa heltal Division med negativa tal är ganska knepigt. Ett sätt att utföra divisionen ändå Konvertera till positiva tal Håll reda på resultatets tecken (+,+)-=>+, (+,-)=>-, (-,+)=>-, (-,-)=>+ Två-komplementera till negativt tal om nödvändigt 27

Division med 2 01010/2=00101 (10/2=5) 10100/2=11010 (-12/2=-6) jmfr division med 10 i basen 10: 630/10 = 63, -630/10=-63 etc. 28

Logiskt vs Aritmetisk shift höger Man skiljer mellan logisk och aritmetiskt shift Logisk shift höger shiftar bara till höger. Bitarna skall ej tolkas som ett tal. Man fyller bara på med 0:or. Aritmetisk shift höger behandlar bitarna som ett tal. Teckenbiten behålls vid shift. Man fyller på till vänster med teckenbiten. 29

Division med 2 n 1010/2=101 (10/2=5) 10100/2 2 =101 (20/4=5) 101000/2 3 =101 (40/8=5) 1010000/2 4 =101 (80/16=5) jmfr division med 10 i basen 10: 60/10 = 6, 600/100=6, 6000/1000=6 etc. 30

Division med 2 n En division med 2 n kan göras med genom att skifta alla bitar n steg till höger och att fylla på med nollor Observera att resultatet behöver inte vara korrekt, eftersom man egentligen behöver bitar efter kommatecknet 17/4 motsvarar att skifta 010001 2-bitar till höger Resultat: 000100 = (4) 10 Eftersom (0.25) 10 inte kan representeras är resultatet inte korrekt! 31

Barrel-shiftern (2) A 0 A 1 A 2 A 3 A 4 A 5 A 6 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 B 0 B 1 Division med (2 0, 2 1, 2 2, 2 3 ) dvs 1, 2, 4, 8 32

Exempel signalbehandling Digitalt ljuddata Digital till Analog omvandlare (DAC)

Exempel signalbehandling Matematisk funktion: D-vippa låser värdet Q får värdet D när Clk går från 0 till 1 (lekt 8) Endast multiplikation och division med 2 Implementering av funktion i digital hårdvara:

Exempel signalbehandling

Exempel signalbehandling En digital utgång har bara två diskreta värden

Exempel signalbehandling Genom digital signalbehandling kan signalen brusformas Efter filtrering återskapas den analoga signalen

Exempel signalbehandling

Exempel signalbehandling Högre klockhastighet möjliggör högre bandbredd hos signalen

Exempel signalbehandling Tack vare att vi endast multiplicerar/ dividerar med 2 blir ytan och strömförbrukningen mycket liten

Exempel signalbehandling Digital I denna krets är digitaldelen inte lika optimerad (innehåller en division). Den tar större yta och har högre strömförbrukning.

Fix-tal (Fixed-point numbers) Två-komplementsrepresentation B=b N-1. b N-2...b 1 b 0 where b i {0,1} b N-1 b N-2... b 1 b 0 Sign Bit Decimalt värde FiP(B)=-b N-1 2 0 +b N-2 2-1 +...+b 1 2 -(N-2) +b 0 2 -(N-1) Detta format kallas också för Q N-1 -format eller fractional representation 42

Fixed-Point Q2-Representation 000 111 0 001-0.25 0.25 110-0.5 0.5 010-0.75 0.75 101-1 011 100 43

Multiplikation i Q-formatet Multiplikation orsakar inte overflow i Q-formatet, men kan resultera i förlust av precision (1.10) 2 * (0.11) 2 = (1.1010) 2 (Q4-format) = (1.10) 2 (Q2-format) Generellt: b 2 b 1 b 0 Q2 * b 2 b 1 b 0 Q2 Utökade teckenbitar b 5 b 4 b 3 b 2 b 1 b 0 Q4 44

Multiplikation i Q-formatet Sign Extension 0.11 * 1.10 1.110 1.1110 11.1010 Stryks Negation 2-komplement 1.10 * 0.11 1.01 0.011 1.101 Glöm inte att andera teckenbiten! 45

Kvantiseringsfel Q2-0.375 MQE: 0.125 0.6 QE: 0.1-1 100-0.75 101-0.5 110-0.25 111 0 000 0.25 001 0.5 010 0.75 011 Maximalt kvantiseringsfel: Eftersom inte alla tal kan representeras uppstår kvantiseringsfel Kvantiseringsfelet blir mindre om vi använder fler bitar 46

Flyt-tal (eng. Floating-Point Numbers) Ett flyt-tal representeras med en tecken-bit, onent-bitar och en mantissa (ä.k. fraktionsbitar) S Exponent Mantissa Sign-Bit m Värdet beräknas som FlP(B) = (-1) s * (1.m) * 2 Ofta är biaserad (har en offset), vilket då ger FlP(B) = (-1) s * (1.m) * 2 -(bias) 47

IEEE-754 Flyttals-standarden IEEE-754 definierar ett 32- bit flyttal som S 2 7 2 0 2-1 m 2-23 Exponent Mantissa 31 30 23 22 m 0 Värdet beräknas för en 8-bitars onent enligt nedan FlP(B) = (-1) s * (1.m) * 2 -(127) Specialla bit pattern har reserverats för att representera negativ och positiv nolla 48

Exempel Sign = 0: Positivt Exp: (64 + 32 + 16 + 8 + 4) 127 = 124 127 = - 3 Mantissa: Binary 1.01 = 1 + 1 / 4 = 1.25 Första biten är alltid ett eftersom mantissan är normaliserad 1.25 * 2-3 = 1.25 * 0.125 = 0.15625

Floating-Point Numbers (IEEE) Exponent Values 1 to 254: normalized non-zero floating-point numbers; biased onent (-126...+127) Exponent of zero and fraction of zero: positive or negative zero Exponent of ones (255) and fraction of zero: positive or negative infinity Exponent of zero and fraction of non-zero: Denormalized number (true onent is 126), represent numbers from 0 to 2-126 FlP(B) = (-1) s * (0.m) * 2-126 Exponent of ones (255) with a non-zero fraction: NotANumber (Exception Condition) There is also a standard for a 64-bit number 50

Addition med flyttal Givet två flyttal: a a frac 2 a b frac 2 Summan av dessa tal är: b b c a b ( a ( b frac frac ( b ( a frac frac 2 2 ( a ( b b a ) ) ))*2 ))*2 a b,, if if a b b a 51

Subtraktion med flyttal Givet två flyttal: a a frac 2 a b frac 2 Differensen mellan dessa tal är: b b c a b ( a ( b frac frac ( b ( a frac frac 2 2 ( a ( b b a ) ) ))*2 ))*2 a b,, if if a b b a 52

Multiplikation med flyttal Givet två flyttal: a a b b frac frac 2 2 Produkten av dessa tal är: a b c a* b a frac * b frac 2 a b 53

Division med flyttal Givet två flyttal: a a b b frac frac 2 2 Kvoten mellan dessa tal är: a b c a / b a frac / b frac 2 a b 54

Uppstädning efter flyttals-operationer... När en flyttals-operation är klar måste den normaliseras Mantissans skiftas tills dess första bit är 1 För varje skift-steg så räknas onenten upp eller ned med ett. Mantissans bitar till höger om den första ettan sparas FlP(B) = (-1) s * (1.m) * 2 -(127) Om onenten är noll är mantissans första bit 0 FlP(B) = (-1) s * (0.m) * 2 -(126) 55

Fixed-Point vs. Floating-Point Fixed-Point operationer fungerar på samma sätt som heltals-operations och är snabbare Fixed-point värden behöver skalas, vilket ofta leder till förlust av precision Kostnaden för att bygga hårdvara är signifikant större för flyttals-processorer/räknare 56

Snabbfråga Hur representeras 0.75 i Q4 fixed point format? A: 01001011 B: 00001100 C: 1100

Information om laborationer Kontrollera labbtid och kunskapsgrupp i Daisy Gör förberedelseuppgifter och fyll i webformulär

Sammanfattning Multiplikation och division av heltal Konvertera negativa tal till sitt positiva ditto. Utför multiplikationen eller divisionen Håll reda på vilket tecken resultatet skall ha Konvertera positivt resultat till sitt negativa ditto om resultatet skall vara negativt Multiplikation med potenser av 2 (mul med 2 k) Implementeras som ett skift till vänster med k steg Division med potenser av 2 (div med 2 k) Implementeras som ett (aritmetiskt) skift till höger med k steg. Teckenbiten kopieras till vänster. 59