• No results found

Färgrymdskonvertering för digital video med låg komplexitet och låg effekt

N/A
N/A
Protected

Academic year: 2021

Share "Färgrymdskonvertering för digital video med låg komplexitet och låg effekt"

Copied!
41
0
0

Loading.... (view fulltext now)

Full text

(1)

FÄRGRYMDSKONVERTERING FÖR

DIGITAL VIDEO MED LÅG

KOMPLEXITET OCH LÅG EFFEKT

Examensarbete utfört i Elektroniksystem vid Linköpings Tekniska Högskola

av

Kjell Holm

Reg nr: LiTH-ISY-EX-ET--06/0322--SE Linköping 2006-10-23

(2)
(3)

FÄRGRYMDSKONVERTERING FÖR

DIGITAL VIDEO MED LÅG

KOMPLEXITET OCH LÅG EFFEKT

Examensarbete utfört i Elektroniksystem vid Linköpings Tekniska Högskola

av

Kjell Holm

Reg nr: LiTH-ISY-EX-ET--06/0322--SE

Handledare: Oscar Gustafsson Examinator: Oscar Gustafsson Linköping, 25 November 2006.

(4)
(5)

ISBN (licentiatavhandling) ISRN LiTH-ISY-EX-ET--06/0322--SE Serietitel (licentiatavhandling) Serienummer/ISSN (licentiatavhandling) Typ av publikation ___Licentiatavhandling ___Examensarbete ___C-uppsats ___D-uppsats ___Rapport

___Annat ange nedan _______________

Språk

___Svenska

___Annat (ange nedan)

_________________ Antal sidor

_________________

Publiceringsdatum (elektronisk version)

Institutionen för Systemteknik Avdelningen för Elektroniksystem

URL för elektronisk version

Publikationens titel Författare Sammanfattning Nyckelord 2006-10-23 2006-11-27 X X 38

http://urn.kb.se/resolve?urn=urn:nbn:se:diva-7696

Färgrymdskonvertering för digital video med låg komplexitet och låg effekt.

Low-Complexity and Low-Power Color Space Conversion for Digital Video.

Kjell Holm

I detta examensarbete har olika sätt att implementera färgrymdskonverterare (från RGB till YCbCr och

omvänt) med hjälp av konstant matrismultiplikation jämförts. Resultaten är optimerade

lågkomplex-itetsrealiseringar passandes för höghastighets- och lågeffektsimplementationer i ASIC eller FPGA:er. Det

har visat sig att effektvariationen är betydande även om antalet additioner är desamma. Dessutom har det

visat sig att den föreslagna realiseringen står sig jämfört med tidigare tillgängliga FPGA

implementa-tioner.

In this thesis different approaches for implementing color space converters (from RGB to YCbCr and

back) using constant matrix multiplication has been compared. The results are optimized low-complexity

realizations suitable for high-speed and low-power implementation in ASICs or FPGAs. It is also shown

that the power varies significantly even if the number of additions required the same. Furthermore, it has

been shown that compared with previously available FPGA implementation the proposed ones are

advan-tageous.

(6)
(7)

INNEHÅLLSFÖRTECKNING

1

Inledning

1

1.1 Bakgrund . . . 1

1.2 Syfte . . . 1

1.3 Avgränsningar . . . 1

1.4 Metod och verktyg . . . 2

1.5 Kapitelbeskrivning . . . 2

2

Teori

3

2.1 RGB . . . 3

2.2 Luminans och krominans . . . 4

2.3 MPEG . . . 4

2.4 Hastighetskrav på konverteringen . . . 6

2.5 Komponentvideo och färgkodning . . . 6

2.6 Multipel Konstant Multiplikation . . . 8

2.6.1 Matrixscse . . . 8

2.6.2 Tisserand . . . 10

2.6.3 BHM . . . 10

2.6.4 MST . . . 10

2.7 Pipelining . . . 10

3

Multipel Konstant Multiplikation

11

3.1 Konvertering från RGB till YCbCr . . . 11

3.1.1 Referens . . . 12 3.1.2 BHMMat . . . 13 3.1.3 MSTMat. . . 13 3.1.4 Matrixscse . . . 15 3.1.5 Tisserand . . . 17 3.1.6 Handoptimerad . . . 18

3.2 Konvertering från YCbCr till RGB . . . 19

3.2.1 MSTMat. . . 19

3.2.2 Matrixscse . . . 20

3.2.3 BHMMat . . . 21

3.3 Wrapper . . . 22 3.4 Konvertering från RGB till YCbCr med pipelining 23

(8)

4

Resultat vid implementering

25

4.1 Standardcellsimplementering. . . 25

4.1.1 RGB till YCbCr-konvertering . . . 25

4.1.2 YCbCr till RGB-konvertering . . . 26

4.2 FPGA implementering . . . 26

4.2.1 RGB till YCbCr-konvertering . . . 26

4.2.2 YCbCr till RGB-konvertering . . . 27

4.3 Slutsats . . . 27

5

Diskussion

29

(9)

1

INLEDNING

1.1 Bakgrund

På avdelningen elektroniksystem sker en konstruktion av en MPEG2-avko-dare, där ett av blocken är en RGB till YCbCr-omvandlare. Omvandlaren kommer att sitta i ett GALS-system (Globally Asynchronous Locally Syn-chronous).

1.2 Syfte

