Sie sind auf Seite 1von 54

SkriptzurVorlesung AlgorithmenderDatentechnik bzw.

SystemgerechteAlgorithmen
Prof.Dr.Ing.DirkTimmermann
2/1SWS,5.bzw.7.Semester,allezweiJahreangeboten

InstitutfrMikroelektronikundDatentechnik, IEF,UniversittRostock

Stand WS 2008/2009

Literatur
PeterPirsch ArchitekturenderdigitalenSignalverarbeitung B.G.Teubner,Stuttgart ISBN:9783519061571 BerozParhami ComputerArithmetics,AlgorithmsandHardwareDesigns OxfordUniversityPress ISBN:9780195125832 IsarelKoren ComputerArithmeticAlgorithms PrenticeHALL,NewJersey ISBN:9781568811604 AmosR.Omondi ComputerArithmeticSystems PrenticeHall,NewYork ISBN:9780133343014

Inhaltsverzeichnis

1 ZAHLENDARSTELLUNGEN
1.1 Stellenwertdarstellungen 1.1.1 DarstellungeinernatrlichenZahlmitnZiffern 1.1.2 DarstellungeinergebrochenenZahl(positiv) 1.1.3 WahlderZahlenbasisr 1.2 DarstellungvonvorzeichenbehafteterZahlen 1.2.1 Betrags/Vorzeichendarstellung(signmagnitude) 1.2.2 EKbzw.Einerkomplementdarstellung(allg.(r1)Komplement) 1.2.3 Zweierkomplementdarstellung(allg.rKomplement) 1.2.4 RedundanteZahlensysteme 1.3 Rundung 1.3.1 RundendurchAbschneiden(truncation) 1.3.2 RundenzurnchstliegendenZahl(roundtonearest,normalesRunden) 1.3.3 RundenzurnchstengeradenZahl(roundtonearesteven) 1.4 berlauf(overflow) 1.4.1 berlaufbeiZweierkomplementzahlen 1.4.2 berlaufbeiCarrySaveZahlenDarstellungen 1.4.3 berlaufbeivorzeichenbehafteterredundantbinrerZahlendarstellung(SD) 1.4.4 Waskannmantunbeieinemechtenberlauf? 1.5 EinfacheOperationen

5
5 5 5 5 6 6 6 7 8 14 15 15 16 17 17 18 19 20 20 21 21 21

1.6 BerechnungvonAusdrcken 1.6.1 Konventionen 1.6.2 ZeitundFlchenbetrachtung

2 ADDITION&ADDIERER
2.1 GrundbausteinederAddition 2.1.1 1bitAddierer 2.1.2 Halbaddierer(2,2)Zhler 2.1.3 Volladdierer(3,2)Zhler 2.1.4 (m,k)Zhler 2.2 bertragsbasierendeAddierer 2.2.1 RippleCarryAddierer(RCA) 2.2.2 CarrySkipAddierer(CSKA) 2.2.3 CarrySelectAdder(CSEL) 2.2.4 ConditionalSumAdder(CSUM) 2.2.5 CarryLookaheadAdder(CLA) 2.2.6 AsynchroneAddierer 2.3 bertragsfreieredundanteAddierer 2.3.1 CarrySaveAdder(CSA) 2.3.2 VorzeichenbehafteterAddierer(RBA) 2.4 MehroperandenAddierer 2.4.1 MehroperandenAdditionmitAddiererArrays 2.4.2 (m:2)Kompressoren

24
24 24 24 24 25 26 27 27 28 29 29 30 30 30 31 33 33 34 3

2.4.3

MehroperandenAddierermitAddiererBumen

35 36 36 36 37 37

2.5 SequentielleAddierer 2.5.1 LSBfirstserielleAddierer 2.5.2 MSDfirstserielleAddiererDigitOnlineArithmetik 2.5.3 Akkumulatoren 2.6 EinfacheaufAdd/SubbasierendeOperationen

3 MULTIPLIKATION
3.1 Grundlagen 3.1.1 VorzeichenloseMultiplikation 3.1.2 ZKMultiplikation 3.2 3.3 3.4 3.5 3.6 Vorzeichenloser'Baum'ArrayMultiplizierer VorzeichenbehafteterPezarisArrayMultiplizierer BoothMultiplizierer BoothWallaceMultiplizierer BewertungderverschiedenenMultiplizierer

38
38 38 39 39 40 40 41 41

4 DIVISION
4.1 4.2 4.3 4.4 4.5 4.6 Definition Grundlagen RestoringDivision(wiederherstellendeDivision) NonRestoringDivision(nichtwiederherstellendeDivision) SRTDivision MultiplikativeDivision[Anderson,1960]

42
42 42 43 43 45 46

5 BERECHNUNGELEMENTARERFUNKTIONEN
5.1 KlassifikationderMethoden

47
47 48 48 49 50 51 51 52 53

5.2 CORDIC 5.2.1 DrehungeinesVektors 5.2.2 ZerlegungdesDrehwinkelsinElementardrehwinkel 5.2.3 Rotation&Vectoring 5.2.4 VerallgemeinerungaufandereOperationen 5.2.5 bersichtderCORDICFunktionen 5.2.6 Architekturen 5.2.7 CORDICinredundanterZahlendarstellung

6 ANWENDUNGENUNDBEISPIELE
6.1 DigitaleFilter

54
54

1 Zahlendarstellungen
1.1 Stellenwertdarstellungen
Beim Stellenwertverfahren ergibt sich der Wert der Zahl als Summe der Produkte aus Ziffernwert und Stellenwert.

1.1.1 DarstellungeinernatrlichenZahlmitnZiffern
A=an1an2...a1a0 ai{0,1,...,r1}(Ziffern,Digit) r=BasisderZahlendarstellung(Radix) r=2binre r=3ternre r=8oktale r=16hexadezimale Zahlenwert=V(A)= darstellbarerZahlenbereich:0V(A)<rn

a r
i =0 i

n 1

(1.1.1)

1.1.2 DarstellungeinergebrochenenZahl(positiv)

A=an1an2...a1a0.a1...am

Zahlenwert=V(A)=

i = m ganzzahligerAnteil:an1an2...a1a0 gebrochenerAnteil:a1...am DasKomma(derDezimalpunkt)wirdinderRechnerhardwareniemalsexplizitdargestellt,sondernnurinseiner Position1xfestgelegt(vomEntwickler)unddannimallg.beibehaltenFestkommadarstellung(fixpoint) darstellbarerZahlenbereich:0V(A)<rn

a r
i

n 1

1.1.3 WahlderZahlenbasisr
blich:r=2binresZahlensystem ImComputersystemsehrleichtdurchzweiwertigeLogikdarzustellen UVDDVSS IImaxImin Frage:WasisteineeffizienteZahlenbasisineinembitorientiertenSpeicher? speicherplatzsparend frn>1immeraufBasisr=2zurckfhrbar z.B.r=4, ai{0,1,2,3} 2ZifferninZahlenbasisr=2(ai{0,1})

Speicher [Bit]

3 2 1

r 2 3 4 5 6 7 8

FreinenpositivenZahlenwertVbentigtmanbei

r = 2 : log 2 (V ) r = 3 : log 3 (V )

BitsanSpeicherplatz.

1.2 DarstellungvonvorzeichenbehafteterZahlen
BeiDarstellungvonpositivenZahlengengtdieDarstellungnach1.1.1und1.1.2. BeizustzlichennegativenWertengibtesverschiedeneMglichkeiten.

1.2.1 Betrags/Vorzeichendarstellung(signmagnitude)
HinzufgeneinesVorzeichenbits(z.B.0=pos,(r1)=neg)zumBetragderZahl. frpositive,(n1)stelligeganzeBinrzahlen ASM=0an2an3...a1a0 ASM=1an2an3...a1a0 frnegative,(n1)stelligeganzeBinrzahlen symmetrischumNull,aberdieNullexistiertdoppelt,pos.&neg. rn1<V(A)<rn1 V(ASM)= ( 1)
an 1

ai r i
i =0

n2

Nachteil: Keine einheitliche Behandlung positiver und negativer Zahlen in den Arithmetikeinheiten (z.B. Addierern)mglich,aufgrundderdoppeltenNull.

1.2.2 EKbzw.Einerkomplementdarstellung(allg.(r1)Komplement)
DienegativeZahlwirddurchBildungdesStellenkomplements a i

= r 1 ai erzeugt.

Ar 1 =(r 1)a n 2 a n 3...a1 a 0


Bsp.:

fr r = 16 : E = 15 E = 15 (14) = 1

fr r = 2 : 1 =0 und 0 = 1 (Bitinversion"Bitflipping") Auchhierexistieren2ReprsentationenfrdieNull,NachteilwiebeiBetrags/Vorzeichendarstellung

an1 r n 1 n 2 V ( Ar 1 ) = (r 1) + ai r i r 1 i =0

1.2.3 Zweierkomplementdarstellung(allg.rKomplement)
Vorabrechnung: Zahlenwert=V(A)= AusderIdentittfrgeometrischeReihemitElementenri n 1 r n 1 i r = r 1 i =0 erfolgtnachUmformung: n 1 n r = (r 1) r i + 1 i =0 EinsetzeninGleichung(1.2.1)ergibt:
n 1 i =0

a r
i

(1.2.1)

V(A)= r +
n

(r 1 a ) r
i =0 i

n 1

+ 1

MitEinsetzendesin1.2.2.definiertenStellenkomplements a i = r 1 ai ergibtsich: aber:Umrechnungvon9C16=10010nurnach"signextension"mglichF9C16 immeranwendbar: A r 1 =( r 1) a n 2 a n 3 ... a1 a 0 + 1 DieDarstellungimrKomplementslautet: A r =a n 1 a n 2 a n 3 ... a1 a 0 + 1 Mit1.2.2gilt: V(A)=


