Digital Design IE1204

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

IE1205 Digital Design: F6 : Digital aritmetik 2

Digital Design IE1204

IE1204 Digital Design

IE1204 Digital Design

DIGITALA TAL OCH BOOLESK ALGEBRA

Digital Aritmetik Unsigned Integers Signed Integers"

Digital Design IE1204

Datorsystemteknik DVG A03 Föreläsning 3

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

Digital Design IE1204

Digital- och datorteknik

Digital Design IE1204

Digital Design IE1204

Talrepresentation. Heltal, positiva heltal (eng. integers)

Digital elektronik CL0090

Föreläsning 8: Aritmetik och stora heltal

Digital Design IE1204

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

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

Digital Design IE1204

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

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

Binär addition papper och penna metod

Digital Design IE1204

F2 Binära tal EDA070 Datorer och datoranvändning

Digital Design IE1204

Laboration Kombinatoriska kretsar

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

Hur implementera algoritmerna på maskinnivå - datorns byggstenar

Digital Design IE1204

Digital Design IE1204

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

Tentamen i IE1204/5 Digital Design onsdagen den 5/

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

F2 Datarepresentation talbaser, dataformat och teckenkodning

Digital Design IE1204

Digital- och datorteknik

Digital- och datorteknik

Tenta i Digitalteknik

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

Tenta i Digitalteknik

Laboration Kombinatoriska kretsar

Tentamen i IE1204/5 Digital Design onsdagen den 5/

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

Digital Design IE1204

Digital Design IE1204

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

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

Institutionen för elektro- och informationsteknologi, LTH

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

Föreläsning 8: Aritmetik och stora heltal

IE1204 Digital Design

Digital Design IE1204

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

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.

Grundläggande Datorteknik Digital- och datorteknik

Tenta i Digitalteknik

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

Maskinorienterad programmering. Kompendium: Aritmetik för HC12 Roger Johansson, 2013

Grundläggande digitalteknik

Mattias Wiggberg Collaboration

Digital Design IE1204

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

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

Tenta i Digitalteknik

SMD033 Digitalteknik. Digitalteknik F1 bild 1

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

Binär aritmetik TSIU02 Datorteknik

Digital Design IE1204

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

Tentamen i IE1204/5 Digital Design Torsdag 29/

Digital- och datorteknik

Tenta i Digitalteknik

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

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

Omtentamen IE Digital Design Måndag 14/

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

Digital Design IE1204

Översikt, kursinnehåll

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Föreläsning 8: Aritmetik I

Tenta i Digitalteknik

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Digital- och datorteknik

Tenta i Digitalteknik

Mintermer. SP-form med tre mintermer. William Sandqvist

Digitalteknik och Datorarkitektur

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

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

D0013E Introduktion till Digitalteknik

Digital- och datorteknik

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

Tentamen IE Digital Design Fredag 15/

DIGITALTEKNIK. Laboration D161. Kombinatoriska kretsar och nät

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

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

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

Transkript:

Digital Design IE1204 F6 Digital aritmetik II william@kth.se

IE1204 Digital Design F1 F3 F2 F4 Ö1 Booles algera, Grindar MOS-teknologi, minimering F5 F6 Ö2 Aritmetik Ö3 KK1 LAB1 Kominatoriska 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 ygger på varandra! Ta alltid igen det Du missat! Läs på i förväg delta i undervisningen areta igenom materialet efteråt!

Detta har hänt i kursen Decimala, hexadecimala, oktala och inära talsystemen AND OR NOT EXOR EXNOR Sanningstaell, mintermer Maxtermer PS-form Booles algera SP-form demorgans lag Buelgrindar Fullständig logik NAND NOR CMOS grindar, standardkretsar Minimering med Karnaughdiagram 2, 3, 4, 5, 6 varialer Registeraritmetik tvåkomplementrepresentation av inära tal Additionskretsar

Talrepresentation Ett tal kan representeras inä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 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 1 2 6 2 5 2 4 2 3 2 2 2 1 2 0 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

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 Skifta, addera multiplikanden eller 0 =22