Syftet med mitt examensarbete är att ta fram en resurssnål RGB till YCbCr omvandlare beskriven i VHDL (Very high speed integrated circuit Hardware Description Language), syntetisera samt simulera denna. Konverteringen är i princip en 3x3-matrismultiplikation som kan implementeras effektivt med hjälp av multipel konstant multiplikations-tekniker.

1.3 Avgränsningar

Detta arbete omfattar endast bitparallell aritmetik med en kvantisering som ger en ordlängd av 8 bitar. VHDL-koden är dock generellt skriven så att ord-längden med lätthet kan ändras. För andra typer av aritmetik hänvisas till ett tidigare arbete [4]. Vidare kommer endast MPEG-2, studio RGB samt SDTV (Standard Definition Television) att behandlas.

(10)

1.4 Metod och verktyg

Tillvägagångssätt är att med hjälp av olika algoritmer ta fram realiseringar av en 3x3-matrisvektormultiplikation samt tolka dessa. De olika realiseringarna beskrivs sedan med VHDL-kod som kompileras och sedan verifieras genom att simulera i Modelsim med hjälp av ett antal simuleringsfiler, så kallade do-filer. I do-filen kan man spara de indata man vill testa med och därigenom spara tid. VHDL-filerna syntetiseras sedan av verktyget Leonardo Spektrum till ett 0.35 µm standardcellsbibliotek, AMS/c35corelib, samt optimeras enligt verktygets förinställda val med avseende på area. Verktyget genererar bland annat filer med information om area och tidsfördröjning samt en nätlista, i detta fall på formatet verilog. Effektförbrukningen simuleras på transistornivå med Nanosim vid 20 MHz datatakt. För denna simulering har indatafiler med slumpmässiga data skapats med hjälp av Matlab.

De två bästa realiseringarna, en RGB till YCbCr och en YCbCr till RGB, har även försetts med pipelining för att öka datatakten och syntetiserats mot Xil-inx XCV50E-8 FPGA Virtex.

Följande program och verktyg har använts under arbetet: Matlab 7.0.4.352(R14) service pack 2

GNU Emacs 21.4.2

Mentor Graphics Modelsim SE vcom 5.6f compiler & simulator Mentor Graphics Leonardo Spectrum level 3

Synopsys Nanosim version 2001.6

1.5 Kapitelbeskrivning

Kapitel 2 behandlar bakomliggande teori.

Kapitel 3 beskriver realiseringarna efter de konstanta matrismultiplikation-erna.

Kapitel 4 presenterar resultaten från synteserna samt simuleringarna. Kapitel 5 innehåller en diskussion.

(11)

2

TEORI

2.1 RGB

RGB-formatet är linjärt och bygger på additiv blandning av de tre grund-färgerna rött, grönt och blått. Det är ett vanligt förekommande format hos bl.a. TV-apparater, bildskärmar, projektorer etc. Färgerna är enligt CIE (Com-mission Internationale de l’Eclairage) definerade till följande våglängder [3]:

- Röd 700.0 nm - Grön 546.1 nm - Blå 435.8 nm

Efter att RGB-signalen kvantiserats är den olinjär och betecknas vanligtvis R’G’B’. Eftersom denna rapport endast behandlar kvantiserade data, kommer jag för enkelhets skull i fortsättningen att använda beteckningen RGB utan primtecken.

Vid 8 bitars kvantisering fås ett färgdjup om 24 bitar vilket i sin tur ger 16777216 färgnyanser.

(12)

2.2 Luminans och krominans

Vad menas med luminans och krominans? Enligt Charles Poynton [3] används begreppen felaktigt. Han menar att när det gäller videosignaler bör begreppen luma respektive kroma användas.

Luminans är inom färgvetenskap och fysik ett mått som är proportionellt gentemot intensiteten och betecknas Y. Luma är en icke-linjär gammakorrig-erad gråskalesignal och betecknas Y’.

Krominans är ett mått på färgmättnaden oberoende av dess luminans vanligen uttryckt i CIE[x,y]. Kroma betecknar däremot färgsignalen C eller i detta fall färgdifferenssignalerna CB = B’-Y’ samt CR = R’-Y’, hos komponentvideo.

2.3 MPEG

MPEG (Moving Pictures Expert Groups) är en arbetsgrupp inom ISO (Inter-national Organization for Standardization). För att effektivt kunna lagra och distribuera rörliga bilder tog gruppen 1988 fram en standard för komprimer-ing av bilder, MPEG-2, vilken bl.a. används till DVD (Digital Versatile Disc) och DVB (Digital Video Broadcasting). Formellt benämns dokumentet ISO/ IEC 13818-2 [1] men återfinns även under beteckningen Rec. ITU-TH.262 utgivet av ITU (International Telecommunications Union).

Specifikationen föreskriver tre olika format, 4:4:4, 4:2:2 respektive 4:2:0, där man delat in bilden i så kallade makroblock. Ett makroblock består alltid av fyra lumablock, Y’, samt ett, två eller fyra kromablock av vardera CB och CR beroende på format. Luma- och kromablocken är av storleken 8 x 8 pixlar.

Vid formatet 4:4:4 sker ingen undersampling av krominansen, vid 4:2:2 undersamplas krominansen horisontellt och vid 4:2:0 både horisontellt och vertikalt. Detta medför att informationsmängden hos bilden kan minskas med upp till 50 procent, se antal block i tabellerna 2.1 och 2.2. Det är ögats okäns-lighet för färgnyanser som medger att man kan minska på antalet sampel och därmed reducera datamängden.