r an1 2 n n1 i r + ai r r 1 i =0

V(A)= r +
n

a r
i =0 i n2 i =0

n 1

+ 1 (1.2.2)

V(A)= ( an1 )(r

n 1

) + ai r i (frbinresSystem)

Ar = r n A

r 2 r negativesA:Vorzeichenstelle=1imBinrsystembzw. 2
positivesA:Vorzeichenstelle=0imBinrsystembzw. < 7

VorteiledesrKomplements: pos.&neg.ZahlenknnenindergleichenHardwarebehandeltundverarbeitetwerden. r=2Zweierkomplement eindeutigeDarstellungderNull asymmetrischerZahlenbereich: r


n 1

V ( A) < r n1

1.2.4 RedundanteZahlensysteme
AlssolchewerdenZahlendarstellungenbezeichnet,diemehralseineDarstellungfreineZahlermglichen. StrenggenommenwredasauchSMund(r1)Komplementdarstellung,dadieNullmehrfachdarstellbarist. EigentlichwerdendabeijedochdiefolgendenSystemegemeint:

1.2.4.1 ZahlensystememitvorzeichenbehaftetenZiffern(SignedDigit)
JedeeinzelneZifferhateineigenesVorzeichen ai{,...,1,0,1,...,} Esgilt:

r 1 , r 1 2

x=ceiling,kleinsteganzeZahlx

InWorten:,mssenmindestensdashalbeIntervallvonr1berdecken. BerechnungvonV(A)analogzu(1.1.1): V(ASD)=

a r
i =0 i

n 1

Definition: Esliegteinsymmetrisches,redundantesvorzeichenbehaftetesZahlensystemwenn=vor,ansonsten einasymmetrisches. EinsymmetrischesvorzeichenbehaftetesZahlensystemhatmaximale(minimale)Redundanzfr: r 2 3 Zahlenwerte {1,0,1} {2,1,0,1} {1,0,1,2} {2,1,0,1,2} {2,1,0,1,2}minimaleRedundanz {3,2,1,0,1}nichtmglich! {3,2,1,0,1,2,3}maximaleRedundanz =r1

r 1 = 2

BetrachteimFolgendenausschlielichr=2: redundantbinresZahlensystem ai{1,0,1} fr nstellige Zahl 3n mgliche Darstellungen, aber nur 2n+11 unterschiedliche Zahlenwerte (wg. negativemZahlenbereich) 8

Bsp.frn=3:

310 = 01 1

= 101 =1 1 1

FRAGE: WiesiehtdieredundantbinreZahlmitderniedrigstenAnzahlvonZiffernungleichNullaus? BeachtedazueineKettevonaufeinanderfolgendenEinseninSDDarstellung(bitstringarithmetic): ...001 11...110 Diesekannersetztwerdendurch

...01000...010 Oderformal: 2 i + k 1 + 2 i + k 2 + ... + 2 i +1 + 2 i = 2 i + k 2 i (PositiveFall)


Bsp.:

01 1 12 = 710 = 1001 = 8 1

WeitereUmformungen:

01 10 = 0010 01 10 = 0010

FormalfrdennegativenFall:

2i + k 1 + 2i + k 2 +...+ 2i +1 + 2i = 2i
HinweisfrUmwandlung: VorzeichenloseDarstellungmitnDigits CSDDarstellungmit(n+1)Digits SDDarstellungmitnDigits CSDDarstellungmitnDigits Definition: Eine Canonical Signed Digit (CSD)Zahl ist eine SDZahl mit minimaler Anzahl von "nonzero"Digits und derzustzlichenBedingung,dasskeinebenachbartenDigitsnonzerosind. n 1 ! a = minimal i = i 0 ! fr1in1 a i a i 1 = 0 Die Umwandlung einer SDZahl in die entsprechende CSDDarstellung wird von rechts nach links unter AnwendungdergezeigtenStringUmformungendurchgefhrt. Dabei neu entstehende Einserketten sind erneut umzuwandeln ist also ein sequentieller Prozess mit ggf. mehrerenDurchlufen. Ggf.istdieStellenanzahlum1zuerhhen. Beispiel: minimaleDarstellungfrn=3(vorzeichenlos) 710=1112

minimaleDarstellungfrn=4(vorzeichenlos) 1001 Beispieledes"CSDRecoding" 9

a)

36610

= 0001 0110 1110 = 0001 0111 0010 = 0001 1001 0010 = 0010 1001 0010

b)

-21310

= 1111 0010 1011 = 1111 0010 1101 = 1111 0011 0101 = 1111 0101 0101 = 0001 0101 0101

DasCSDRecodingerzeugtdieminimaleAnzahlvonnonzeros,istjedocheinsequentiellesunddamitlangsames erfahren. Die Zahl muss von rechts nach links abgearbeitet werden, evtl. auftretende bertrge 1 oder 1 sind entsprechendinhherenStellenzubercksichtigen. Formallsstsichdasauchwiefolgtbeschreiben: Dualzahl CSDZahl ai+1ai ci ai ci+1 Bemerkung 000 0 0 KettevonNullen 010 1 0 eineeinzelne1 100 0 0 KettevonNullen 110 1 1 BeginneinerEinserkette 001 1 0 EndeeinerEinserkette 011 0 1 KettevonEinsen 101 1 1 eineeinzelneNULL 111 0 1 KettevonEinsen Dieminimale/mittlere/maximaleAnzahlvonnonzerosnachCSDRecodingist: 0(trivial!)/~ n 3 /
n +1 2

Wiemansieht,istsievonderZahlabhngigunddamitvariabel:Anzahldernonzerosistf(Zahl) FrdieschnelleAnwendunggeeignetistdervonBooth1951vorgeschlagenegleichnamigeAlgorithmus: Dualzahl SDZahl aiai1 ai Bemerkung 00 0 KettevonNullen 11 0 KettevonEinsen 10 1 Beginn einer Einserkette (mit a1=0) 01 1 EndeeinerEinserkette

10

Anwendung beliebig von links nach rechts oder umgekehrt oder fr alle Bits parallel da kein bertrag auftritt. Nachteiljedoch:eswirdnichtimmerdieminimaleFormgefunden Beispiel:
0 0 1 0 1 0 1 0 1 (0)

0 1 1 1 1 1 1 1 1

Dasliegtdaran,dassisolierteEinsennichtgesondertbehandeltwerden. Eine Verbesserung gelingt hier durch den modifizierten BoothAlgorithmus, der berlappend jeweils 3 Bit(overlappedbitscanning)untersucht.

a7

a6

a5

a4

a3

a2

a1

a0

a-1(=0)

a'7
Dualzahl aiai1ai2 000 010 100 110 001 011 101 111

a'6

a'5

a'4

a'3

a'2

a'1

a'0

SDZahl r=2 r=4 aiai1 00 0 01 1 10 2 01 1 01 1 10 2 01 1 00 0 Bemerkung KettevonNullen einzelneEins BeginneinerEinserkette BeginneinerEinserkette EndeeinerEinserkette EndeeinerEinserkette eineeinzelneNull KettevonEinsen

fri=1,3,5,... DurchBehandlungeinzelnerNullenundEinsenwirderreicht,dassdieAnzahldernonzerosmaximaln/2ist(fr geraden).AuerdemistdiemodifizierteVarianteebensoparalleldurchfhrbar.


33610 = 0 0 0 1 0 1 1 0 1 1 1 0 0 n=12

= =

0 0

0 1

1 2

0 1

0 0

1 2

Radix r=2 Radix r=4

Beispielfra)beimSDRecoding:

Offensichtlich keine CSDZahl, da benachbarte nonzeros existieren, aber es wurde von 6 auf 4 nonzeros reduziert. 11

VergleichderUmkodierungsverfahren METHODE Verfahren Min CSD Sequentiell 0 Booth modified Booth Parallel Parallel 0 0

#nonzeros Max ~n 3 ~n 3 ~n 3
+1 n2

Kommentar imvorausbeibekanntenZahlen keineAnwendung onlinebeibeliebigenZahlen(Multiplizierer) Hlfte der Chipflche kann eingespart werden,wegenmehrNullen

2
n +1

UmwandlungvonZKZahleninsSDZahlensystem positivkeinProblem A=an1an2...a1a0.a1...am UmwandlungerfolgtparallelineinerGatterlaufzeit Beispiel:

510 = 01012 = 0101SD 2

510 = 10112 = 1011SD 2

UmwandlungvonSDZweierkomplement (1) SDZahl D in 2 Dualzahlen D+ und D aufspalten, wobei D+ nur dort Eins ist, wo D positive Ziffern hat (D nur dortEinsen,woDnegativeZiffernhat). (2) AZK=D+D Beispiel:

010111 = 16 + 4 2 + 1 = 1310

D+ = 000101 D- = 010010 000101 + 101101 + 000001 == =========== 110011ZK = -0011012 = -1310 LaufzeitderUmwandlungistgleicheinerAddiererlaufzeitbernBit,unddamitlangsam! DarstellungvonredundantbinrenZahlen 3Werte{0,1,1}werdenin2Bitkodiert Speicherbedarf/AnzahlLeitungen/Verarbeitungseinheitenverdoppelnsich Mit4Zustndenbei2BitsindmehrereKodierungenmglich! 2KodierungenwerdeninderPraxisverwendet(aberimPrinzipauchanderemglich). 12

a 0 1 1 Vorteil