Multiplikation med teckenit Teckeniten 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

Teckeniten på det andra stället Teckenförläng! (Sign Extension, här till 7 itar) 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

Multiplikation av två negativa tal Teckenförläng! Teckeniten har negativ vikt! => Två-komplementera! 1 0 1 1-5 * 1 0 1 1-5 1 1 1 1 0 1 1 1 1 1 0 1 1 0 0 0 0 + 0 1 0 1 0 0 1 1 0 0 1 +25 Svar 7-itar med tecken Det här verkade komplicerat

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

Enkel lösning, forts Sign A Sign A F correct A N-1 A N-2 A 0 Sign B 0 1 0 1 0 1 1 0 Sign B 0 0... 0 F correct =Sign A Sign B FA FA... FA Korrektionen sker genom att man invertera itarna och lägg till 1 2 s complement of Product, when correction is needed.

Multiplikation (två positiva tal) ( a 3a2a1a0 ) ( 32 10 ) = ( q7q6q5q4q3q2q1q0 ) AND AND FA, carry AND FA, carry AND FA, carry

Multiplikation (två positiva tal) ( a 3a2a1a0 ) ( 32 10 ) = ( q7q6q5q4q3q2q1q0 ) AND AND FA, carry AND FA, carry AND FA, carry

Multiplikation (två positiva tal) ( a 3a2a1a0 ) ( 32 10 ) = ( q7q6q5q4q3q2q1q0 ) AND AND FA, carry AND FA, carry AND FA, carry

Multiplikation (två positiva tal) ( a 3a2a1a0 ) ( 32 10 ) = ( q7q6q5q4q3q2q1q0 ) AND AND FA, carry AND FA, carry AND FA, carry

Multiplikation (två positiva tal) ( a 3a2a1a0 ) ( 32 10 ) = ( q7q6q5q4q3q2q1q0 ) AND AND FA, carry AND FA, carry AND FA, carry

( aaaa)( ) = ( qqqqqqqq) 3 2 1 0 3 2 1 0 7 6 5 4 3 2 1 0 Multiplikation (två positiva tal) Skiftning av multiplikatorn sker genom att den förs ett steg till vänster i nätet för varje nivå a 3 a 3 a 3 a 2 a 2 a 1 a2 a1 a0 a 1 a 0 a 0 0 1 2 a 3 a2 a1 a0 q7 q6 q5 q4 q3 q2 q1 q0 3 12 FA för 4 4 itar

( aaaa)( ) = ( qqqqqqqq) 3 2 1 0 3 2 1 0 7 6 5 4 3 2 1 0 Multiplikation (två positiva tal) T MUL ~(3*N-4)*T FA a 3 a 3 a 2 a 2 a 1 a 1 a 0 a 0 0 1 a 3 a2 a1 a0 2 a 3 a2 a1 a0 q7 q6 q5 q4 q3 q2 q1 q0 3 Carryfördröjs genom 8 steg!

Kan itarna adderas i någon annan ordning?

Ripple Carry-adderaren: a3 3 Snafråga C in3 a2 2 C in2 a1 1 C in1 a0 0 C in0 Vad händer om man förväxlar ledningarna a C in? Här har någon rört till det ordentligt med ledningarna! a 3 3 C in3 C out3 C out3 s 3 s 3 a2 2 C out 2 C out 2 C in2 C out1 a1 1 C in1 C out0 a0 0 a) Katastrof! ) Don t care! C in0 Diskutera fram svaret tillsammans med din änkgranne! s 2 s 2 C out1 s 1 s 1 C out0 s 0 s 0

Snafråga a 3 3 C in3 a2 2 C in2 a1 1 C in1 a0 0 C in0 C out3 s 3 C out 2 s 2 C out1 s 1 C out0 s 0 ) Don t care! Summaiten är lika med udda paritet av initarna. Carry out är lika med majoritetsvärdet av initarna. I ingendera fallen har itarnas inördes ordning någon som helst etydelse.