(13)

Figuren 2.1 illustrerar samplingen där cirklarna representerar sampel för luminanssignalen Y och punkterna markerar sampel för färgdifferenssignal-erna Cb och Cr. Vid formatet 4:2:2 kastas värdena för varannat sampel till skillnad mot formatet 4:2:0 där en beräkning av värdet utförs. Då denna be-räkning sker vid en annan del av systemet gås det inte närmare in på det här.

Värdena i tabell 2.1 gäller för PAL (Phase Alternate Line) med ett maximalt bildformat 16:9. NTSC (National Television System Committee) skiljer sig endast när det gäller sampel/kolumn (sampel/bildruta) vilket är 480 respektive 240, se tabell 2.2.

Figur 2.1: Sampling av luminans och färgdifferenssignaler.

Kroma-format Y-sampel/ linje Y-sampel/ kolumn CbCr-sampel/ linje CbCr-sampel/ kolumn Horisontell undersampling Vertikal undersampling Antal block 4:4:4 720 576 720 576 ingen ingen 12 4:2:2 720 576 360 576 2:1 ingen 8 4:2:0 720 576 360 288 2:1 2:1 6

Tabell 2.1. En jämförelse mellan kromaformaten gällandes PAL-system.

Kroma-format Y-sampel/ linje Y-sampel/ kolumn CbCr-sampel/ linje CbCr-sampel/ kolumn Horisontell undersampling Vertikal undersampling Antal block 4:4:4 720 480 720 480 ingen ingen 12 4:2:2 720 480 360 480 2:1 ingen 8 4:2:0 720 480 360 240 2:1 2:1 6

Tabell 2.2. En jämförelse mellan kromaformaten gällandes NTSC-system.

4:2:2

4:4:4 4:2:0

Cb och Cr Y

(14)

2.4 Hastighetskrav på konverteringen

Antalet färgpixlar eller sampel per sekund är det samma för både PAL och NTSC. Det kan man se enligt följande beräkningar, där man multiplicerar antal sampel/linje med antal sampel/bild gånger bildfrekvensen.

NTSC: 720 x 480 x 30 = 10 368 000 färgpixlar per sekund PAL: 720 x 576 x 25 = 10 368 000 färgpixlar per sekund Detta ger 3 x 10 368 000 = 31 104 000 RGB-värden per sekund.

Vid full sampling d.v.s. formatet 4:4:4 blir hastigheten 10 368 000 konverter-ingar per sekund.

2.5 Komponentvideo och färgkodning

Den internationella teleunionen ITU (International Telecommunications Union) har via sin underorganisation ITU-R, utgivit Rec. ITU-R BT.601-4 [2] vilken beskriver den internationella standarden för digital komponentvideo med studiokvalité. Färgkodningen gäller endast för SDTV.

Här definieras bland annat de digitala signalerna Y’, Cb och Cr. Man har satt upp regler hur dessa signaler skall omvandlas från de analoga primärsignal-erna E´R, E´G samt E´B. Uppbyggnaden av luminans- och färgdifferenssignal-erna skall ske enligt följande ekvationer:

Y = 0.299 E´R + 0.587 E´G + 0.114 E´B

därav

(E´R - E´Y) = E´R - 0.299 E´R - 0.587 E´G - 0.114 E´B = 0.701 E´R - 0.587 E´G - 0.114 E´B och

(E´B - E´Y) = E´B - 0.299 E´R - 0.587 E´G - 0.114 E´B = 0.299 E´R - 0.587 E´G - 0.886 E´B

Enligt denna standard skall vid 8 bitars binär kodning luminanssignalen kodas med en offset på 16, där svart har värdet 16 och vitt 235, d.v.s. lumians-signalen kan variera mellan 16 och 235, se figur 2.2. Skillnaden mellan de två nivåerna är 219, vilket förklarar index (t.ex. R219) i följande matriser.

(15)

De slutliga ekvationerna beskrivs här nedan i matrisform. Koefficienterna i matriserna är avrundade till närmaste heltal enligt specifikationen, vilket medför att alla färger inte kan återskapas exakt. Den första matrisen gäller för konverteringen från RGB till YCbCr.

För att kunna konvertera åt motsatt riktning, d.v.s. konvertering från YCbCr till RGB gäller nedanstående matris.

Figur 2.2: Luminanssignalen Y vid 13,5 MHz klocksampel.

235 16 125,5 8 710 719 0 690 Y601 CB CR 16 128 128 1 256 ---77 150 29 44 – –87 131 131 –110 –21 R219 G219 B219 • + = R219 G219 B219 1 256 ---256 0 351 256 86– –179 256 444 0 Y601 CB CR 16 128 128 –           • =

(16)

2.6 Multipel Konstant Multiplikation

De flesta algoritmer innehåller multiplicering av en variabel med ett antal konstanter samt addition eller subtraktion av dessa. För att minimera antalet additioner finns flera metoder/tekniker där några av dem som jag har använt kommer att beskrivas nedan. Den algoritm som valts till referens härrör från en IEEE-artikel [5] och har använts vid ett tidigare examensarbete [4] vilken i fortsättningen kommer att kallas referens. Algoritmen BHMMat bygger på artikeln [6], MSTMat [7], Matrixscse [8] samt Tisserand [9].

2.6.1 Matrixscse