Code1(SignValue) SV 00 01 11 intuitivzuerfassen(SMDarstellung)

Code2(NegativPositiv) NP 00 01 10 {11}hatdenWert0 D+=Pn1Pn2..P0 D=Nn1Nn2..N0 UmwandlungnachZKisteinfach

VorteilderredundantenDarstellung: Addition(Subtraktion)istohneCarry!(ErklrungbeiAddierer) schnellerbeiallenadditionsbasiertenAlgorithmen beifastallenAlgorithmenwiewirspternochsehenwerden Nachteile: mehrRessourcen Grenvergleich(z.B.<,=,>)aufwendiger erstnachUmwandlunginsZweierKomplement(auerbei=,wga=bab=0und0isteindeutig) langeAddiererlaufzeit Strategie: SovielwiemglichimredundantenZahlensystemerledigenunderstsosptwiemglichzurckwandeln!

Laufzeit
ZK -> SD

Operation 1

= f(n) Berechnung ohne Carry


Operation n

SD -> ZK

log2(n)

13

1.2.4.2 CarrySaveZahlensystem
Abgeleitet/entstandenausAddierern!
an-1 bn-1 an-2 bn-2 a1 b1 a0 b0

cn

VA

VA

VA

VA

c0

sn-1

sn-2

s1

s0

an-1

bn-1

an-2

bn-2

a1

b1

a0

b0

c0 HA HA HA HA

cn

sn-1 cn-1

sn-2

c2

s1

c1

s0 c0

DasDigitaibestehtausdemTupel:ai=(sici+1)=2xci+1+si=Summevon3Werten Darstellungdurch2Zahlenvektoren(ZwischensummenvektorsundCarryvektorc) ACS=an1an2...a1a0 V(ACS)=

a 2
i =0 i

n 1

Diese Addition in CarrySaveDarstellung bentigt nur 1. VALaufzeit, aber auch 2 Speicherbits pro Stelle! ZwischenCSundSDDarstellungbestehtprinzipiellkeinUnterschied +CS:entstehtalsZahlendarstellungamAusgangvonHA +SD:"natrliche"Vorzeichendarstellung

1.3 Rundung
Beispiel: 2nBitVektorensindzumultiplizierenunddas(2n)BitErgebnissollaufmBitgerundetwerden. Rundungsverfahrenwerdenbewertetnach GenauigkeitderErgebnisse ArtdesRundungsfehlers(numerischeEigenschaften) Kosten(Aufwand) Geschwindigkeit(HWspezifisch) Gegebensei: A=an1an2...a1a0.a1...ad B=bn1bn2...b1b0=A=AB Gesucht:BalsRundungsergebnisvonA Ziel:sollmglichstkleinsein

14

1.3.1 RundendurchAbschneiden(truncation)
Btrunc=an1an2...a1a0 Bias(mittlererFehler)= =

1 1 + d +1 2 2
d=5(frdenBeweis)

Beweis:(keinguter...) max.Abschneidefehler:max=0.11111 min.Abschneidefehler:min=0.00000

bias =

max min 2 0.11111 0 = 2 = 0.011111 = 0.100001 = 1 2 ( d +1) 2

DasVorzeichenberuhtaufderTatsache,dassimmerabgeschnittenwird,derBiasalsoimmernegativist! DasDiagrammverdeutlichtdenunsymmetrischenBias:
4 3 2 1

1.3.2 RundenzurnchstliegendenZahl(roundtonearest,normalesRunden)
NeuesAbilden: A= A + 0.510 = A + 0.12 (1) Additionvon0.5 (2) Abschneiden(dazuAdditionhufiginvorhergehendeOPeinbauenmitCin,0=1) Bround=an1an2...a1a0 max.Abschneidefehlerfr: A=0.102 Bround=1max=0.1=2d min.Abschneidefehlerfr: A=0.00...0min=0 15

2 d = 2 ( d +1) Bias= 2

4 3 2 1

FastsymmetrischerBias(Ursache:AufrundenfrA=Y.1000) Abhilfe wird durch ein abwechselndes Auf und Abrunden geschafft, z.B: zur nchsten geraden oder ungeradenZahl.

1.3.3 RundenzurnchstengeradenZahl(roundtonearesteven)
Bias=0(symmetrisch)
4 3 2 1

VerwendetimIEEE754FloatingPointFormat

Bround Bround ,even = (an 1 ,..., a1 ,0)

, wenn a1 ...a d 0.0000 , sonst

16

1.4 berlauf(overflow)
Trittauf,wenndieZahlnichtindiezurVerfgungstehendeWortbreitepasst.
000...0 011...1 100...0 111...1 2 n-1

-2 n-1

2n unsigned 2s complement 1s complement sign magnitude

1.4.1 berlaufbeiZweierkomplementzahlen
ZurErinnerung:2n1V(Ar)<2n1 berlaufbeiAddition(ZweierkomplementZahlen): Falla)2pos.SummandenSummenegativ(dabertragausVorzeichenstelleverworfenwird)

(a

n 1

b n 1 s n 1 cin =1, cout =0

Fallb)2neg.SummandenSummepositiv

(a

n 1

bn 1 s n 1 cin =0,c out =1

Ein Vergleich mit allen anderen mglichen Kombinationen zeigt, dass ein berlauf durch CinCout in der Vorzeichenstelleerkanntwerdenkann. Hufig erfordern die zu realisierenden Anwendungen (Signalverarbeitung, ...), dass kein berlauf sondern eine Sttigungzumkleinsten(10...0)bzw.zumgrtenWert(01...1)vorgenommenwird:
an-1 bn-1

cout

VA

cin

sn-1

Sttigungsfunktion

overflow
sn-1

FrnichtredundanteDarstellungenisteinberlaufeindeutigfeststellbar!

17

1.4.2 berlaufbeiCarrySaveZahlenDarstellungen
ImGegensatzzunichtredundantenDarstellungexistierenzweiTypenvonberlufen,einechterberlaufund einPseudoberlauf. Bsp.: ! 0.510+(0.510)+0 = 0 carry sum Ergebnis 20 0 1 0 0 21 1 1 0 1 0 1 0 1 0 22 0 0 0 0 0 210 falschesZwischenergebnis! kannaberunterdrcktwerden 0.510 0.510 0 0

hiermitNULLauffllen

Dieses falsche Ergebnis in CSDarstellung wrde jedoch bei einer Umwandlung in eine ZKDarstellung mittels AdditionbeiderVektoren(VectorMergingAddition,VMA)wiederdierichtigeSummeergeben. 1.00 1.00 1|0.00=0 bertragflltweg.. DiesesfalscheZwischenergebnis(2)wrdeindiesemFall(derUmwandlung)nichtstren. Weitere arithmetische Operationen wrden jedoch ein falsches Ergebnis bewirken! Z.B. Multiplikation beider Vektorenmit0.510=>rechtsschiebenmitvorzeichenrichtigerErweiterung(signextension) (0.510+(0.510)+0)*0.510=0 1.00:21.10=0.510 1.00:21.10=0.510 PSEUDOBERLAUF!! 11.00=110 D.h., nach der Umwandlung in die nichtredundante Darstellung wird der Fehler offensichtlich, der durch berlaufeffekte entstanden ist, obwohl die Wortbreite an sich zur Darstellung der Ergebnisse ausreichen wrde. DieserPseudoberlaufistgekennzeichnetdurch: CinCout/(S0C1)(sieheauch1.4.1) 18

DerPseudoberlaufkanndurchfolgendeOperationkorrigiertwerden: C0 C1 C2 C1 S0 S1 S2 neu: C0 C1 C2 S0 S1 S2 mit: C0=C1 S0=

c1 , wenn c1 c0 s 0 sonst

Realisierung:S0(C1C0) Diese EXOROperation kann ohne Geschwindigkeitsverlust in die normale logische Funktion des Addierers in der Vorzeichenstelle integriert werden. Anwendbar ist diese Korrektur des Pseudoberlaufes nur unter der Bedingung,dassdaskorrekteErgebnisindieentsprechendeZKDarstellungpasst,worausS0C1folgt. AllgemeinkanneineReduktionfhrenderStelleneinerCSZahlwiefolgterreichtwerden: Voraussetzungist,dassdieCSZahlindenWertebereichderentsprechendenZKZahlpasst: 1C+S12(m1)

Danngilt:

Cn 1 ... C1 C0 . C1 C 2 .... S n 1 ... S1 S 0 . S 1 S 2 .... S ( m1)


C0' C1 C 2 ... S S 1 S 2 ...
' 0

mit S 0 ' =

S 0 , wenn S1 C1 S 0 sonst
und

C0 , wenn S1 C1 C0 ' = C0 sonst

Realisierung: S0=S0(S1C1) C0=C0(S1C1) DerVorteilderPseudoberlaufkorrekturliegtdarin,dasswenigerStellenunddamitwenigerChipflchealsin einerunkorrigiertenZahlendarstellungbentigtwerden.

1.4.3 berlaufbeivorzeichenbehafteterredundantbinrerZahlendarstellung(SD)
Ein quivalentes Schema wie in der CSDarstellung lsst sich angeben, vgl. mit Abschnitt zur vorzeichenbe haftetenredundantbinrenDarstellungundAddition. WiebeiCStretenechterberlaufundPseudoberlaufauf. Entscheidend fr das berlaufverhalten sind die MSDSummenstellen sn1 und das abgeschnittene Zwischen bertragsbitdn. EineAnalysedermglichenFllefrzurKorrekturvorschriftfrsn1:

19

dn 1 1 1 N N N 0

sn1 N 0 1 N 0 1 X

berlauftyp pseudo potentieller echter echter potentieller pseudo keinberlauf

sn1 1

N sn1

DiePseudoberlaufkorrekturkannindieMSDStelledesRBAohneGeschwindigkeitsverlustintegriertwerden. DerechteberlaufmussdurchModifikationaufSystem/Algorithmusebeneverhindertwerden. Der potentielle berlauf wrde zur Unterscheidung vom echten berlauf eine Inspektion aller niederwertigen Digitserfordern(HWAufwand). Durch Beschrnkung des mglichen Wertebereiches auf Werte mit Betrag < 2n1 kann auch der potentielle berlaufvermiedenwerden.

1.4.4 Waskannmantunbeieinemechtenberlauf?
VorheraufSystemebenesimulieren Wortbreitenabschtzungnachoben HWaufdieseWortbreiteauslegen Wennzuteuer:Sttigung?Echtenberlauferkennenundbeheben?

1.5 EinfacheOperationen
Operation Schieben Vorzeichenlos ZK Rotation Erweitern Vorzeichenlos ZK Sttigung 20 Vorzeichenlos ZK l an2...a00 r 0an1...a1 l an1an3an4...a00 r an1an1...a1 l an2...a0an1 r a0an1...a1 l 0an1...a0 r an1...a00 l an1an1...a0 r an1...a00 jeweilsum1.Stelle Kommentar arithmetischesSchieben SchiebenumkBitposition,n=konstant RotierenumkBitposition,n=konstant ErweiterungderWortbreiteumkBitvonnauf(n+k)Bit(SignExtensionbeiZKDarstellung) SttigungzumjeweilshchstenWertnachberlauf

an1...an1 an1an1...an1

00...0bzw.11...1 10...0bzw.01...0

1.6 BerechnungvonAusdrcken 1.6.1 Konventionen


A...Area(Flche) T...Zykluszeit,Verzgerung, L...Latenzzeit #...AnzahlTaktzyklen

Annahme: Inverter,Buffer: A=0,T=0(alsovernachlssigen) Einfache2InputGatter(AND,NAND,OR,NOR): A=1,T=1 Spezielle2InputGatter(XOR,XNOR): A=2,T=2 Komplexgatter(zusammengefasstausEinfachgatternundmEingangsgatter): A=m1,T=log2(m)(BAUM!) Verdrahtungnichtbetrachtet,dadurchsehridealisiert,nurzumgrobenrelativenVergleich

1.6.2 ZeitundFlchenbetrachtung
Gegebensei: Eingngeai Ausgngezi Funktionf(mitgraph.Symbolh)

1.6.2.1 NichtrekursiveFunktion

a3

zi=f(ai)mit:i=0,...,n1 zi=f(ai,x),xistKonstante paralleleStrukturenmglich


a2 a1 a0

z3

z2

z1

z0

A=O(n) T=O(1)

21

1.6.2.2 RekursiveFunktion
AusgangziwirdbestimmtdurchalleEingngeakmitki a) ineinzigerAusgangz=zn1 i=0...n1 ti=f(ai,ti1) t1=
0 1