Kan itarna adderas i någon annan ordning? Så här får q 2 samma resultat men med en annan itordning! Carry förs nu direkt till andra raden!

( aaaa)( ) = ( qqqqqqqq) 3 2 1 0 3 2 1 0 7 6 5 4 3 2 1 0 En snaare lösning - Carry- Save Multiplier (BV: sida 311) Figure 5.45 Multiplier carry-save array.

( aaaa)( ) = ( qqqqqqqq) 3 2 1 0 3 2 1 0 7 6 5 4 3 2 1 0 Save Multiplier (BV: sida 311) T MUL ~(2*N-2)*T FA Minskar fördröjningen eftersom carry utgången kopplas direkt till nästa steg! En snaare lösning - Carry- Carryfördröjs nu genom 6 steg! Figure 5.45 Multiplier carry-save array.

( aaaa)( ) = ( qqqqqqqq) 3 2 1 0 3 2 1 0 7 6 5 4 3 2 1 0 En snaare lösning - Carry- Save Multiplier (BV: sida 311) Extra tips: sna Carrylook ahead adderare här! Figure 5.45 Multiplier carry-save array.

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

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 asen 10: 6*10 = 60, 6*100 = 600, 6*1000 = 6000 etc.

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

Barrel-shifter 0 1 2 3 B 0 B 1 Multiplexor A 0 A 1 A 2 A 3 MUX 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 ( S 6 S 5 S 4 S 3 S 2 S 1 S 0 ) = ( A 3 A 2 A A 1 0 ) 2 ( B B 1 0 )

Division mellan två positiva heltal (BV sid 693 fig 10.21 ) 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 a = q + r

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 a = q + r

Lite mer detaljerat a = q + r 11 2 = 5 + 1 2 a: 0 1 0 1 1 r: : 1 0 q:

Lite mer detaljerat a = q + r 11 2 = 5 + 1 2 a: 0 1 0 1 1 r: : -1 0 q: 0

Lite mer detaljerat a = q + r 11 2 = 5 + 1 2 a: 0 1 0 1 1 r: : -1 0 q: 0 0

Lite mer detaljerat a = q + r 11 2 = 5 + 1 2 a: 0 1 0 1 1 r: : -1 0 q: 0 0 1

Lite mer detaljerat a = q + r 11 2 = 5 + 1 2 a: 0 0 0 1 1 r: : -1 0 q: 0 0 1 0

Lite mer detaljerat a = q + r 11 2 = 5 + 1 2 a: 0 0 0 1 1 r: : -1 0 q: 0 0 1 0 1

Lite mer detaljerat a = q + r 11 2 = 5 + 1 2 0 0 0 0 1 r: 1 q: 0 0 1 0 1

Dividend 1011 2 = 11 10 Divisor 10 2 = 2 10 0 1 sutract - restore sutract + keep Quotient 0101 2 = 5 10 sutract a = q + r 11 2 = 5 + 1 2 0 - restore sutract 1 Remainder 1

q 3 sign 0 0 FA 0 1 a3 0 1 0 1 0 0 1 a2 0 FA FA FA FA Sutraction! 1 FA a = 1 3 a2a1a q 1 3 0 1 1 0 q q q = 0 + r1 r 1 0 0 q 2 sign 1 0 1 0 0 1 a1 0 FA FA FA 1 q 1 sign 1 0 1 0 0 a 1 0 0 Sutract/Restore Divider q 0 sign FA FA FA 1 0 1 0 r 1 r 0 1

q 3 Not needed! 0 sign q 2 FA 0 0 1 a3 0 1 0 1 0 0 1 a2 0 sign FA FA 1 0 FA FA 1 1 0 FA a = 1 3 a2a1a 0 1 a1 0 q 1 3 0 1 1 0 q q q = 0 + r1 r 1 0 0 FA FA FA 1 q 1 sign 1 0 1 0 0 a 1 0 0 Sutract/Restore Divider q 0 sign FA FA FA 1 0 1 0 r 1 r 0 1