Matrixscse (Matrix Signed Common Subexpression Elimination). Algoritmen genererar initialt en matris, i detta exempel en 9 x 11-matris, från den ur-sprungliga 3 x 3-matrisen. Varje rad består av en CSD (Canonic Signed Digit) array där det decimala värdet visas binärt m.h.a. tecknen 1, 0 samt -1, se exempel nedan.

35110 = 0 1 0 -1 0 -1 0 0 0 0 -1CSD

Algoritmen söker igenom matrisen efter gemensamma mönster och efter ett påträffat uttryck elimineras detta och ersätts med en siffra [2, 3, ... , n], beroende på antalet uttryck samt en ny matris genereras. Detta förfarande upprepas till dess att inga nya uttryck upptäcks. Ur matriserna kan man sedan skapa ekvationer, se exempel nedan.

Exemplet nedan är en del av utskriften från Matlab där 3 x 3-matrisen för YCbCr till RGB konvertering exekverats. Det man ser är initialmatrisen samt den första av totalt tre följande matriser. De tre första raderna är värdena i binär form från kolumn ett, vilket här är koefficienterna för Y. Rad fyra till sex innehåller kolumn två, d.v.s koefficienterna för Cb och till sist rad sju t.o.m. nio, kolumn tre med koefficienterna för Cr.

(17)

De uttryck som är understukna har identfierats och ersatts av siffran två på motsvarande plats i nästa matis. Det uttryck som har eleminerats har värdet (4-1). Detta värde skall sedan multipliceras med Cr, eftersom uttrycken står på raderna sju och åtta. Det slutliga ekvationen blir t.ex. a = (4-1)*Cr. För-delen med detta är att man endast behöver beräkna uttrycket en gång och man kan sedan använda resultatet vid senare tillfällen, se exempel i figur 2.3. Man kan här se att 6 multiplikatorer och 3 additioner kan reduceras till 4 multi-plikationer och 1 addition.

Figur 2.3: Exempel på subuttryckseliminering.

ycbcr2rgb = 256 0 351 256 -86 -179 256 444 0

>> matrixscse(ycbcr2rgb,1)

initial CSD array, matrix columns one beneath another

0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 1 0 1 0 0 1 0 0 -1 0 0 0 -1 0 0 0 1 0 -1 0 -1 0 0 0 0 -1 0 0 -1 0 1 0 1 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 maxcnt 3 mcol1 3 mcol2 0 mhofs 2 mcode 999

co = 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 1 0 1 0 0 1 0 0 -1 0 0 0 -1 0 0 0 0 0 2 0 -1 0 0 0 0 -1 0 0 0 0 -2 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 16 4 64 512 128 Cr 128 4 64 4 Cr 192*Cr 12*Cr 384*Cr 192*Cr 384*Cr 12*Cr 256 + + + +

(18)

2.6.2 Tisserand

Även den här algoritmen bygger på subuttryckseliminering. Det som skiljer denna från Matrixscse är att den söker efter subuttryck med fler än två termer. Algoritmen är en utökning av [5] till matriser.

2.6.3 BHM

BHM (Bull and Horrocks Modified) är av typen adderargrafsalgoritmer. Den version som använts är Bhmmat.m vilken är modifierad så att BHM kan användas på matriser. Algoritmen arbetar på följande sätt. Den 3x3-matris som man definerat läses in. Algoritmen ser till att samtliga rader innehåller minst en udda koefficient. Därefter letar den upp maxkoefficienten och gene-rerar vektorer från initialtabellen. Sedan genereras alla möjliga summor ur dessa vektorer, den summa som kommer närmast någon rad adderas till grundtabellen. Om det produceras exakt en rad som redan finns elimineras denna från grundtabellen. Denna procedur upprepas till dess att alla rader har eliminerats från tabellen och resultatet presenteras.

2.6.4 MST

MST står för Minimum Spanning Tree vilket kan översättas med minsta upp-spända träd. Metoden går ut på att hitta den enklaste adderbara raden och sedan finna den enklaste differansen mellan två rader. Denna information bildar en graf ur vilken man beräknar det minst uppspända trädet. MST kan hänföras till typen differensmetodsalgoritmer.

2.7 Pipelining

Pipelining är en metod för att öka systemkapaciteten hos sekvensiella algorit-mer, där man med hjälp av klockade register begränsar antalet operationer inom en klockcykel. Flera operationer kan då utföras parallellt under samma klockcykel beroende på tillgänglig hårdvara.

(19)

3

MULTIPEL KONSTANT

MULTIPLIKATION

3.1 Konvertering från RGB till YCbCr

Resultaten för algoritmerna BHMMat (fig. 3.2), MSTMat (fig. 3.3) samt Matrixscse (fig. 3.4) har tagits fram med hjälp av Matlab. Resultatet till (fig. 3.5) har erhållits från Arnaud Tisserand. Resultatet till den handoptime-rade (fig. 3.6) har skapats Oscar Gustafsson. Resultaten har sedan tolkats och programmerats med VHDL samt visualiserats i nedanstående figurer. Resultatet över antal utnyttjade adderare samt adderardjup presenteras i tabellform (tabell 3.1).

Samtliga realiseringar har 8 bitars in- respektive utgångar. Ordlängden internt har full precision och trunkeras på utgången. Samtliga adderare är tvåingång-ars men det visas inte alltid i figurerna. Värt att notera är att additionen som ger den föreskrivna offseten, 16 för Y samt 128 för Cb och Cr, ej visas i figur-erna. Den utförs genom att addera en etta på respektive position efter den sista addionen. Denna addition räknas inte in i resultatet av antal adderare.