wahlweise

z=ta Fall1:fistnichtassoziativ
a3 a2 a1 a0

z3

serielleStruktur A=O(n) T=O(n)

FALL2:fistassoziativ
a3 a2 a1 a0

z3

SerielleodereinfacheBaumstruktur A=O(n) T=O(log2(n))

b)mitmehrerenAusgngenzi(sogenanntesPrfixProblem) i=0...n1 zi=f(ai,zi1) z1=


0 1

wahlweise

FALL1:fistnichtassoziativ
a3 a2 a1 a0

z3

z2

z1

z0

serielleStruktur A=O(n) T=O(n) 22

FALL2:fistassoziativ
a3 a2 a1 a0

SerielleoderMehrfachbaumStruktur A=O(n2) T=O(log2(n))

z3 z2 z1 z0

ODER:gemeinsamgenutzte(shared)Baumstruktur a3 a2 a1 a0 A=O(nxlog2(n)) T=O(log2(n)) z3 z2 z1 z0

23

2 Addition&Addierer
2.1 GrundbausteinederAddition 2.1.1 1bitAddierer
AddiererbiszumBitsgleicherWertigkeit,also1BitZahlen ErgibtKBitSumme,Klog2(n)+1 IstquivalentzueinemEinsenZhler(m,k)Zhler

2.1.2 Halbaddierer(2,2)Zhler
a+b=2cout+s Summe: s=ab bertrag: cout=ab

a b a b cout HA cout cout a b A =3 Tout = 1 TSumme= 2

s s

2.1.3 Volladdierer(3,2)Zhler
a+b+cin=2cout+s ntzlicheHilfsgren: g=ab;generate(Cout) p=ab;propagate(Cin) C0=ab C1=ab s=abcin=pcin cout =(ab)(acin)(bcin) =(ab)((ab)cin)) =g(pcin) =(pg)(pcin) =(pg)(pcin) =(cinC0)(cinC1) JederderbooleschenAusdrckeergibteinebesondersfreinebestimmteTechnologiegeeigneteRealisierung (siehenachfolgendeAbbildungen).

24

a a b

a b

HA p HA

cout

FA

cin

cout

cin

cout

cin

s s

a b a b a b

0 cout g cout p cin 1

p cin cout

c0

c1 cin

s s

MultiplexersehreinfachinCMOSrealisierbardurchTransmissionGatessehrschnell.

A=7,TSum=4,Tout=2

2.1.4 (m,k)Zhler
AdditionvonmBits

a0 a1

am-1

... ( m, k ) ...
sk-1

s0

IstfrgewhnlichausVolladdierernaufgebaut. Die Assoziativitt der Addition erlaubt die Umsetzung der linearen in eine Baumstruktur schneller beigleicherVolladdiererAnzahl 25

Beispiel:(7,3)Zhler

a 0 a1 a 2 a 3 a 4 a 5 a 6

a0 a1 a2

a3 a 4 a 5 a 6

VA

VA

VA

VA

VA

VA

VA

A = 28 T = 10
s0

VA

s2 s0

s1

s2

s1

linear

Baum

2.2 bertragsbasierendeAddierer
Addiert2nBitOperandenAundBundeinoptionalerCINdurchbertragsweiterschaltung DieSummeisteinenichtredundante(n+1)BitZahl.

A + B + cin = S + cin 2n

A B

cout

CPA S

cIN

2 cin + Si = ai + bi + ci (fri=0,1,...,n1) c0 = c in , cout = c n


DieArtderCarryweiterschaltungbestimmtdenAddierertyp. ImFolgendenwerdenverschiedeneAddierertypenvorgestellt.

26

2.2.1 RippleCarryAddierer(RCA)
serielleAnordnungvonVolladdierern(VA) einfachster,langsamsterundkleinsterCarryPropagateAddierer(CPA)

an-1 bn-1 cout VA sn-1

...

a1 b1 VA s1

a0 b0 VA s0 cIN

cn-1 ... c2

c1

A=7nT=2n Beschleunigungderbertragsberechnung TypAUnterteilungderWortbreiteinGruppenauskleinenCPA'smitschnellencINcout TypBParallelisierungdurchBaumstruktur

2.2.2 CarrySkipAddierer(CSKA)
TypA Idee: stelle fr jede Gruppe parallel fest, ob ein einkommendes cIN in diese Gruppe ein cout aus dieser Gruppe generiertoderdirektbereine'Umleitung'dieseGruppeberspringenkann(skip+propagate)
an-1: j bn-1 : j ai-1: k bi-1: k a k-1: 0 b k-1: 0

...
cout CPA cj

0 ci 1

c'i

CPA CPA ck cIN

...

sn-1: j

Pi-1 : k

si-1: k k- Bit Gruppe

s k-1: 0

ci = ( Pi 1:k c ) ( Pi 1:k c k ) Wobei: Pi 1:k = pi 1 pi 2 ...1 pk =GroupPropagate(GesamtesGruppenbzw.BlockPropagate) (erfordertkInputANDGatterproGruppe) pi = ai bi =BitPropagate Funktionder Pi 1:k :
' i

Pi 1:k = 0 ck beeinflusst ci' nicht ci aufAusgangdesMultiplexersdurchschalten Pi 1:k = 1 ck beeinflusst ci' nichtdeshalbkann c k sofortdieseGruppe'skippen'undaufdenAusgang
desMultiplexersdurchgeschaltetwerden Konsequenz:lngsterPfadineinerbeliebigenGruppe=kBits DeshalbergibtsichfolgendeFrage: WelcheGruppengrekergibtminimaleVerzgerungszeit? Annahme:FesteskfralleGruppenn/kgleichgroeGruppen TMUX=1,Tcarry=2

27

an-1: j bn-1 : j

ai-1: k

bi-1: k

a k-1: 0 b k-1: 0

...
cout CPA cj

0 ci 1

c'i

CPA CPA ck cIN

...

sn-1: j

Pi-1 : k

si-1: k

s k-1: 0

n TCSKA = k Tcarry + 2 TMUX + (k 1) Tcarry k (mitTMUX=1,TCarry=2) = (2k 1) Tcarry + nk 1 2 TMUX

= 4k 2 + nk 1 2

' TCSKA (k ) = 4 + ( n k 2 ) = 0

4 = n k 2

k opt =

1 n (optimaleGruppengre) 2

1 TCSKA = 2 n + n n 4 (nachEinsetzenderoptimalenGruppengre) 2 =2 n +2 n 4 TCSKA = 4 n 4 = O( n )


WeitereVerbesserungen: innerhalbeinerGruppebesondersschnellerCPAverwenden,z.B.CSKAmehrstufigerCSKA variableGruppengreki,grereGruppeninderMitte,z.B.frn=32: o 1,2,3,4,5,6,5,3,2,1 AufwandundZeit(1ANDBit+1MUX/Gruppe) o