Using a multiplier and a ROM Q=A/B=A (1/B) Properties - Fast - VERY ig multiplicator! for division 8-itarstal A Bara heltalsdelen 11111111.00000000 B ROM 1/B MUL Q 8-itarstal Bara fraction 00000000.11111111 16 16 multiplikator Hur många Byte måste ROM innehålla om A och B är 8 itars tal?

Using a multiplier and a ROM for division a = 25 5 = 25 1 5 = 25,0 0,2 = 5,00 a 25 25 5 20 2 3 4 6 7 50 33 25 20 17 14 (0,50) (0,33) (0,25) (0,20) (0,17) (0,14) 1 The Pentium ug was aout wrong value in a lookup tale! 500

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 ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( + + + + + +

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

Logiskt och Aritmetisk shift höger Man skiljer mellan logisk och aritmetiskt shift Logisk shift höger shiftar ara till höger. Bitarna skall ej tolkas som ett tal. Man fyller ara på med 0:or. Aritmetisk shift höger ehandlar itarna som ett tal. Teckeniten ehålls vid shift. Man fyller på till vänster med teckeniten.

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 asen 10: 60/10 = 6, 600/100 = 6, 6000/1000 = 6 etc.

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

Barrel-shifter 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 ( S S S S S S S ) = ( A 6 5 4 3 2 1 0 7 A 6 A 5 A 4 A 3 A 2 A A 1 0 ) / 2 ( B B 1 0 )

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

Fixed-Point Q2-Representation 000 Se detta som ett pedagogiskt exempel: Tre-itars fixpunktstal 110 111-0.5-0.25 0 0.25 001 0.5 010 Ett talsystem med ara 8 tal är ju i praktiken oanvändart! -0.75 0.75 101-1 100 011

Fixed-Point Q2-Representation 000 0.11 0.10 0.01 0.00 1.11 1.10 1.01 1.00 0,75 0,5 0,25 0 0,25 0,5 0,75 1.0 111 0 001-0.25 0.25 110-0.5 0.5 010-0.75 0.75 101-1 011 100 1... 0... + 1

Maximalt kvantiseringsfel Q2-1 100-0.75 101-0.375 MQE: 0.125 0.6-0.5 110-0.25 111 0 000 0.25 001 0.5 010 QE: 0.1 0.75 011 Maximum Quantization Error: Since not all numers can e represented, quantization errors occur.

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: 2 1 0 Q2 2 1 0 Q2 Utökade teckenitar 5 4 3 2 1 0 ehålles Q4 kan vara smart att avrunda

Q-formatet Fixpunktsmultiplikation och fixpunktsdivision utnyttjar samma hårdvara som heltalsmultiplikation och heltalsdivision. Användning: Digitala filter tex. ljudkortet

Flyt-tal (eng. Floating-Point Numers) Ett flyt-tal representeras med en tecken-it, exponent-itar och en mantissa ( fraktionsitar) S Exponent Mantissa Sign-Bit exp m Värdet eräknas som FlP(B) = (-1) s * (1.m) * 2 ±exp Ofta är exp iaserad (har en offset), vilket då ger FlP(B) = (-1) s * (1.m) * 2 exp-(ias)

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

Floating-Point Numers (IEEE) Exponent Values 1 to 254: normalized non-zero floating-point numers; iased exponent (-126...+127) Exponent of zero and fraction of zero: positive or negative zero Exponent of ones and fraction of zero: positive or negative infinity Exponent of zero and fraction of non-zero: Denormalized numer (true exponent is 126), represent numers from 0 to 2-126 FlP(B) = (-1) s * (0.m) * 2-126 Exponent of ones with a non-zero fraction: NotANumer (Exception Condition) There is also a standard for a 64-it numer

IEEE 32 it float Tecken 1 it, exponent 8 itar, signifikand (mantissa) 23 itar. Genom att exponenteten skrivs exess 127 kan flyttal storlekssorteras med vanlig heltalsaritmetik! Behandlas igen i Datortekniken

Decimalt additionsexempel a = 123456.7 = 101.7654 normalized = 1.234567 10 = 1.017654 10 5 2 aligned = 0.001017654 10 Det tal som är minst (här ) skiftas (align) så åda talen får samma exponent. c = a + + 1.234567 10 0.001017654 10 1.235584654 10 Svaret kan ehöva normaliseras (skiftas). 5 5 5 Flyttalsoperationer är mycket krävande, om man inte har specialiserad hårdvara - addition kan vara mer krävande än multiplikation! 5

Addition med flyttal Givet två flyttal: c = = a + ( a ( + ( + ( a a = = a 2 2 frac frac ( a ( 2 2 a a exp exp Summan av dessa tal är: frac frac frac frac exp exp exp exp ) ) ))*2 ))*2 a exp exp,, Det tal som är minst skiftas if if a exp exp a exp exp

Sutraktion med flyttal Givet två flyttal: a = = frac frac 2 2 Differensen mellan dessa tal är: c = a = ( a ( frac frac ( ( a frac frac a 2 2 ( a ( exp exp a a exp exp exp exp ) ) ))*2 ))*2 a exp exp,, Det tal som är minst skiftas if if a exp exp a exp exp

Decimalt multiplikationsexempel c a c c = a = 4,734612 10 = 4,734612 5,417242 10 = 2,564854 10 3 9 = 5,417242 10 3+ 5 normalisera 5 Resultatet har fler siffror än vad som ryms avrunda. = 25,648538980104 10 8 Multiplikation inneär att man gör en addition av exponenterna, och en multiplikation med fraktionsdelarna. Svaret måste sedan normaliseras (skiftas).

Multiplikation med flyttal Givet två flyttal: a = = a a* frac frac 2 2 Produkten av dessa tal är: c = = a exp exp ( * 2 ) a + a frac frac exp Enklare! exp

Givet två flyttal: Division med flyttal a = frac frac 2 2 Kvoten mellan dessa tal är: c = = = a a / a exp exp ( / 2 ) a a frac frac exp exp

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

Flyttalsenhet Det krävs mycket kod och eräkningstid för att utföra flyttalsoperationer med en dator som saknar hårdvarustöd för detta. PC-datorerna har haft inyggda flyttalsenheter från och med 486 (1989).

Dyraste mjukvaruuggen? ESA rocket crashes at launch - 1996 doule (64-itars flyttal) Översättningen lev fel rymdes inte! signed short int (16-itars 2-komplementtal) Användes i systemet för horisontel ias Någon hade sovit under föreläsningen aritmetik2!

Fixed-Point vs. Floating-Point Fixed-Point operationer fungerar pss som heltals-operations och är snaare Fixed-point värden ehöver skalas, vilket ofta leder till förlust av precision Kostnaden för att ygga hårdvara är signifikant större för flyttalsprocessorer/räknare

Sammanfattning Multiplikation och division av heltal Konvertera negativa tal till sitt positiva dito. Utför multiplikationen eller divisionen Håll reda på vilket tecken resultatet skall ha Konvertera positivt resultat till sitt negativa dito 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. Teckeniten kopieras till vänster.

Addition vid La1 74283

Addition vid La1 C OUT 74283 B4 A4 B3 A3 B2 A2 B1 A1 C IN S4 S3 S2 S1

Addition vid La1 74283

Simulera addition

Sutraktion vid La1 74283 Inverteringen sker med en kontakt i stället för med XORgrindar! Rita klart

Multiplikation med konstant 74283? Antag att vi ehöver multiplicera ett tal x med 3. Det kan man göra som 2 x + 1 x = 3 x. Multiplikation med den jämna 2-potensen 2, sker genom att man "skiftar" anslutningarna för talets initar ett steg åt vänster. Eller som 2 (x + 0,5 x) = 3 x Smartare!