Algoritm Figur Adderare Djup

Referens 3.1 21 4 BHMMat 3.2 18 9 MSTMat 3.3 18 6 Matrixscse 3.4 18 6 Tisserand 3.5 18 6 Handoptimerad 3.6 17 5

(20)

3.1.1 Referens

Den första implementeringen utgår från ett tidigare examensarbete [4], där koefficienterna tagits fram med algoritmen [5] som gav resultatet som visas i figur 3.1. Denna implementering kommer i fortsättningen att kallas referens. Det som skiljer referensimplementeringen från de övriga är att varje kanal, d.v.s. luminansen Y, färgdifferenssignalerna Cb samt Cr beräknas var för sig. Detta gav en implementation med 21 stycken adderare och ett maximalt adderardjup på 4.

Figur 3.1: Realisering av RGB till YCbCr med referensalgoritmen.

4 4 + 2 16 + 4 32 + 4 4 4 + + + 8 128 B G R B G R 128 4 8 64 2 16 4 + + + Cr Cb Y B R G .

(21)

3.1.2 BHMMat

Algoritm nummer två är BHMMat vilken kördes i Matlab och gav resultatet som visas i figur 3.2. Beskrivningen i VHDL följer resultatet strikt, d.v.s. ingen ytterligare optimering har utförts. Vilket gav en implementation med 18 adderare och maximalt djup på 9 adderare.

3.1.3 MSTMat

Den tredje algoritmen MSTMat gav ett resultat som sedan bearbetades för att kunna se om implementationen kunde förbättras. Den första implementatio-nen är beskriven direkt från det resultat som körningen i Matlab gav. Version 2 liknar den i figur 3.3 med den avvikelsen att divisionen utförs separat, till skillnad från version 3. I tabell 3.2 kan man se att resultaten skiljer sig beroende på hur designen beskrivs i VHDL. Den första implementationen är beskriven med de 18 additionerna på var sin rad. Detta gav ett maximalt

Figur 3.2: Realisering av RGB till YCbCr med algoritmen BHMMat.

R 2 + 2 + + + + 8 8 G 128 + Cr + 64 + 4 16 B 16 R + 8 B G 32 8 i i Y + + + + 32 R + + n n 32 + + + 32 G Cb .

(22)

adderardjup på 8. Genom att beskriva flera additioner i samma uttryck min-skades det maximala djupet till 7 additioner. Man kan också notera att om divisionen utförs för sig så får man en snabbare krets med något högre effekt-förbrukning. MST1 MST2 MST3 Area [µm2] 71016 71326 69233 Maximal klockfrekvens [MHz] 65,2 68,1 65,2 Tidfördröjning [ns] 15,34 14,67 15,34 Effekt [mW] 3,70 3,81 3,55 Maximalt djup 8 7 7

Tabell 3.2. Varianter med MSTMat.

Figur 3.3: Realisering av RGB till YCbCr med algoritmen MSTMat.

G 2 + B R 4 1024 256 + R G + 32 128 2 32 4 4 B G + R 8 + + + + Cb Y 128 + + 4 Cr 0.03125 .

(23)

3.1.4 Matrixscse

Algoritmen Matrixscse presenterade resultatet på ett annorlunda sätt än de tidigare, se exempel i teoridelen. Efter att ha tolkat de fyra resultatmatriserna erhölls nedanstående ekvationer:

a = R + 2G b = (4a - B) / 4 c = (4a + b) / 4 d = R - 2G

För att kunna skriva VHDL-koden på ett lämpligt sätt skrevs ekvationerna b och c om, för att undvika division, till b = 16a - 4B respektive c = 16a + 4b. Ur den sista matrisen fick man sedan fram slutresultatet. Det var dock nöd-vändigt att pröva några olika vägar att beskriva de slutliga raderna i VHDL-koden för att få en så effektiv implementation som möjligt, se tabell 3.3. Att beskriva resultatet rakt av var inte det effektivaste sättet. I figur 3.4 presente-ras den slutliga implementationen.

cse1 cse2 Area [µm2] 72891 65902 Maximal klockfrekvens [MHz] 78,9 85,0 Tidfördröjning [ns] 12,68 11,76 Effekt [mW] 3,25 2,70 Maximalt djup 6 6

(24)

Figur 3.4: Realisering av RGB till YCbCr med algoritmen Matrixscse. G 2 + + R 32 128 4 B 2 + + B 64 16 G R 4 128 128 G 16 16 4 B R + + Y + + + 4 + Cb Cr . + + + +

(25)

3.1.5 Tisserand

Implementationen är direkt beskriven från nedanstående resultat. y2=t1+t3+t4<<4+x3<<5 t4=x1+x2<<1 t3=x1-x2<<1 t2=x1<<2-x2<<7-x3 t1=-t2+x1<<6-x2<<3-x3<<2 y1=t1-t4<<4-x2-x3<<7 y3=t2-t3+x1<<7+x2<<4-x3<<2-x3<<4

där y1, y2 och y3 motsvarar Cb, Y respektive Cr samt t* är mellanvärden. Implementationen i figur 3.5 har 18 adderare med ett maximalt adderardjup på 6.

Figur 3.5: Realisering av RGB till YCbCr med Tisserands algoritm.

R + + + 8 4 G B + 2 + G R + + 16 32 B + Y 128 + + 16 G + Cb t4 t3 t1 + + + 4 16 + + 16 128 t2 t3 G R B Cr 64 128 G + + 4 t2 R .