A = 8n , T = 4 n

2.2.3 CarrySelectAdder(CSEL)
TypA Idee: Verdopple je KBit Gruppe den CarryPfad und berechne parallel je ein cout und sout fr beide Flle cIN = 0 undcIN=1 daseintreffendecINvondervorhergehendenGruppewhltnurnochdasrichtigeErgebnisausundschaltet diesesdirektweiter(select)

si 1:k = (ck si01:k ) (ck si11:k ) istdieausgewhlteSumme


0 1

ci = (ck ci ) (ck ci ) AuchhierdieFrage:WasistdieoptimaleGruppengre? K opt = 0( n )

s.bung

TCSEL = 0( n ) 2,8 n

28

MglicheVerbesserungen: schnellereCPAjeGruppe Variable Gruppengre k, berlappe TCPA + TMUX mit TCPA der folgenden Gruppe in etwa GruppengrevomLSBzumMSBsjeweilsum1erhhen,z.B.28BitAddierer:7654321 o TCSELdanngleichderLaufzeitderletztenGruppe+SummenmuxLaufzeit Berechnunginderbung o VergleichevariableGruppengrevonCSKundCSEL AufwandgegenberRCA: 1Summenmux/Bit+[CPA+Carrymux]/Gruppe Aber es muss nicht der gesamte CPA verdoppelt werden, sondern nur das AusgangsXOR und der CarryMux

A = 14n, T = 3 n

cout

0 1 p cIN verdoppelt!

2.2.4 ConditionalSumAdder(CSUM)
TypA+B WieCSEL,aber: statt sequentieller Weiterschaltung des Carry von kBitgruppen jetzt parallele Weiterschaltung von 1 BitGruppeineinerBaumstruktur(sieheBildimWebundbung) Die richtigen nSummandenbits werden abhngig vom Ergebnis in einem log2(n) tiefen Baum vom Multiplexerweitergeschaltet SchnellsternichtredundanterAddiererdurchmax.ParallelittmitgroemAufwand

A = 3n log 2 (n) = O(n log 2 (n)) T = 2 log 2 (n) = O(log 2 (n))

2.2.5 CarryLookaheadAdder(CLA)
TypB parallelisierbardurchBaumstruktur(BildsieheWebbzw.bung) berechnetimmerimvorausdiebertrge Aufwandsteigtstarkmitnan,daherhufigPartitionierungin4BitBlcken
(gn-1,pn-1) (g0,p0)

c0=c0 c1=g0(p0c0) c2=g1(p1g0)(p1p0c0) c3=g2(p2g1)(p2p1g0)(p2p1p0c0) g3=g2(p3g2)(p3p2g1)(p3p2p1g0) p3=p3p2p1p0 wirdimmerkomplexer/

Carry Looahead Block (CLB)

C'0

1 log 2 (n) Ebenen 2 Leistung: A = 14n, T = 4 log 2 ( n)


HierarchischeAnordnungvon

(g'n-1 p'n-1)
Blockgenerate and propagate

Cn-1

C0

Implementierungsvarianten(Beispiele):BrentKungCLA,HanCarlsonCLA 29

2.2.6 AsynchroneAddierer
AuchalsCarryCompletionAdderbezeichnet Erkennt den Abschluss der CarryWeiterschaltung und generiert dann ein CarryCompletionSignal, dassdieGltigkeitderSummenbitsanzeigt Es kann gezeigt werden, dass die mittlere Carrylaufstrecke in einem nBit Addierer ca. log2(n) Stufen (Bits)betrgt.DielngsteStreckeistjedochnBits

+Vorteil:
einfacherRCAverwendbar,mittlereLaufzeitO(log2(n)) eventuellfrkaskadierteOperationenaufniedrigerChipflchegeeignet(z.B.kryptologischeHardware inChipkarten) Nachteil: nicht fr synchrone Schaltungen, sondern fr selbstgetaktete, asynchrone Schaltungen (selftimed systems) ExtraHWfrccSignal A = 8n, Tmittel = 2 log 2 (n) Preisfrage:WiesiehtderWorstCasebzgl.Taus?

2.3 bertragsfreieredundanteAddierer
gemeinsamesMerkmal:vonWortbreiteunabhngigeAddiererlaufzeit

2.3.1 CarrySaveAdder(CSA)
Addiert3nBitOperandenohneCarryweiterschaltung(Carryswerdenabgespeichert,`saved`) mit: 2 cin + si = a0,i + a1,i + a2,i (miti=0...(n1))

(C , S ) = C + S = A0 + A1 + A2
A0
n

A1
n

A2
n

EingangsoperandenknnendreiZKZahlenodereineCSundeineZKZahlsein InjedemFallwerden3Eingangsvektorenzu2Ausgangsvektorenzusammengefasst o =(3,2)Kompressor/Addierer konstanteLaufzeitistkeineFunktionvonn A = 7 n,

T = 4

CSA

RealisierungausnVolladdierern,(vgl.1.2.4.2)
a0,n-1 a1,n-1 a2,n-1 a0,1 a1,1 a2,1 a0,0 a1,0 a2,0

VA

VA

VA

cn

sn-1

c2

s1

c1

s0

30

2.3.2 VorzeichenbehafteterAddierer(RBA)
AddiertZahleninSDZahlensystem BetrachteimFolgendennurdieBasisr=2 redundantbinrerSDAddierer,kurz:redundantbinreAdd.(RBA)

AundBsindzweinBitSDZahlenmitai,bi{1,0,1} S=A+B

a n-1 b n-1

a2

b2

a1

b1

a0

b0

z n-1

d n-1

z2

d2

z1

d1

z0

s n-1

s2

s1

s0

RBA fr eine Stelle

(1) (2)

2di+1+zi=ai+bi si=zi+di

:di+1...Zwischencarry :zi...Zwischensummedi+1,zi{1,0,1}

Gleichung(1)erinnertanCarrySaveVorschrift. diundziknnenunterBercksichtigungvon(1)und(2)weitestgehendfreigewhltwerden. Bei der Berechnung von (2) entsteht kein weiterer bertrag, wenn die folgende Tabelle (Takagi,1987) beachtetwird: bi ai1 bi1 di+1 zi ai 1 1 X X 1 0 X=dontcare 1 0 1 1 beide0 a1=0 0 1 sonst 0 1 b1=0 ai+bi=0 X X 0 0 0 1 0 1 beide0 1 0 sonst 1 1 1 1 X X 1 0 FolgerungausTabelleundDiagramm: EinebeliebigeStelleibeeinflussthchstensdiebernchsteStellei+2 DieLaufzeitdieserRBAbetrgtinderGrenordnung2VALaufzeiten Beispiel: 01111 ai 00001 bi di+1 011110 zi 01110 si 10000 31

VergleichRBACSA Eigenschaften UmwandlungausZK

UmwandlunginZK

Funktionalitt Aufwandund Geschwindigkeit

CarrySave RBA direkt,keinHW undZeitaufwand CPAerforderlich(RCA,CLA,CSEL...) AdditionvonCarry undSummenvektor AufsplittungderSDZahlin positiven(0und1)undnegativen (1und0)Teil,Subtraktiondesneg. Vompos.Teil CSZelle=VA=3zu2Zelle,addiertZKzuCSZahl, RBZelle,4zu2Zelle, 2kaskadierteCSZellenergeben4zu2Zelleund addiertdirekt2RBZellen sindfrAdditionenvon2CSZahlenerforderlich frgleicheFunktionalitt 22Transistorenfr(3:2)Zelleinallen Ca.42Transistorenfr(4:2)Zelle, Bibliotheken bibliotheksabhngig

2.3.2.1 berlaufbeiredundantbinrenAddierern
(NachtragzuAbschnitt1.4.3) WiebeiCarrySavetretenEchterberlaufundPseudoberlaufauf. BeispielfrPseudoberlauf: 111 (entspricht1) ai 111 (richtigwredasErgebnis2) bi di+1 111 zi 0000 si 110 (entspricht6!!!) Entscheidend fr das berlaufverhalten sind die MSDSummenstelle sn1 und der abzuschneidende Zwischenbertragdn. (Zwischenbertrag) dn dn1dn2d1 sn1 sn1s1s0 (Summe) EineAnalysedermglicheFlleergibtfolgendeTabelleundeineKorrekturvorschriftfrsn1, welchesn1ergibt: berlauftyp sn1 dn sn1 1 1 Pseudoberlauf 1 1 0 potentieller,s.u. 1 1 echterberlauf,s.u. Ggf.Sttigung 1 1 echterberlauf,s.u. 1 0 potentieller,s.u. 1 1 Pseudoberlauf 1 0 X Keinberlauf sn1 Die Pseudoberlaufkorrektur kann in die MSBStelle des RBA ohne Geschwindigkeitsverlust integriert werden. DerechteberlaufmussdurchModifikationaufSystembzw.Algorithmusebeneverhindertwerden. Der potentielle berlauf wrde zur Unterscheidung vom echten berlauf die Inspektion aller niederwertigenDigitserfordern. Durch die Beschrnkung des mglichen Wertebereichs auf Werte mit (Betrag < 2n1) kann auch der potentielleberlaufvermiedenwerden.

32

2.4 MehroperandenAddierer
Addierendreiodermehr(m>2)nBitOperanden n + log 2 (m) BitErgebnisinnichtredundanterForm

