• No results found

Definition av on-line algoritmer

B.4 On-line

B.4.3 Definition av on-line algoritmer

De flesta on-line algoritmer kan specificeras med ett antal egenskaper. I denna sektion illustreras dessa i form av ett antal ekvationer.

• Operanderna X och Y samt resultatet Z i on-line format vid tidpunkten i:

(B.10)

där och .

• Residual funktionen G:

Denna funktion krävs för att beräkna ett internt tillstånd W[k], som beror av den tidi- gare residuen W[k-1], resultatet Z[k-1] och operanderna X[k] och Y[k].

(B.11) • Val funktionen S:

Denna funktion väljer resultat siffran zk.

(B.12) X k[ ] xi r i – X k[ –1] xk+δ r k+δ ( ) – ⋅ + = ⋅ i=1 k+δ

= Y k[ ] yi⋅r–i=Y k[ –1]+yk+δ⋅r–(k+δ) i=1 k+δ

= Z k[ ] zi⋅r–i= Z k[ –1]+zk⋅r–k i=0 k

= Z k[ ] = F X k( [ ],Y k[ ]) ε+ k⋅r–k εk <1 W k[ ] = G W k( [ –1],Z k[ –1],X k[ ],Y k[ ]) zk = S W k( [ –1],Z k[ –1],X k[ ],Y k[ ])

Appendix C

Diskussion/val av

algoritm

Valet att utföra en VHDL-implementationen av Differential CORDIC-algoritmen har inte varit rättfram. Jag har innan implementationen av DCORDIC-algoritmen utfört Matlab- implementering och simulering samt verifiering av PCORDIC-algoritmen. Emellertid uppstod problem under utvecklingsarbetet och efter diskussion med handledaren beslöt vi tillsammans att jag skulle byta CORDIC-metod.

Det första problemet uppstod under verifieringen av PCORDIC-algoritmen. Korre- lationen som Kuhlmann erhållit mellan mikrorotationsriktningarna och rotationsvinkeln i bakåtrotationsmoden gick ej att verifiera. I P-CORDIC-algoritmen är inputoperanderna begränsade till att vara positiva. Den första mikrorotationen kommer då alltid att vara positiv ty y > 0. Detta innebär att mikrorotationsriktningen är medsols och således kan ej negativa värden uppkomma i korrelationen. Kuhlmann har negativa värden i sin korre- lation, se figur C.1 till vänster. Korrelationen som jag evaluerade fram mellan rotations- vinkeln och rotationsriktningarna illustreras till höger i figur C.1. Korrelationen i hela det illustrerade området i figur C.1 gick således ej att verifiera. Emellertid är korrelationen för x ≥ 1 identisk i de båda bilderna och om vi ignorerar att korrelationerna ej stämmer med varandra för x < 1 kan PCORDIC-algoritmen verifieras och simuleras.

Figur C.1 Vänstra figuren är Kuhlmanns korrelation [84] och den högra figuren illustrerar korrelationen som jag evaluerade fram.

Att valet först föll på att implementera PCORDIC-algoritmen istället för någon av de andra algoritmerna, som presenterades i kapitel 5, berodde på att den var snabbast av alla och att jag prioriterade framtida utvecklingsmöjligheter/förbättringar av CORDIC- algoritmen i bakåtrotationsmoden. Jämfört med framåtrotationsmoden, som har mycket fler implementationsvarianter, så existerar det endast en algoritm som evaluerar fram rotationsriktningar parallellt för bakåtrotationsmoden. Med förhoppningen att kunna förbättra CORDIC-algoritmen på algoritmnivå valdes PCORDIC-arkitekturen som utgångspunkt. Det går till exempel att applicera förbättringarna, som Kuhlmann har utvecklat för PCORDIC-algoritmen i framåtrotationsmoden [78], i en bakåtrotations P- CORIDIC. Resultatet av en sådan modifiering har ej ännu publicerats.

Efter att vi valt att byta algoritm för implementationen gick jag tillbaka till litteratursöket och valde en ny metod ur kapitel 5, och här gjordes ett fel. Under den tidigare diskus- sionen med handledaren beslöts det att den nya implementationen inte skulle vara baserad på on-line aritmetik utan att en parallell implementering skulle göras, och därför ströks alla on-line algoritmer som tänkbara implementeringar. På grund av oaktsamhet ströks 2- D Householder CORDIC [65], [66], [67] och Lang et.als [42] metod utan förbehåll då de blivit svartlistade som on-line algoritmer. Förklaringen till detta är att i rapporterna, som de båda algoritmerna föreslås i, presenteras endast on-line implementeringar av res- pektive algoritm och endast detta faktum framkom i en tidigare version av kapitel 5.