(26)

3.1.6 Handoptimerad

Den handoptimerade realiseringen, figur 3.6, är ursprungligen gjord med hjälp av algoritmen Hcub och sedan transponerats från rader till kolumner.

Version 1 saknar de två adderarna i Cb-kedjan, vilka infördes i version 2. Detta medförde att man fick ett mindre adderardjup. I den tredje versionen utfördes förflyttning av subtraktionerna. Resultaten kan ses i tabell 3.4. Det gjordes ytterligare några versioner för att undersöka om prestanda kunde påverkas mer. Ingen av dessa blev bättre än version 3 och redovisas ej.

Figur 3.6: Handoptimerad realisering av RGB till YCbCr.

Hand1 Hand2 Hand3

Area [µm2] 65302 64464 62644

Maximal klockfrekvens [MHz] 80,1 80,1 80,2 Tidfördröjning [ns] 12,47 12,48 12,46

Effekt [mW] 2,94 2,82 2,60

Maximalt djup 6 5 5

Tabell 3.4. Handoptimerade varianter.

G 2 + + + 16 B R 32 4 2 4 2 128 + 32 + 8 128 2 Cr + + + + + + R G B + Cb + Y .

(27)

3.2 Konvertering från YCbCr till RGB

Tre av algorimerna [6], [7] och [8] har även prövats för att konvertera i mot-satt riktning, d.v.s. från YCbCr till RGB. Resultatet kan ses i figurerna 3.7, 3.8 och 3.9 samt i tabellform (tabell 3.5).

3.2.1 MSTMat

Först konverterades matrisen med hjälp av algoritmen MSTMat. Konverterin-gen gav en realisering, se figur 3.7, om 11 adderare med ett maximalt adder-ardjup på 5.

Algoritm Figur Adderare Djup

MSTMat 3.7 11 5

Matrixscse 3.8 12 5

BHMMat 3.9 14 4

Tabell 3.5. Sammanställning av adderarnas antal samt adderardjup.

Figur 3.7: Realiseringen av YCbCr till RGB med algoritmen MSTMat.

+ + 8 2 + 32 256 Cr + + + 16 Cb 128 + + 4 4 Y 256 + + + 2 R G B .

(28)

3.2.2 Matrixscse

Den andra algoritmen Matrixscse, figur 3.8, gav en realisering som bestod av 12 adderare, men samma maximala adderardjup som föregående.

Figur 3.8: Realiseringen av YCbCr till RGB med algoritmen Matrixscse.

+ Cr 4 + + Cb 16 512 4 Y 256 + + 64 + + + 4 2 + + + . 128 2 32 + G B R

(29)

3.2.3 BHMMat

Den tredje algoritmen som testades för den omvända konverteringen var BHMMat, figur 3.9. Körningen av algoritmen i Matlab gav en struktur med 14 adderare och ett maximalt djup på 11. Genom att manuellt “träda” struk-turen kan man få ned det maximala djupet till 4 adderare, se tabell 3.6.

BHM1 BHM2 Area [µm2] 49668 44736 Maximal klockfrekvens [MHz] 71,5 103,6 Tidfördröjning [ns] 13,99 9,56 Effekt [mW] 2,98 2,06 Maximalt djup 11 4

Tabell 3.6. Versioner av BHMMat.

Figur 3.9: Realiseringen av YCbCr till RGB med algoritmen BHMMat.

+ Cb + + 4 Y 256 32 256 Cr + + + 128 64 16 64 16 16 8 64 512 2 2 + + + + + + + R B G + .

(30)

3.3 Wrapper

För att belastningarna vid simuleringarna ska bli de samma har samtliga in- och utgångar försetts med klockade register. Två olika filer med VHDL-kod har skrivitits, rgb2ycbcr_buffer.vhdl samt ycbcr2rgb_buffer.vhdl.

Figur 3.10: Realiseringen rgb2ycbcr placeras mellan registren i rgb2cbcr_buffer.

clk clk RGB2YCbCr r_in g_in b_in y_out cb_out cr_out R G B CR CB Y

(31)

3.4 Konvertering från RGB till YCbCr med pipelining

Den realisering som gav det bästa resultatet, d.v.s. den handoptimerade i figur 3.6, ritades om enligt figur 3.11, där de sträckade linjerna visar var gränserna för klockcyklerna är gjorda. För att undvika timing-problem har de noder som sträcker sig över en eller flera cykler, delats upp så att klockad tilldelning kan utföras.

Figur 3.11: Handoptimerad, RGB till YCbCr med pipelining.

G 2 + R + + 32 + 2 + + 4 2 + 4 32 16 B Cb Y + + + + + + 8 + 2 + + Cr 128 + 128 B G R

(32)

3.5 Konvertering från YCbCr till RGB med pipelining

MSTMat gav inte det bästa resultatet vid simuleringen. Att den ändå valdes ut för pipelining beror på att den modifierade versionen av BHMMat ännu inte var gjord. Realiseringen från MSTMat i figur 3.7 bearbetades på samma sätt som den i kapitel 3.3. I figur 3.12 kan man se var gränserna för klockcyklerna är gjorda.

Figur 3.12: MSTMat, YCbCr till RGB med pipelining.

Cr 32 2 4 256 + + + + 8 + 128 + + 16 Y Cb 256 + + + 4 + 2 G R B

(33)

4

RESULTAT VID IMPLEMENTERING