2.4.1 MehroperandenAdditionmitAddiererArrays
EsgibtprinzipiellzweiOptionen: a) lineareAnordnungvonCPAs(hierimBeispiel4OperandenRCA)
a0, n-1 a1, n-1 a0, 2 a1, 2 a0, 1 a1, 1 a0, 0 a1, 0 (m-1)-CPAs
VA VA VA HA

CPA 1

a2, n-1

a2, 2

a2, 1

a2, 0

VA

VA

VA

HA

CPA 2

a3, n-1

a3, 2

a3, 1

a3, 0

VA

VA

VA

VA

HA

CPA 3

sn

s n-1

s2

s1

s0

kritischer Pfad

b) lineareAnordnungvonCSAsmitabschlieendenCPA(hiereinRCAdafrgenutzt)
a0, n-1 a1, n-1 a2, n-1 a0, 2 a1, 2 a2, 2 a0, 1 a1, 1 a2, 1 a0, 0 a1, 0 a2, 0

VA

VA

VA

VA

CSA 1

a3, n-1

a3, 2

a3, 1

a3, 0

VA

VA

VA

HA

CSA 2

VA

VA

VA

HA

CPA (= RCA)

Bewertung: a)undb)sindgleichschnell(liegtanRCAAdder) Aber: FreinensehrschnellenCPA(z.B.CSM)mussderCPAbeiVariantea)aufdasEintreffenderOperandenwarten (LaufzeitbisSignaleamEingangderCPAanliegen=O(n)),whrendbeib)dieLaufzeitkonstantist,hier:2Tsum. Variantea)mitsehrschnellenCPAwrevielzuaufwendig,(nutzlos?>FPGA!). 33

sn

s n-1

s2

s1

s0

kritischer Pfad

allg.DarstellungderVarianteb):
A0 A1 A2 A 3 A n-1

A = (m 2) ACSA + ACPA T = (m 2) TCSA + TCPA

FreinenlogarithmischenCPAgiltalso:

T = O(m + log 2 (n) )


A = O(m n + n log 2 (n) )

2.4.2 (m:2)Kompressoren
Eine Spalte der Variante b) ohne den abschlieenden CPA komprimiert immer m Eingangsbits auf 2 Ausgangsbitsundleitetdabei(m3)ZwischencarrysandienchstehherwertigeSpalteweiter (m:2)Kompressor KeinehorizontaleCarryweiterleitung Sie lassen sich aus Volladdierern (=(3:2)Kompressor) bzw. (4:2)Addierern in lineares Array oder Baumstrukturzusammensetzen Beispiel:obiger4OperandenAddiereraus(4:2)Addierern

A = 7 ( m 2)
Allgemeingilt: Tlinear = 4 ( m 2)

TBaum = 6 (log 2 (m) 1)

34

Realisierungder(4:2)Addierer Allgemeinaus2Volladdierernaufgebaut.

DetailliertereAnsichtmitOptimierungderXORGatter(rechts).

Vorteilevon(4:2)AddierernstattVolladdierernin(m:2)Kompressoren 4:2statt3:2,Wenigertief RegulresLayoutsieheAbbildungimWeb(8:2)Kompressor

2.4.3 MehroperandenAddierermitAddiererBumen
BestehenausnBitmOperandenredundantenAddiererninbaumfrmigerStruktur DieredundantenAddierersetzensichausnBit(m:2)Kompressorenzusammen SchnellsteMehroperandenAddierer: o Addiererbaum o LogarithmischerCPA o

T = T( m:2 ) + TCPA = O(log 2 (m) + log 2 (n) )

A = A( m:2) n + ACPA = O(m n + n log 2 (m) )

WallaceBaum=redundanterAddierer=CarrySave(3:2) Beispiel:WallaceBaum(links)Baumaus(4:2)Kompressoren (ohneBercksichtigungderWertigkeitderEingnge)

AddiererbumesindschnelleralsAddiererarraysundbezglichderGatterzahlidentisch. BaumstrukturenbentigenjedochaufwendigereVerdrahtungeffektivgrer 35

2.5 SequentielleAddierer 2.5.1 LSBfirstserielleAddierer


Addiert2nBitZahlenbitweisebeginnendbeimLSB ZeitlicheStreckungeinesRCAdurchEinfgeneinesRegisterElementes(Flipflop,FF) +kleineHardware,serielleKommunikation,kaskadierbar(LSBInLSBOut) Latenzzeit=nTaktzyklen ai bi A= A + A
VA FF

TZyklus = TVA + TFF TGesamt = n TZyklus


FF
CLK

cout

VA
si

cin

2.5.2 MSDfirstserielleAddiererDigitOnlineArithmetik
AddiertzweinDigitZahlendigitweisebeginnendamMSD Ableitbarausparallelen(4:2)AddiererninCSTechnik(bzw.analogSD)

frsimssen(nur)ai,bi,ai1,bi1,ai2,bi2anliegen! DieseTechnikwirdallgemeinauchalsDigitOnlineVerfahrenbezeichnet DieDigitOnlineAdditionimBeispielhateinOnlineDelay(Delta)von = 2 VergleichmitLSBfirstseriellemAddierer o MehrHardware o AnschlieendeUmwandlunginZKFormatntig o MehrVerdrahtung(2LeitungenproDigitdaCS/SDDarstellung) o Langsamer( = 2 )

SinnderDigitOnlineTechnik Addition,Subtraktion,MultiplikationsindnatrlicheLSBfirstIn/OutVerfahren DieDivisionundkompliziertereFunktionensindaberMSBfirstIn/OutVerfahren(vergleichemit schriftlicherDivision) ManmssteallenOperandendigitsinsVerfahreneingeben,bevordasMSBdes Ergebnissesausgegebenwird(LSBfirstin,wartenZyklenbzw.Ziffern,MSBfirstout) DigitOnlineistgnstigerfrgemischte/verketteteOperationen(ADD,DIV,log,,SUB): o o o MSDfirstinwarte

ZyklenMSDfirstout

GeringeGesamtlaufzeit(Latenz)mglichdurchzeitlichesberlappenvonEingangsund Ausgangsvektoren AberDurchsatzpotentiellgeringeralsbeiparallelenOperationen 36

2.5.3 Akkumulatoren
MitCPA(LaufzeitvonmTaktzyklen)
a 3 a0

AddiertmnBitOperandenbitparallel

CPA
S

A = ACPA + AFF
FF FF FF FF

Takt

T = TCPA + TFF L = m T

MitCSAundabschlieendemCPA(sehrvielschnelleralsersteVariante,derCPAkanngepipelinetwerden!)
a3 a0

s 3 s0

CSA
Summen- und Carryvektor

FF

FF

FF

FF

Takt

A = ACSA + ACPA + AFFs T = TCSA + TFF L = m T

s3 s0
FF FF FF

c3 c0
FF

CPA
S

2.6 EinfacheaufAdd/SubbasierendeOperationen
Nurzurbersicht: o Inkrement/Dekrement o Zhler(rckgekoppelteInkrementer) o Komparatoren(=,,,etc.) (LaufzeitinZKundredundanterDarstellungimmer log 2 (n) ) o ErkennungderAnzahlfhrenderNullen (LaufzeitauchhierinZKundredundanterDarstellungimmer log 2 (n) ) o o FlagBitBestimmunginPs

37

3 Multiplikation
3.1 Grundlagen
wiebeischriftlicherMultiplikation multiplizieren von 2 nBit Operanden A und B ergibt ein (2n)Bit vorzeichenloses bzw. (2n1)Bit ZK Produkt

3.1.1 VorzeichenloseMultiplikation

P = A B = ai 2 i b j 2 j = ai b j 2 i + j
i =0 j =0 i =0 j =0

n 1

n 1

n 1 n 1

mit pi = ai B : P =

p 2 (vgl.1.6.2.2:rekursive,assoziativeFunktionmit1Ausgang)
i i =0 i

n 1

Multiplikationsalgorithmus 1)GenerierenPartialproduktePi(mitUNDFunktion) 2)SummierenPartialprodukte a)rekursiv(shiftandadd)mitAkkumulator(L=LaufzeiteinerIteration)


B n

1
ai i = 0, ..., n -1

*
Linksshift um i CLK

T = O(log 2 (n) ) L =n

A = O(n )

CPA 2n

b)seriell(shiftandadd)mitlinearemArrayvonCSAs,allepiwerdengleichzeitigerzeugt
B

a0 a1
A CSA CSA CSA CSA 2n CPA 2n Bit breit

a2 a3

2n Ltg. (C+S)

A = O n2

( )

T = O ( n) + log 2 (n) fr CPA

38

c)parallelmitMultiOperandenAddiererinBaumstruktur
B

* * *

*
A = O n2

CSA - Baum 4n CPA 2n

T = O(log 2 (n) )

( )

3.1.2 ZKMultiplikation
KomplementierbareOperandenvorundErgebnisnachMultiplikation VorzeichenlosesMultiplikationsverfahrenverwenden direkteImplementierungmitspeziellenZKMultiplikationen

3.2 Vorzeichenloser'Baum'ArrayMultiplizierer
(fr4BitOperanden) a3b3 p7 p6
a0

a2 b3 a3 b2 p5

a1b3 a2b2 a3b1 p4

a0 b3 a1 b2 a2 b2 a3 b0 p3

a0 b2 a1 b1 a2 b0 p2

a0 b1 a1 b0

a0 b0

p1

p0

b3

b2

b1

b0

p0 a1 1 HA HA HA p1 a2 FA FA FA p2 a3 2 CSA CPA 3 p7 FA p6 FA p5 FA p4 FA FA FA p3

39

bi ai

bi

ai

pi (LSBS) pi (MSBS)

pi