Nedan presenteras motivering som ligger till grund för valet att implementera DCORDIC algoritmen.

• Radix-4 algoritmerna [22] och [87] använder färre iterationer, men de är ej lämpliga att implementera i en utbredd pipelinad design ty rotationsriktningskretsen måste implementeras i varje steg, och denna är komplex. Dessutom om magnituden är av intresse är dessa metoder rent dåliga. Detta beror på att metoderna har variabel skal- faktor, vilket ökar komplexiteten och bättre metoder finns då att tillgå.

• Radix-512 [24] har väldigt få iterationer, men är väldigt oregelbunden och komplex i sin realisation, dessutom kräver algoritmen multiplikations- och ackumuleringsopera- tioner. Effektiviteten av en implementation är väldigt beroende av hårdvaruoptimering och konstruktörens erfarenhet och skicklighet.

• Eckhard et.als algoritm som enbart roterar inputvektorn åt ett håll är i sig attraktiv. Rapporten är dock mindre bra och någon algoritm/implementation för bakåtrotations- moden presenteras ej. Det enda som nämts är att förfarandet är möjligt att utföra. • Tsu Bing Juangs skalningsfria CORDIC för bakåtrotationsmoden [90] uteslöts för att

den kräver flera alternativa exekveringsvägar samt att algoritmen är av iterativ natur. • BAR-metoden [96] uteslöts då den kräver att en optimeringsalgoritm exekveras och

att rotationsriktningarna måste vara kända i förväg.

• Merged CORDIC-algoritmen [25] är endast för iterativ implementering. I en iterativ design kan rotationsriktnigsbestämningsfunktionen lyftas ut ur den kritiska vägen. I en parallell utbredd design är inte detta möjligt utan denna funktion kommer att hamna i den kritiska vägen på grund av att skiftoperationen utförs genom routing i dessa implementeringar. Denna metod är därför ej lämplig för utbredd parallell imple- mentation.

Kvar finns två stycken radix-2 CFR metoder att välja av: (i) Differential CORDIC [13] och (ii) Lang et.als bakåtrotationsmetod med korrektionsiterationer [4]. Att det endast är CFR metoder kvar är inte bra. Då magnituden ej är av intresse finns det inget behov av en konstant skalfaktor, se sektion 1.2. Således skulle en arkitekturer med variabel skalfaktor vara den bästa metoden då inga extra iterationer krävs. Emellertid om magnituden däremot krävs så är metoder med konstant skalfaktor bättre.

Lang et.als algoritm [4] använder sig av inspektion av ett par MSD för att bestämma tecknet på mikrorotationerna och extra iterationer måste utföras för att metoden ska konvergera och behålla konstant skalfaktor. Optimering måste utföras innan implementtaion för att ta reda på den optimala sekvensen av skalningsiterationer och konvergensrotationer. Differential CORDIC [13] är designad för en effektiv parallell pipelining. Tecknet på rotationsriktnigen beräknas emellertid med carry-ripple adderare vilket leder till att metoden har en initial latency på n full-adderare innan första CORDIC- iterationen kan ske. Emellertid erhåller DCORDIC-algoritmen en bättre latency än Lang et.als metod trots den initiala fördröjningen.

Enligt [13] så är areakostnaden för varje iteration ungefär lika för de båda metoderna. Langs metod [4] kräver 1.5N iterationer om 3 MSB inspekteras medans DCORDICen endast kräver N iterationer för samma noggrannhet. Langs metod [4] kräver alltså 50% fler rotationer än DCORDIC-algoritmen vilket innebär 50% större area. Emellertid så lider DCORDICen av stor latch konsumtion jämfört med andra redundanta CORDIC- metoder. Därför bör DCORDIC-arkitekturen använda sig av latchar som är uppbyggda av transmissiongrindar för att minimera kostnaden. Med beaktandet av att latchar baserade på TG-teknik kan användas i DCORDIC-algoritmen går därmed DCORDIC-algoritmen segrande ur denna jämförelse.

Related documents