4.1 Standardcellsimplementering

Resultaten som redovisas i tabellerna 4.1 och 4.2 är både från syntetiseringen som gjordes med Leonardo Spectrum samt simuleringen med Nanosim.

4.1.1 RGB till YCbCr-konvertering

Det man kan se är att referensimplementationen hade den lägsta tidsfördröj-ningen. Den handoptimerade gav minst area och hade den minsta effektför-brukningen. När det gäller tidsfördröjningen kan den förklaras med att det maximala adderardjupet var lägst hos referensen. Den hade även lägre effekt-förbrukning än många av de mindre area.

Algoritm Area

[µm2] Fördröjning[ns] Genomströmning[Mconv/s] Effekt[mW]

Referens 73473 10.71 93 2.77 BHMMat 68796 16.69 60 4.10 Tisserand 70307 16.69 60 3.24 MSTMat 69233 15.34 65 3.55 Matrixscse 65902 11.76 85 2.70 Handoptimerad 62644 12.46 80 2.61

(34)

4.1.2 YCbCr till RGB-konvertering

Vid konverteringen från YCbCr till RGB gav realiseringen som gjordes med algoritmen BHMMat det bästa resultatet med avseende på utnyttjad area, tidsfördröjningen samt effektförbrukning.

4.2 FPGA implementering

I tabell 4.3 har resultaten vid FPGA-implementering jämförts med ett papper där RGB till YCbCr-konvertering har gjorts med distribuerad aritmetik samt tre IP-kärnor [10]-[13].

4.2.1 RGB till YCbCr-konvertering

När det gäller antal “CLB slices“ d.v.s. konfiguerbara logikblocksandelar var de handoptimerade realiseringarna klart bäst. Man kan också notera att den handkodade realiseringen med pipelining, i princip är lika bra som den med distribuerad aritmetik med avseende på genomströmning.

Algoritm Area

[µm2] Fördröjning[ns] Genomströmning[Mconv/s] Effekt[mW]

MSTMat 45482 10.48 95 2.11 Matrixscse 46628 10.04 100 2.23 BHMMat 44736 9.65 104 2.06

Tabell 4.2. Resultat från syntetiseringar och simuleringar.

Design Slices Genomströmning [Mconv/s] Handoptimerad utan pipelining 74 105 Handoptimerad med pipelining 140 229 Distribuerad aritmetik [14],[15] 193 234

CAST [11] 222 112

ALMA [12] 222 105

Xilinx [13] 150 102

Amphion [10] 204 90

(35)

4.2.2 YCbCr till RGB-konvertering

Resultaten i tabell 4.4 visar FPGA-implementeringen av MSTMat vid YCbCr till RGB-konvertering, dels utan och dels med pipelining.

4.3 Slutsats

Efter att ha testat några olika algoritmer har det visat sig att ingen av dem är tillräckligt effektiva för att erhålla en optimal lösning. De är endast vägledande och genom erfarenhet kan man uppnå bättre resultat genom att handoptimera. Man bör skissa designen för att se vilket det maximala adder-ardjupet blir. Vid skrivandet av VHDL-koden kan man minska djupet t.ex. genom att träda strukturen. En annan metod är att subtrahera i “rätt ordning”, vilket ger resultatet att färre halvadderare används [16]. Konstruktionens area kan då minskas och detta medför att även effekförbrukningen minskas.

När det gäller kravet på hastighet 10 368 000 konv/sek så uppfyller samtliga implementationer detta.

Design Slices Genomströmning [Mconv/s] MSTMat utan pipelining 62 112 MSTMat med pipelining 119 218

(36)
(37)

5

DISKUSSION

Det har visat sig att man med multipel konstant multiplikations-teknik kan ta fram en mycket resurssnål RGB till YCbCr-omvandlare.

En del frågor kvarstår dock. Hur vet man att man erhållit den mest optimala lösningen, eftersom algoritmerna gav olika grad av optimering? Kan algorit-merna förbättras ytterligare så att man med säkerhet vet att man fått den bästa realisationen?

Då det visade sig att man med viss efterbearbetning av resultatet från algorit-merna kunde erhålla ännu bättre prestanda, dels genom att minska träddjupet och dels genom att flytta på subtraktioner. Kan man få algoritmerna att utföra denna efterbearbetning?

Påverkar värdet på elementen i matrisen val av algoritm?

Hur påverkas resultatet om man gör om alla realisationerna med minimalt träddjup?

Det behövs ytterligare undersökning och forskning för att kunna besvara dessa frågor.

(38)
(39)

REFERENSLISTA

[1] “Encoding parameters of digital television for studios,” ITU-R

Recommenda-tion BT.601-2, 1990.

[2] “Generic coding of moving pictures and associated audio information: Video,”

ISO/IEC 13818-2, 1995.

[3] C. Poynton, “Digital video and HDTV: algoritms and interfaces”. San

Fran-cisco, Morgan Kaufmann Publishers, ISBN 1-55860-792-7, 2003.

[4] B. Wahlström, “Effektsnål konvertering av RGB till YCrCb: Implementering

och jämförelse av olika artimetikstilar,” Linköping: Linköpings universitet

Institutionen för systemteknik. LITH-ISY-Ex-ET-0215, 2001.

[5] R. Pasko, P. Schaumont, V. Derudder, S. Vernalde, och D. Durackova, “A

new algorithm for elimination of common subexpressions,” IEEE Trans.