A = 8 n 2 11 n
3.3 VorzeichenbehafteterPezarisArrayMultiplizierer
(=modifizierterBraunMultiplizierer,4BitOperanden) MSB=VZstelle=negativeWertigkeit a0 b3 a0 b2 a0 b1 a1b3 a1 b2 a1 b1 a1 b0 a2 b3 a2b2 a2 b2 a2 b0 a3b3 a3 b2 a3b1 a3 b0 p7 p6 p5 p4 p3 p2 p1 Unterscheide4FllefrBitsimPartialprodukt a)3positiveOperandenStandardVolladdierer a + b + cIN b)2pos.,1neg.Operanden:1Summe2 SummeBitGewicht:1 CarryOutGewicht:+2 a + b + cIN = 2 cout s c)1pos.,2neg.Operanden:2Summe1 SummeBitGewicht:+1 CarryOutGewicht:2 a b cIN = 2 cout + s

T = 6n 9

a0 b0

p0

d)3negativeOperanden,logischidentischzua) gleicheImplementierung,Volladdierer DieFlleb)undc)habendiegleicheImplementierung s = a b c IN WienormalerVA cout = (a b) (a c IN ) (b c IN ) modifizierterVA ErsetzeVAinRegionen1,2und3durchdenmodifiziertenVAmitEinganga= ErgibtbisaufverndertenVAgleicheStrukturwievorzeichenloserBraunMultiplizierer.

3.4 BoothMultiplizierer
Beobachtung:Multiplikationszeit=f(Anzahld.PartialproduktePi)=f(n) FrjedeNullimMultiplikatoraikannimArrayeineZeileweggelassenwerden! KodiereMultiplikatorsoum,dassdieAnzahlNullenmaximiertwird(vgl.mitAbschnitt1.2.4)
'

z.B.: ai {0,1} ai { 1,0,1}

40

2Mglichkeiten: aikonstant: CSDRecording MultiplikationimMittelnoch1/3sogro aivariabel: ModifiziertesBoothRecoding Multipliziererhalbiert BoothMultiplizierer

bi
Booth Recording

ai

*
n/2 Partialprodukte

Parallele Berechnung

CSA - Array

A = 4 n2 T = 3 n

CPA

Anmerkung:EinehorizontaleKompressionderDatenwirddurchdensogenanntenDaddaMultiplizierer erreicht(Booth=vertikaleKompression).

3.5 BoothWallaceMultiplizierer
Entstehtaus3.4durchErsetzungdesCSAArraysdurcheinenWallaceBaum(vgl.2.4.3)

A = 5...6 n 2 (durchirregulreVerdrahtung) T = O(log 2 (n) )

3.6 BewertungderverschiedenenMultiplizierer
Rekursiv seriellesArray(Braun) Booth BoothWallace Geschwindigkeit 0 + 0 + + + ++ Flche ++ 0 0 Regularitt (daSteuerungntig) ++ + Pipelinebar ++ + +

41

4 Division
4.1 Definition

A R = Q + A = Q B + R (mit R < B und R = A mod B ) B B


FrdiebinreDivisioninHardwaregilt:
!

A [ 0,2 2 n 1] , B , Q, R [ 0,2 n 1] , B 0

Q < 2 n A < 2 n B ,ansonstenberlauf


DaherBvorabnormalisieren B 2

n 1

,2 n 1]

4.2 Grundlagen
BinreDivisionkannwiedieschriftlicheDivisionvorgenommenwerden,also a)VergleichezumMSBverschobenenDivisormitDividend. b)SubtrahierediebeidenAusdrckegegebenenfalls. DasErgebnisistderPartialrest. c)Setzebeia)fortmitPartialrestfrDividend. subtractandshiftAlgorithmus(Multiplikation=shiftandadd) sequentiell,nichtparallelisierbar,danichtassoziativ DezimalesBeispiel: AB qi 0,75:0,875 750:875=0,857 7000 Ri 5000 4375 6250 6125 125 Grundalgorithmus(entsprechendobigertextuellerBeschreibung): a)b)

qi = ( Ri +1 2 i B) Ri = Ri +1 q:2 i B

Rn = A (Initialisierung) R = R0 (RestnachIteration)
i = n 1,....,0 c)
Divisionsverfahren unterscheiden sich nun in der Bestimmung der qi und ob redundante Addierer verwendet werdenknnen.

42

4.3 RestoringDivision(wiederherstellendeDivision)

1 qi = 0
z.B.:

wenn Ri +1 B 2 i 0 wenn Ri +1 B 2 i < 0


i !

qi {0,1}

Indexi: Ri +1 B 2 < 0 qi = 0,

Ri = Ri +1

=Restoring=entsprichtWiederherstellungdesaltenPartialrests Indexi1: Ri +1 B 2 Verbal:


i 1

! 0 qi 1 = 1 , Ri 1 = Ri +1 B 2 i 1

Ist der Partialrest zu klein fr den Divisor, wird das Ergebnis der Iteration Ri +1 B 2

) verworfen und 'die

nchsteNullheruntergeholt'(identischzumVerschiebendesDivisorsumeineStellewenigerzumMSB). Ri = Ri +1 B 2 (altenWertseparatspeichern)
i

'Verwerfen Ri = Ri + B 2 auf2Arten mglich Ri = Ri +1 B 2 i (Restoringdurchzustzl.MuxundRegister)


i

Ri = Ri +1

Subtrahiereimmerundrestaurieregegebenenfalls!

4.4 NonRestoringDivision(nichtwiederherstellendeDivision)

wenn Ri +1 0 1 qi' = 1 bzw. 1 wenn Ri +1 < 0


z.B.: Indexi: Indexi1:

qi' = 1,1

{ }

Ri +1 0 qi = 1,
' !

Ri = Ri +1 B 2 i

Ri +1 B 2 i < 0 qi' 1 = 1, Ri 1 = Ri +1 B 2 i + B 2 i 1 = Ri +1 B 2 i 1
' '

qi qi 1 = 01 = qi qi 1 = 11 Beachte: Werte Vorzeichen aus, subtrahiere oder addiere, korrigiere gegebenenfalls in den nchsten Schritten durch Addition,bisderPartialrestwiederpositivwird. Die identischen Ausdrcke fr Ri1 in 4.3 und 4.4 sowie die algebraisch identischen qi und qi' zeigen die quivalenzvonNonRestoringundRestoringDivision. UmwandlungvonQ=qn1'...q0'inZKZahl
' 0 wenn qi = 1 q { 1,1} qi {0,1} qi = Beachte:qinichtredundant ' wenn q 1 = 1 i

' i

Q = (q n 1 , q n 2 , q n 3 ,..., q 0 ,1)

43

RealisierungderNonRestoringDivisioninHardware
A B

CPA CPA CPA CPA R

Korrekturstufe fr R

Wichtig: ZureinfachenBestimmungdesVorzeichensisteinenichtredundanteAdditionzwingendntig! FrdieBerechnungdesletztenRestesRi=RisteinzustzlicherKorrekturschrittntig.

A = ( n + 1) ACPA = 0( n 2 )........0(n 2 log 2 ( n) )

CPA=RCACPA=CLA

T = ( n + 1) TCPA = 0 n .........0 n log 2 ( n) ErweiterungaufZweierkomplementDivision(ZKDivision,vorzeichenbehaftet):

( 2)

1 wenn Ri +1 , B gleiches Vorzeichen qi' = 1 wenn R , B ungleiches Vorzeichen i +1


Beispiel:ZKArrayDividierer(frB>0,keineKorrekturfrR)

VersetztesArray/FeldausCASZellen(ControlledAdder/Subtractor) DieXORGatterindenCASZellenrealisierendieAuswertungderVorzeichen DiePartialresteRigehengegenNull,dassheit,eswirdrealisiert

Ri = Ri +1 2 qi 2 n 1 B
a2,a1,a0werdennacheinanderheruntergeholt

44

4.5 SRTDivision
nachSweeney,Robertson,Tocher,um1958 Sindentstanden,umredundanteAddiererbenutzenzuknnen. Problem: WieerkenneichbeieinerredundantenZahldasVorzeichen,ohnealleStellen derZahlzuuntersuchen(=ZeitaufwandeinernichtredundantenAddition)? Beispiel: Lsung:

00011 X X keineVZBestimmungausMSDDigitsmglich,ebensobeiCarrySaveDarstellung UntersucheeinigefhrendeStellendesPartialrests WenndieseNullsind,istdieZahlsoklein,dassqi=0gewhltwerdenkann,ohnedass dieIterationdivergiert,ansonstenhnlichzurNonRestoringDivision

B 2 i Ri +1 1 qi' = 0 wenn B 2 i Ri +1 < B 2 i 1 Ri +1 < B 2 i


miteinergeeignetenNormierungvonB,d.h. 2
n 1

B < 2 n ,gilt:

B 2 i 2 n + i 1 Ri +1 < 2 n + i 1 B 2 i
Darausergibtsich:

2 n + i 1 Ri +1 1 qi' = 0 wenn 2 n + i 1 Ri +1 < 2 n + i 1 1 Ri +1 < 2 n + i 1


Ohne Beweis: nur 3 MSDs (drei fhrende Digits) von Ri gengen zu Auswahl, und trotzdem ist die Konvergenzgesichert! verwendeeinenCSAstattCPA ' qi { 1,0,1} Qi muss abschlieend durch SDZKUmwandlung mittels CPA aus den qi' gewonnen werden. SRTRealisierung:
A B

q i'
Q C P A

> >

+/ - RA + RA + - RA > > + CPA

A =n ARA +2 ACPA = O n2 T =n TRA +TCPA

( )

Umwandlung

= O (n + log 2 ( n ) )

