1 Uvod V trenutnem času je vse bolj popularen prenos obdelave video oziroma slikovnih podatkov z velikih računalni- kov na manjše, bolj namenske naprave, ki pa so še vedno dovolj prilagodljive. Z namenskimi vezji zmanjšamo porabo ter zagotovimo prenosljivost in obdelavo podatkov v realnem času. Programirljiva vezja FPGA so prilagodljiva in poceni rešitev za izdelavo vgrajenih videoprocesnih naprav [1]. Za učinkovit prenos aplikacij obdelave slik z osebnega računalnika na vgrajeno napravo potrebujemo primerno testno okolje. V članku je opisan razvoj lastnega testnega okolja, ki je sestavljeno iz strojne opreme in komponent v vezju FPGA. Zajem analognega videosignala izvajamo z zunanjim videodekodirnikom. Sintezo izhodnega kompozitnega signala pa naredimo s komponentami znotraj FPGA [2, 3], tako da sta na analognem izhodu le pretvornik D/A in sito. S tem zmanjšamo število komponent in pocenimo vgrajeni sistem, ki ima lahko kompozitni, s-video ali VGA izhod. V članku sta najprej na kratko opisana analogni videosignal in digitalni tok, nato pa so predstavljene strojne in programske komponente testnega okolja. Na koncu so rezultati simulacij in testiranj razvojnega okolja ter opis možnosti uporabe pri razvoju vgrajenih naprav. 2 Videosignal Obdelava videosignala poteka na testnem sistemu v digitalni obliki, vhod in izhod pa naj omogočata tudi priključitev analognih videonaprav. Prejet 5. februar, 2010 Odobren 28. april, 2010 138 Lapanja, Trost 2.1 Analogni videosignal Za prenos sestavljenega (kompozitnega) barvnega analognega signala po eni liniji obstajajo na svetu različni standardi: PAL, NTSC in SECAM [4]. Pri nas je najbolj razširjena oblika analognega zapisa videovsebin PAL (Phase-Alternating Line). Slika 1 prikazuje časovni potek ene vrstice črno- belega signala po standardu PAL ali NTSC. Informacije o barvi so dodatne temu signalu v obliki modulacije na barvnem nosilcu. V tabeli 1 so podani značilni frekvenčni in amplitudni parametri barvnega signala PAL. Slika 1: Časovni potek vrstice črno-belega videosignala po standardih PAL in NTSC Figure 1: Time diagram for one line of a black and white video signal according to the PAL and NTSC standards Analogna slika oz. okvir je sestavljena s prepletanjem dveh polslik (angl. field). Frekvenca polslik je 50 Hz, tako da se celotna slika obnovi 25-krat v sekundi. Tabela 1: Osnovne značilnosti videosignala PAL Table 1: Basic properties of PAL video signal Frekvenca polslik (slik) fFR [Hz] 50 (2 x 25) Frekvenca vrstic fH [kHz] 15.625 Število vrstic 625 Barvni nosilec fSC [MHz] 4.43361875 Pasovna širina BW [MHz] 5 – 6 Beli nivo [mV] 700 Črni nivo [mV] 0 Sinhronizacijski nivo [mV] -300 Slika 2 prikazuje komponente vezja za oblikovanje kompozitnega signala PAL. Na vhodu vezja je signal iz senzorja po korekciji faktorja gama v obliki rdeče E'R, zelene E'G in modre E'B komponente. Najprej jih pretvorimo v YUV barvni prostor po matrični enačbi [5]:                     −− −−=           ' ' ' ' ' ' 100.0515.0615.0 436.0289.0147.0 114.0587.0299.0 B G R V U Y E E E E E E (1) Barvni diferenci peljemo skozi nizkopasovno sito na modulatorju, komponento Y pa le ustrezno zakasnimo. Moldulacijske nosilce in impulze dobimo iz generatorja sinhronizacijskih signalov. Nazadnje v seštevalniku sestavimo kompozitni barvni videoizhod. Slika 2: Analogni kompozitni videomodulator [6] Figure 2: Analog composite video modulator 2.2 Digitalni videotok ITU-R BT656 Digitalni videotok dobimo z vzorčenjem in A/D pretvorbo analognega videosignala. Standardni digitalni videotok ITU-R BT 656 [7] predvideva vzorčenje signala s frekvenco 13,5 MHz in 8 ali 10-bitno kvantizacijo. Vzorčna frekvenca je celoštevilski mnogokratnik frekvence vrstic signala PAL (625 vrstic pri 50 Hz) in NTSC (525 vrstic pri 60 Hz). Vzorčenje zajema aktivni del slike in tudi zatemnilne intervale v času sinhronizacije. Začetek in konec aktivnega dela slike je v digitalnem toku označen s posebnimi kodami: SAV – Start of Active Line in EAV – End of Active Line. Posamezen videookvir je sestavljen iz dveh polslik v velikosti 288 vrstic, med katerima je vertikalna zatemnitev, ki traja 25 vrstic. Slika 3 prikazuje vsebino enega okvirja s številkami vrstic in vrednostmi sinhronizacijskih bitov. Slika 3: Področja aktivnega videa in zatemnilni intervali Figure 3: Active-video fields and blanking intervals V digitalnem toku so barve zapisane v obliki barvnih diferenc: CR = R-Y in CB = B-Y. Barvni diferenci imata manjšo pasovno širino in se lahko vzorčita z nižjo frekvenco. Standard predvideva razmerja frekvenc 4:4:4, 4:2:2 ali 4:1:1. Pri razmerju 4:2:2 se barvni diferenci vzorčita s frekvenco 6.25 MHz in združita z luminančno komponento v enoten videotok frekvence 27 MHz. V času aktivne vrstice se prenašajo zaporedja Testno okolje za razvoj vgrajenih naprav obdelave video signala 139 modre diference (CB), luminance (Y), rdeče diference (CR) in naslednje luminance (Y), kot prikazuje slika 4. Slika 4: BT.656 vrstica podatkov za 625/50 video sisteme [8] Figure 4: BT.656 data line for the 625/50 video systems 3 Razvojno okolje Testno razvojno okolje sestavlja modul z vezjem FPGA XC3S400 iz družine Spartan-3 proizvajalca Xilinx in videovmesnik [9]. Programirljivo vezje XC3S400 vsebuje 8064 4-vhodnih tabel (Look-Up Table) in D pomnilnih celic, 288k bitov blokovnega pomnilnika ter 16 strojnih množilnikov za digitalno obdelavo signalov. Načrtovanje digitalnega vezja je potekalo v visoko- nivojskem jeziku VHDL. Uporabljen je bil paket Xilinx ISE 10.1 za opis, sintezo in tehnološko preslikavo vezja. 3.1 Strojna oprema razvojnega sistema Slika 5 prikazuje blokovno shemo, na sliki 6 pa je fotografija razvojnega sistema, ki je sestavljeno iz dveh tiskanih vezij: FPGA in videomodul. Kompozitni videosignal PAL iz kamere zajame videodekodirnik TVP5150A, ki daje na izhod 8-bitni digitalni videotok skupaj z uro frekvence 27 MHz. Vezje FPGA obdela videosignal in generira izhodni tok v obliki C in Y ali R, G in B komponent. Digitalni izhodi se v vmesniku pretvorijo nazaj v analogne prek hitrega D/A pretvornika ADV7125. Vmesnik ima analogni VGA-priključek za računalniški monitor in rekonstrukcijsko sito MAX7453, ki iz signalov C in Y sestavi kompozitni videoizhod. Na tiskanem vezju modula FPGA je USB vmesnik, ki se uporablja za nalaganje programirljivega vezja in nastavljanje parametrov prek navideznega serijskega vmesnika. Vzporedno zunanje vodilo omogoča prenos podatkov na drug modul FPGA ali pa priključitev dodatnega pomnilnika. Slika 5: Blokovna shema strojnih komponent Figure 5: Hardware components of a video-testing environment Slika 6: Fotografija razvojnega sistema Figure 6: Photo of a video development board Digitalno vezje znotraj FPGA je sestavljeno iz naslednjih glavnih komponent: • avtomat za zajem videotoka, • zunanji vmesnik in barvni pretvornik, • generator kompozitnega signala PAL in • generator VGA signala. 3.2 Zajem videotoka ITU-R BT656 Vhodni videotok ITU-R BT656 vsebuje sinhroni- zacijski in podatkovni del, ki ju prenašamo iz videodekodirnika prek 8-bitnega vzporednega vodila. V tabeli 2 so predstavljene značilne vrednosti in območja, ki jih lahko zavzamejo določeni elementi tega standarda. Tabela 2: Značilne vrednosti elementov videotoka Table 2: Values for elements of digital video stream Elementi videotoka Območje Začetek sinhronizacije FF Sinhronizacijski besedi 2 in 3 00 Zatemnjeni del vrstic 08 ali 01 Aktivni video Y 10 - EB Aktivni video CB 10 - F0 Aktivni video CR 10 - F0 Sinhronizacijski del se vedno začne z identifikacijo, sestavljeno iz vrednosti FF, 00 in 00. Tem sledi statusna beseda oblike: 1 F V H P3 P2 P1 P0. F nam pove, v katerem delu slike smo (field), V določa območja vrstic, ki so neaktivne (vertical blanking), H pa nam pove, kdaj se določena vrstica začne in konča. Biti z oznako P so varnostni biti, ki so preračunani prek xor operacije sinhronizacijskih bitov. Po sinhronizacijskem delu začnemo prejemati podatkovne bite, kot je razvidno na sliki 4. Vrednosti si sledijo v zaporedju CB Y CR Y ... Da bi bile primerne za obdelavo, jih je najprej treba prevzorčiti oz. interpolirati, da dobimo en vzorec na vsak urni pulz. Izvaja se preprosta linearna interpolacija med sosednjima vzorcema s pomočjo seštevanja in pomikanja v registru. Slika 7 prikazuje 140 Lapanja, Trost blokovno shemo komponente, ki zajema standardni videotok in daje na izhod ločene komponente ter informacijo o začetku vrstice in polslike. Komponenta izvaja tudi sinhronizacijo podatkov z vhodno uro, ki se uporablja tudi za druge dele vezja. Slika 7: Zajem digitalnega videa in vmesnik Figure 7: Digital-video capturing and interface 3.3 Vmesnik in barvni pretvornik Zunanji vmesnik preoblikuje in prenaša slikovne točke iz testnega sistema na drugi programirljivi modul, na katerem razvijamo aplikacijo za obdelavo slike. Obdelava videoslike poteka ponavadi na črno-belem signalu ali pa na komponentah RGB, zato vmesnik vsebuje tudi barvni pretvornik. Vmesnik oblikujemo glede potrebe na aplikacije za obdelavo slike. Zunanje vodilo vmesnika je narejeno po protokolu Wishbone, ki ima ločene signale za oddajo (dat-o) in sprejem podatkov (dat-i). Za usklajevanje prenosa pa poskrbijo kontrolni izhodi (ctr-o) in vhod (ack-i), kot prikazuje slika 7. 3.4 Generator signala PAL Generator kompozitnega signala PAL je sestavljen iz generatorja nosilcev in sinhronizacije, modulatorjev in izhodnega vmesnika, kot prikazuje slika 8. Slika 8: Generator signala PAL Figure 8: PAL video-signal generator 3.4.1 Generator sinhronizacijskih signalov Na vhod generatorja dobimo sinhronizacijske bite iz videotoka in uro, prek katerih proizvedemo signale za sinhronizacijo in nosilce, potrebne za modulacijo barvnega dela izhodnega videosignala. Slika 9: Časovni potek vertikalne sinhronizacije [8] Figure 9: Vertical synchronisation pulses Celotna slika je sestavljena iz 625 vrstic, od tega jih je 575 vidnih, preostale pa so uporabljene za sinhronizacijo [8]. Vsaka vrstica ima horizontalno sinhronizacijo, ki traja približno 4,7 µs. Na koncu vsake polslike se izvede vertikalna sinhronizacija v obliki zaporedja petih kratkih, petih dolgih in petih kratkih impulzov, kot prikazuje slika 3. Kratki sinhronizacijski impulzi trajajo 2,35 µs, dolgi pa 27,3 µs. Taka sinhronizacija se zgodi dvakrat na 625 vrstic, saj signal PAL najprej nariše prvo polovico slike, nato pa še drugo. Ti polovici sta sestavljeni samo iz sodih ali pa samo iz lihih vrstic. Sinhronizacijske impulze dobimo s pomočjo števca in končnega avtomata, ki nam nalaga primerne vrednosti v števec. Avtomat se krmili prek sinhronizacijskih bitov F, V in H. Sinhronizacija zavzame vrednost logične ničle, ko je aktivna. 3.4.2 Modulator Za modulacijo potrebujemo dva nosilna signala, ki sta vedno v kvadratnem odnosu, prek katerih pretvorimo barvni diferenci CR in CB v nov signal, ki prenaša informacijo prek svoje amplitude in faze glede na nosilno frekvenco, kot prikazuje vektorski diagram na sliki 10. V sistemu PAL se faza osnovnega nosilca zamenja v vsaki vrstici; izraz “sode” in “lihe” vrstice na sliki 10 se nanaša na zaporedne vrstice videotoka in ne na vrstice, ki pripadajo vsaki polovici slike. Slika 10: Vektorski diagram signalov Figure 10: Vector diagram of the signals V analognih sistemih uporablja modulator komponenti U in V, v digitalnem pa imamo na voljo barvni diferenci, ki ju ustrezno skaliramo. Postopek modulacije prikazuje enačba: )cos()sin( tCtCC RB ωω ⋅±⋅= Testno okolje za razvoj vgrajenih naprav obdelave video signala 141 SCfπω 2= (2) Glavni del modulatorja obsega sintezo barvnega nosilca s frekvenco fSC = 4433618.75 Hz. Za modulacijo potrebujemo dva nosilca, ki sta zamaknjena za 90 stopinj. To bi se dalo izvesti samo z enim periodičnim signalom, ki bi ga ustrezno zakasnili in obračali, vendar ločena izvedba pripomore k hitrosti vezja, seveda na račun porabe prostora. Razvojni modul ima na vhodu uro fclk = 27 MHz, zato nosilno frekvenco dobimo prek števca in tabele za trigonometrično funkcijo. Tabelo sestavlja 256 vrednosti prve četrtine periode sinusa, cela perioda pa ima 1024 točk. Moduliran signal dobimo z branjem vrednosti iz tabele v ustreznih časovnih trenutkih, ki pomenijo fazo. Fazo izračunavamo z akumulatorjem v katerem prištevamo vrednost, ki jo podaja enačba: clk SC f f x ⋅= 1024 . (3) Razmerje podanih frekvenc je 168.149..., kar pa je problem, saj v akumulatorju lahko prištevamo le cela števila. Če bi število zaokrožili, bi uvedli napako, ki bi se izrazila kot premik faze. Da napako odpravimo, je treba izračunano število zapisati v binarni obliki s fiksno decimalko. Razmerje frekvenc smo množili z 222 in v vezju uporabili 32-bitni akumulator, v katerem prištevamo število 705268427. Fazna napaka je še vedno prisotna, vendar se spreminja tako počasi, da ne vpliva več na delovanje. Najvišja bita določata kvadrant trigonometrične funkcije, naslednjih 8 bitov pa po tabeli pretvorimo v vrednosti nosilnega signala. V vezju imamo dve tabeli, ki ju hkrati beremo, tako da dobimo sinusni in kosinusni izhod za modulacijo, kot prikazuje slika 11. Slika 11: Vezje za modulacijo barvnih komponent Figure 11: Circuit for color component modulation Pred modulacijo z nizkoprepustnimi (NF) siti omejimo pasovno širino barvnih diferenc. Diferenci peljemo na Gaussovo nizkopasovno simetrično devetstopenjsko sito s koeficienti [10] : 3153.00 =a 2308.01 =a 0903.02 =a 0191.03 =a 0021.04 =a (5) Sito ima pasovno širino okoli 1,07 MHz s slabljenjem -3 dB pri 1,3 MHz in -20 dB pri 4 MHz. Načrtovanje sita je potekalo z orodjem filterbuilder v okolju Matlab 7.9.0(R2009b). Modulator mora generirati tudi sinhronizacijski barvni nosilec (angl. burst), prek katerega se ciljna naprava zaklene na nosilno frekvenco in fazo. Nosilec se nahaja 5,6 µs po začetku horizontalne sinhronizacije in traja približno 10 period. Slika 12: Položaj barvnega nosilnega signala Figure 12: Carrier burst signal position Sinhronizacijski barvni nosilec, ki v vsaki vrstici zamenja fazo ( �135± ), dobimo s seštevanjem ali odštevanjem nosilne frekvence in ustreznim množenjem amplitude: )45sin(2)cos()sin( �±⋅=± ttt ωωω (4) Da se izognemo nekaterim množenjem, lahko tabeli nosilnih signalov že prej primerno skaliramo. 3.4.3 Izhodni modul V izhodnem modulu združimo vse prej generirane signale v videosignal PAL. Če bi na izhod peljali seštevek vseh komponent, bi dobili kompozitni videosignal. V drugem primeru pa lahko na izhod pošljemo posebej sinhronizacijo in črno-belo komponento (Y) ter barvno komponento, kar imenujemo S-videosignal. Slika 13: Kompozitni signal PAL, ena vrstica Figure 13: Composite PAL signal, one line Digitalni izhod je v obliki stopničastega signala in za pravilno obliko potrebujemo rekonstrukcijsko sito, ki se nahaja za digitalno-analognim pretvornikom. Na sliki 13 je prikazana ena vrstica kompozitnega signala, simuliranega v programu ModelSim XE III. 142 Lapanja, Trost 3.5 Generator signala VGA Generator VGA signala omogoča prikaz video toka na računalniškem monitorju. Za prikaz PAL video toka uporabljamo VGA signal [11] ločljivosti 640 x 480 pri frekvenci osveževanja 75 Hz, ki je večkratnik vertikalne frekvence slik. Podatke iz zajema pretvorimo v RGB obliko in jih shranimo v blokovni pomnilnik vezja FPGA. Zaradi omejitve količine pomnilnika v FPGA lahko na ta način shranjujemo in prikazujemo le del ene polovice slike (npr. okvir velikost 256 x 128 točk). Sinhronizacijske signale tvorimo s števcem iz ure pri 50 MHz, končni avtomat pa poskrbi za branje pomnilnika in časovno usklajevanje glede na VGA standard. Trojni D/A pretvornik nam omogoča hkratni prikaz na video izhodu in enobarvnem VGA izhodu. 4 Rezultati Za realizacijo vseh komponent je bilo v programirljivem vezju porabljenih 1376 od 8064 4-vhodnih tabel in 1100 D flip-flopov. Porabo posameznih sklopov in najvišjo frekvenco delovanja podaja tabela 3. Najbolj potraten je modulator, ker vsebuje 2 NF siti. Pri frekvencah imamo še dovolj rezerve, saj vezje dela pri 27 oz. 50 MHz. Tabela 3: Poraba sredstev v programirljivem vezju Table 3: FPGA resource logic utilization št. DFF št. LUT f [MHz] Zajem 95 147 120.0 Sinhronizacija 64 197 161.2 Modulator 832 923 89.5 eno NF sito 283 348 215.1 VGA modul 129 221 130.3 Celotno vezje 1100 1376 89.5 Celotno vezje zasede nekoliko manj kot je vsota vseh komponent zaradi optimizacije porabe pri sintezi. Na sliki 14 je prikazana meritev ene vrstice izhodnih signalov z digitalnim osciloskopom. 5 Sklep Razvojni sistem je zelo uporaben pripomoček pri testiranju strojne izvedbe algoritmov za obdelavo videotoka in osnova za razvoj namenskih vgrajenih naprav. Testno okolje daje osnovne komponente, ki jih potrebujemo za obdelavo videotoka. V vezju FPGA je na voljo še dovolj prostora za izvedbo preprostih algoritmov predobdelave videa, zahtevnejšo obdelavo pa naredimo na drugem modulu s povezavo prek zunanjega vmesnika. Pri komponentah imamo še nekaj možnosti za optimizacijo in prilagajanje glede na potrebe aplikacije. Trenutno je največja omejitev v količini pomnilnika v FPGA, ki pa ga lahko preprosto razširimo z dodatnim zunanjim statičnim pomnilniškim modulom. a) b) Slika 14: Meritev ene vrstice a) PAL in b) signala VGA Figure 14: One line of a) PAL and b) VGA signal 6 Literatura [1] M. Tusch, High-Performance Image Processing on FPGAs, Xcell Journal, Vol 57, 2006 [2] B. Kang, J. Kim, H. Yang: Design of multi-standard NTSC/PAL video encoder, Current Applied Physics, vol 4, 37-42, februar 2004 [3] S.H. Oh, H.J. Choi, S.W. Kwon, M.K. Lee: A fully programmable systolic pipelined digital video encoder for NTSC/PAL/PALplus compatibility on a 4:3 screen, IEEE Trans. on Consumer Electronics, avg. 1997, str. 965-971 [4] Benson, K. Blair, and Jerry C Whitaker. Standard Handbook of Video and Television Engineering. 3rd ed. New York: McGraw-Hill, 2000. [5] J. Keith, Video demystified : a handbook for the digital engineer, Burlington, Oxford: Newnes, 2007 [6] A. Trost, Video tehnologija, zapiski predavanj, http://lniv.fe.uni-lj.si/video-spec.html [7] ITU-RBT.656-5, Interfaces for digital component video signals, 1998. [8] Intersil, BT.656 Video Interface for ICs, July 2002 http://www.intersil.com/data/an/an9728.pdf [9] Spartan-3 FPGA Family Data Sheet, http://www.xilinx. com/support/documentation/data_sheets/ds099.pdf [10] C.K.P. Clarke, Colour encoding and decoding techniques for line–locked sampled PAL and NTSC television signals, BBC Research Department, March 1986, str. 8,13 [11] M. Hinner: VGA (Video Graphics Array) Interface and video signal documents, http://martin.hinner.info/vga/ Staš Lapanja je diplomiral leta 2008 in je zdaj podiplomski študent magistrskega študija na Fakulteti za elektrotehniko v Ljubljani. Andrej Trost je doktoriral leta 2000 na Fakulteti za elektrotehniko Univerze v Ljubljani in bil habilitiran v naziv docent. Raziskovalno se ukvarja z razvojem vezij v tehnologiji FPGA in načrtovanjem digitalnih sistemov, ki jih razvija tudi za industrijske aplikacije. Visokonivojsko načrtovanje vezij poučuje pri predmetih na dodiplomskem in podiplomskem študiju ter seminarjih in delavnicah za industrijo.