Computer-Aided Design, vol. 18, no. 1, pp. 58–68, Jan. 1999.

[6] A. G. Dempster, O. Gustafsson, och J. O. Coleman, “Towards an algorithm

for matrix multiplier blocks,” in Proc. European Conf. Circuit Theory Design, Kraków, Poland, Sept. 1–4, 2003.

[7] O. Gustafsson, H. Ohlsson, och L. Wanhammar, “Low-complexity constant

coefficient matrix multiplication using a minimum spanning tree approach,” in Proc. Nordic Signal Processing Symp., Espoo, Finland, June 9–11, 2004.

[8] M. D. Macleod och A. G. Dempster, “Common subexpression elimination

algorithm for low-cost multiplierless implementation of matrix multipliers,”

Electronics Letters, vol. 40, no. 11, pp. 651–652, 2004.

[9] N. Boullis och A. Tisserand, “Some optimixations of hardware multiplication

by constant matrices,” in Proc. IEEE Symp. Computer Atrithmetic, Santiago de Compostela, Spain, June 15-18, 2002, pp. 20-27.

[10] “Color space converters,” Datasheet, Amphion Semiconductor Ltd, DS6400

V1.1, April 2002

[11] “CSC color space converter,” Application note, CAST Inc, April 2002.

[12] “High performance color space converter,” Datasheet, ALMA Technologies,

May 2002.

[13] B. Payette, “Color space converter: R’G’B’ to Y’CrCb,” Xilinx Application

(40)

[14] F. Bensaali, A. Amira, och A. Bouridane, “An efficient architecture for color space conversion using Distributed Arithmetic,” in Proc. IEEE Int. Symp.

Cir-cuits Syst., Vancouver, Canada, 23–26 May, 2004, vol. 2, pp. 265–268.

[15] F. Bensaali, A. Amira, and A. Bouridane, “Accelerating matrix product on

recon-figurable hardware for image processing applications,” IEE Proc. Circuits,

Devices and Systems, vol. 152, no. 3, pp. 236–246, June 2005.

[16] K. Johansson, O. Gustafsson, and L. Wanhammar, “A detailed

complexity-model for multiple constant multiplication and an algorithm to minimizethe complexity,” European Conf. Circuit Theory Design, Cork, Ireland, Aug.29-Sept. 1, 2005.

(41)

Detta dokument hålls tillgängligt på Internet – eller dess framtida ersättare –

under en längre tid från publiceringsdatum under förutsättning att inga

extra-ordinära omständigheter uppstår.

Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner,

skriva ut enstaka kopior för enskilt bruk och att använda det oförändrat för

ick-ekommersiell forskning och för undervisning. Överföring av upphovsrätten vid

en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av

dokumentet kräver upphovsmannens medgivande. För att garantera äktheten,

säkerheten och tillgängligheten finns det lösningar av teknisk och administrativ

art.

Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i den

omfattning som god sed kräver vid användning av dokumentet på ovan beskrivna

sätt samt skydd mot att dokumentet ändras eller presenteras i sådan form eller i

sådant sammanhang som är kränkande för upphovsmannens litterära eller

konst-närliga anseende eller egenart.

För ytterligare information om Linköping University Electronic Press se

för-lagets hemsida

http://www.ep.liu.se/

In English

The publishers will keep this document online on the Internet - or its possible

replacement - for a considerable time from the date of publication barring

excep-tional circumstances.

The online availability of the document implies a permanent permission for

anyone to read, to download, to print out single copies for your own use and to

use it unchanged for any non-commercial research and educational purpose.

Sub-sequent transfers of copyright cannot revoke this permission. All other uses of

the document are conditional on the consent of the copyright owner. The

pub-lisher has taken technical and administrative measures to assure authenticity,

security and accessibility.

According to intellectual property law the author has the right to be

men-tioned when his/her work is accessed as described above and to be protected

against infringement.

For additional information about the Linköping University Electronic Press

and its procedures for publication and for assurance of document integrity, please

refer to its WWW home page:

http://www.ep.liu.se/

References

Outline

Related documents

Resultaten visade också att isotretinoin kan användas för att behandla mild och måttlig akne, men då krävs inte behandling i konventionella doser utan lägre doser är

Syftet med denna systematiska översiktsartikel är att undersöka det vetenskapliga underlaget för hur en kost låg på FODMAP kan minska de gastrointestinala symptomen magsmärta och

Den lägre ande- len ej sysselsatta bland invandrade kvinnor tyder på att om ej sysselsatta hade inkluderats är det en rimlig gissning att ålderspensionen för utrikes födda

I Moçambique ökar antalet elever i privata skolor medan många fattiga familjer inte har råd att skicka alla sina barn

INFORMATION FRÅN DET REGIONALA L TION FRÅN DET REGIONALA L TION FRÅN DET REGIONALA L TION FRÅN DET REGIONALA LUF TION FRÅN DET REGIONALA L UF UF TVÅRDSPROGRAMMET I

Intressant, och kanske något överraskande, är emellertid att i flera vari- abler är det inte någon större skillnad mellan grupperna med avseende på hur nöjd man är med sitt jobb

Som sagt, i nuläget har 13 av 28 föreningar lämnat ut protokollen, vilket skulle kunna ses som en svaghet i undersökning. Den enda uppgift som egentligen varit relevant i protokollen

När jag tolkar resultaten utifrån deras sätt att se på motivation så skulle det mycket väl kunna vara så att det är just en inre motivation som helt eller delvis finns