nuretwaslangsameralsz.B.ArrayMultiplizierer StateoftheArtDividierer

45

4.6 MultiplikativeDivision[Anderson,1960]
bisher: Grundoperation=Add/Sub nMalausfhren lineareKonvergenz(proIteration1BitGenauigkeitsgewinndesErgebnisses) jetzt: Grundoperation=Multiplikation quadratischeKonvergenz(Anzahlder'genauen'BitsverdoppeltsichinjederIteration) log2(n)Malausfhren AlgorithmusSkizze:

Q=

A A R0 R1 .... Rm1 = B B R0 R1 .... Rm1

WhleRiso,dass B R0 .... Rm1 1geht

Q = A Ri A = O n2

T = O log 2 (n)
2

( )

DividiererBewertungundRealisierung SequentielleDividierer(NR,R,SRT): o nur1Add/SubEinheit o GeringeFlcheundDurchsatz ArrayDividierer(NR,R,SRT): o nAdd/SubEinheitengroeFlche,aberregulr o groerDatendurchsatz MultiplikativeDividierer: o WiederverwendungdesohnehinvorhandenenMultiplizierers o Frgroensehrschnell

46

5 BerechnungelementarerFunktionen
ElementareFunktionensindzumBeispiel: Wurzelziehen(Radizieren, Logarithmus( log ) Exponentialfunktion( e ) PotenzierenmitBasisungleich2( x ) TrigonometrischeFunktionen( sin, cos, tan, cosh )
y

5.1 KlassifikationderMethoden
ROM: A = O (n 2 ), T = O (?) (langsam) nurfrFunktionenmit1Operandenundn<14Bitgeeignet nichtpipelinebar Polynom: TaylorReihe TschebychewReihe,konvergiertbesser,wenigerTerme
n

A = O(n ) mult.rekursivnutzen, T = O(?) nichtrealistischpipelinebar frSWsehrgutgeeignet,ebensofrgroen AlternativeZahlensysteme: LogarithmischeSysteme Residuensysteme Problem:InundUmwandlunginundausdiesenSystemen Iteration: NeutonRaphson(siehemultiplikativeDivision) DigitbyDigitVerfahren o SchriftlicheDivision o CORDICVerfahren
2

47

5.2 CORDIC
CORDIC=CoordinateRotationDigitalComputer (vonVolderundWalther1956/1958)

5.2.1 DrehungeinesVektors
Gegeben: x0 , y0 , Gesucht: x, y + 90 NutzungderEulerschenDrehmatrix:

x, y x0, y0

- x, y

x = x0 cos + y0 sin y = x0 sin + y0 cos

(frnegativebzw.rechtsDrehung):

x = x0 cos y0 sin y = x0 sin + y0 cos


Umformung:

(frpositivebzw.linksDrehung):

x = cos ( x0 + y0 tan ) = K ( x0 + y0 tan )

y = cos ( x0 tan + y0 ) = K ( x0 tan + y0 )

x = cos ( x0 y0 tan ) = K ( x0 y0 tan )

y = cos ( x0 tan + y0 ) = K ( x0 tan + y0 )

mit K =

1 1 + tan 2

Elementardrehwinkel(beachteZweierpotenz):

i = atan 2 i

( )

tan ( i ) = 2 i

Iterationsgleichung(en):

x1,y1 .

90

xi +1 = K i xi + 2 i yi yi +1 = K i

( (y

) x )
i

xn,yn

x2,y2

xi +1 = K i xi 2 i yi yi +1 = K i

i

( (y

+2

) x )
i

+
30 90

. x ,y 0 0
90

48

5.2.2 ZerlegungdesDrehwinkelsinElementardrehwinkel
i 0 1 2 3 4
n 1 i =0

i = atan 2 i
45,0 26,5 14,03 7,1 3,5

( )

= i i mit i alsjeweiligeDrehrichtung i {+ 1,1}


Bestimmungder i berfortlaufendeSubtraktion/Addition(Pseudodivision):

ZumBeispiel: Iterationi 0 1 2 3 Winkel Vorzeichen positiv positiv positiv negativ

i 0 = +1 1 = +1 2 = +1 3 = 1

0 = = 77
1 = 77 45 = 32 2 = 32 26,5 = 5,5 3 = 5,5 14,03 = 8,53

= 77 = 45 + 26,5 + 14,03 7,1......


Berechnungsvorschrift:

z 0 = , zi +1 = z i i atan 2 i

( )
DasIterationszielist z i 0 !

i =

+ 1 fr z i 0 1 fr z i < 0

Waspassiertmit K ?

K =
i

1 1 + tan i
2

=
i

1 1 + 2 ( 2i )

Nach n IterationenohneBercksichtigungder K i hatsichderVektorum K verlngert.DieskannzumSchluss derIterationdurchMultiplikationumdenvorherbekannten(=konstanten)Faktor

1 kompensiertwerden K 1 1 1 xn , y = y n (undistdurchCSDKodierungvon sehreffizientzurealisieren): x = K K K


49

5.2.3 Rotation&Vectoring

xi +1 = xi i 2 i yi yi +1 = yi + i 2 i xi zi +1 = z i i atan 2 i

( )

RotationsmodusRotation z 0 = ,Iterationszielist z i 0 !

RotationsmodusVectoring z 0 = 0 ,Iterationszielist yi 0 !
2

i =

+ 1 fr yi < 0 1 fr yi 0

y0 atan x 0

50

5.2.4 VerallgemeinerungaufandereOperationen

xi +1 = xi m i 2 i yi yi +1 = yi + i 2 xi
i

zi +1 = z i i m ,i

1 trigonometrisch (zirkular) mit m = 0 linear 1 hyperbolisch


2 i

Ri +1 =

( 1 + m
1 m

2 ( 2i ) Ri

1,i =

1 m
i

atan m 2 i

m ,i =

atan m 2 i

0,i = 2

1,i = atanh (2 i )

5.2.5 bersichtderCORDICFunktionen
Modus m Rotation( z i 0 ) Vectoring( yi 0 )

x0
zirkular, m = 1

x0 cos z0 y0 sin z0

x0 y0
z0

2 2 x0 + y0

y0 z0 x0

y0 cos z0 + x0 sin z0
0

y0 z0 + atan x 0
x0
0

x0

x0
y0

m=0

linear,

y0 z0 x0

y0 + x0 z0
0

z0 x0

z0 +

y0 x0

x0 cosh z0 y0 sinh z0 y0 cosh z0 + x0 sinh z0


0

2 2 x0 + y0

hyperb.,

m = 1

y0 z0

y0
z0

y0 z0 + atanh x 0

51

5.2.6 Architekturen 5.2.6.1 Rekursiv


GeringeChipflche,bessereKontrolle geringeDurchsatzrate,danichtpipelinebar variableShifter=Barrelshifter,sehrgro

x0

y0

z0

xi +1

yi +1

zi +1

5.2.6.2 Pipeline +BarrelshifterdurchfesteVerdrahtungersetzbar +ROMfesteVerdrahtung o (3:1)Muxfrdiedreimglichen m +nfacheDurchsatzrate


nfacheFlche

5.2.6.3 Array +NiedrigeLatenz GeringerDurchsatz


52

5.2.7 CORDICinredundanterZahlendarstellung
Motivation:VermeidungderCarryLaufzeitbeiderAddition(=Grundoperation) Vorsicht: K = BestimmungderDrehrichtung i ausdenVorzeichenvon z i und y i . 1.Problem:BestimmungdesVorzeichenseinerredundantenZahl Ansatz:AngenherteBestimmungvon i durchInspektionvon GleicheIdeewiebeiSRTDivision *von z i bzw. y i i { 1, 0,1}

1 1 + m i2 2 ( 2i )

warbisher1, m { 1,0,1}

p signifikantenDigits( p << n )*

2.Problem:Skalierungsfaktorfr i = 0 variabel VerschiedeneLsungen: KonstanterSkalierungsfaktor o Entscheidung fr eine Drehrichtung bei i = 0 i z.B. dann +1 kleiner Fehler nach einerfestgelegtenIterationszahleineIterationswiederholungntig,z.B.fr Iterationwiederholen(?) Garantie,dassdasVerfahrenauchkonvergiert zurzeitStandardverfahren StattDrehungum i immerzweiDrehungenumca. o d.h.,

p = 3 jedefnfte

i
2

(entspricht atan 2

( i +1)

) )

i = 1 2 atan (2 (i +1) ) i = 0

+ atan 2 (i +1) / atan 2 ( i +1)

Skalierungsfaktorkonstant,Doppelrotationsmethode=doppelteFlche variablerSkalierungsfaktorMultiplizierererforderlich

53

6 AnwendungenundBeispiele
6.1 DigitaleFilter
2Varianten: FIRFiniteImpulseResponse IIRInfiniteImpulseResponse FIRFilterallgemein:

y n = ai x n i
i

HierFIRFilter2terOrdnung: y 2 = a 2 x0 + a1 x1 + a0 x2

a2

a1

a0
z 1
y

z 1
Koeffizientenfest,z.B.

a1 = 0.36328125 = 0.01011101 = 0.01100101 = 0.10100101


x a2
2 1
(mittels CSD-Recoding)

2 3

2 6

2 8

a0
z 1
y

z 1

WeitereVerbesserungendurchZusammenfassungvonUnterausdrcken(TermSharing)

0.10100101 = 2 1 2 3 2 6 + 2 8 = 2 1 2 3 1 2 5
x
a2

)(

2 1 z 1

2 3

2 5 z 1

a0 y

Multiplikative Zerlegung von ai Dadurch weitere Ersparnisse um bis 50% mglich

54