75
Sprzętowa implementacja wybranych algorytmów przetwarzania obrazów w niskobudżetowych FPGA Implementation of selected image processing algorithms in low cost FPGA devices AUTOR: Krzysztof Maicher POLITECHNIKA WROCLAWSKA WYDZIAL ELEKTRONIKI KIERUNEK: Elektronika i Telekomunikacja (EiT) SPECJALNOŚĆ: Aparatura Elektroniczna (EAE) PRACA DYPLOMOWA MAGISTERSKA PROWADZĄCY PRACĘ: Dr inż. Jaroslaw Sugier, W4/I6 OCENA PRACY: WROCLAW 2009

Implementation of selected image processing algorithms in low cost FPGA devices (PL)

  • Upload
    maicher

  • View
    28

  • Download
    1

Embed Size (px)

DESCRIPTION

Sprzętowa implementacja wybranych algorytmów przetwarzania obrazów w niskobudżetowych FPGA.Niniejsza praca jest splotem dwóch dziedzin zainteresowań, obejmujących tematykę przetwarzania obrazów w czasie rzeczywistym i projektowania architektur układów programowalnych.

Citation preview

  • Sprztowa implementacja wybranych algorytmw przetwarzania obrazw w niskobudetowych FPGA

    Implementation of selected image processing algorithms in low cost FPGA devices

    AUTOR: Krzysztof Maicher

    POLITECHNIKA WROCAWSKA

    WYDZIA ELEKTRONIKI

    KIERUNEK: Elektronika i Telekomunikacja (EiT) SPECJALNO: Aparatura Elektroniczna (EAE)

    PRACA DYPLOMOWA MAGISTERSKA

    PROWADZCY PRAC: Dr in. Jarosaw Sugier, W4/I6

    OCENA PRACY:

    WROCAW 2009

  • Sowa kluczowe

    FPGA, Spartan DSP, Filtr Medianowy, HDMI

  • Spis treci

    1. Wstp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.1. Cel pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.2. Teza pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3. Zakres pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.4. Zaoenia projektowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2. Problemy sprztowego przetwarzania obrazw w FPGA . . . . . . . . . 82.1. Akwizycja sygnau wideo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2. Nadajnik i odbiornik HDMI . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3. Filtracja medianowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.4. Sprztowa realizacja filtracji medianowej . . . . . . . . . . . . . . . . . . . . 16

    3. Projekt sprztowej realizacji filtracji medianowej MX2dMedian . . . . . 223.1. Skrzyowanie rnych domen czasowych . . . . . . . . . . . . . . . . . . . . 223.2. Przetwarzanie strumienia danych obrazu . . . . . . . . . . . . . . . . . . . . 263.3. Implementacja rdzenia filtru medianowego . . . . . . . . . . . . . . . . . . . 283.4. Architektura rdzenia filtru medianowego . . . . . . . . . . . . . . . . . . . . 323.5. Blok pamici linii obrazu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.6. Procesor pikseli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.7. Parametryzacja filtru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.8. Jednostka wyjciowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.9. Opnienia sygnaw synchronizacji pionowej i poziomej . . . . . . . . . . . 443.10. Budowa wewntrzna procesora pikseli . . . . . . . . . . . . . . . . . . . . . 45

    3.10.1. Rejestr danych i rejestr indeksw . . . . . . . . . . . . . . . . . . . . 453.10.2. Bloki komparatorw . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.10.3. Blok Sumy Bitowej . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    3.11. Moliwoci rozbudowy rdzenia filtru . . . . . . . . . . . . . . . . . . . . . . 48

    4. Wyniki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.1. Weryfikacja poprawnoci dziaania projektu MX2dMedian . . . . . . . . . . 50

    4.1.1. Algorytm dziaania programu symulacyjnego . . . . . . . . . . . . . 514.1.2. Wczytywanie i zapis obrazu . . . . . . . . . . . . . . . . . . . . . . . 524.1.3. Procesy symulacji nadajnika i odbiornika HDMI . . . . . . . . . . . 554.1.4. Proces zegara systemowego . . . . . . . . . . . . . . . . . . . . . . . 57

    4.2. Weryfikacja poprawnoci dziaania moduu FIFO . . . . . . . . . . . . . . . 58

    3

  • 4.3. Weryfikacja poprawnoci dziaania rdzenia filtru . . . . . . . . . . . . . . . 594.4. Implementacja i weryfikacja sprztowa . . . . . . . . . . . . . . . . . . . . . 614.5. Ilo wykorzystanych zasobw FPGA . . . . . . . . . . . . . . . . . . . . . . 61

    Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    A. Modu MMXS3DSP-AV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    B. Lista sygnaw interfejsu DVI . . . . . . . . . . . . . . . . . . . . . . . . . . 68

    C. Plik UCF stworzony na potrzeby projektu MX2dMedian . . . . . . . . . 69

    Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    Spis tabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

    Spis rysunkw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    Owiadczenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

    4

  • ROZDZIA 1

    Wstp

    Niniejsza praca jest splotem dwch dziedzin zainteresowa, obejmujcych tematykprzetwarzania obrazw w czasie rzeczywistym i projektowania architektur ukadwprogramowalnych.

    Z systemem przetwarzania sygnaw w czasie rzeczywistym mamy doczynienia wtedy, gdy dokonuje si w nim oblicze wspbienie z procesemzewntrznym. Oznacza to, e dla okrelonego standardu wizyjnego w trakcie procesuobliczeniowego nie nastpuje utrata danych pikselowych ani podanej informacjiobrazowej [2]. Dla wspczesnych standardw stumieni wideo, podczas przetwarzaniaobrazw w czasie rzeczywistym istnieje potrzeba obsuenia stosunkowo duegostrumienia danych. Jako przykad moe posuy format HDTV o rozdzielczoci1920 x 1080 i czstotliwoci odwieania 30Hz. Dla takich parametrw czstotliwopropagacji piksela w systemie obliczeniowym musi wynosi minimum 74MHz.Oznacza to, e system przetwarzania musi generowa punkty wynikowe z t wanieczstotliwoci lub wiksz. Jedn z popularnie stosowanych operacji podczasprzetwarzania obrazw jest splot dyskretny. W jego skad, przy zaoeniu maski3 x 3, wchodzi 18 operacji: 9 mnoe, 8 dodawa i jedno dzielenie [2]. Dla strumieniadanych HDTV operacja splotu dyskretnego z najmniejsz mask (3 x 3) wymagawic wykonania ponad miliarda operacji na sekund, przy czym splot stanowi zwyklejedynie fragment kompleksowych algorytmw przetwarzania obrazw.

    Czsto okazuje si, e wydajno procesorw generalnego przeznaczeniai procesorw DSP jest zbyt maa, by sprosta realizacji algorytmw przetwarzaniaobrazw w czasie rzeczywistym. Wynika to z faktu, i procesory posiadajsekwencyjny model wykonywania algorytmw, co oznacza, e instrukcje sszeregowane w czasie i wykonywane na uniwersalnych zasobach procesora (takichjak np. ALU - Arithmetic Logic Unit i MAC - Multiplier-Accumulator). Taki styloblicze nazywa si przetwarzaniem w czasie. By sprosta wysokim wymaganiomczasowym, konieczne okazuje si zrwnoleglenie oblicze i wykonywanie wieluprocesw obliczeniowych jednoczenie - przetwarzanie w przestrzeni. Polega onona takim zaprojektowaniu cieki strumienia danych, aby trafiaa ona na kolejneelementy obliczeniowe. To podejcie wymaga utworzenia dedykowanych struktursprztowych. Przykadami takich struktur s np. ukady ASIC, zaprojektowane

    5

  • do realizacji cile okrelonego zadania lub procesory z wbudowanymi jednostkamido realizacji liniowych i nieliniowych operacji kontekstowych, takich jak filtracja.Elastyczno tych ukadw jest jednak niewielka. Szerokie pole zastosowaw przetwarzaniu obrazw znalazy ukady FPGA. Ich mocn stron jestsprztowa realizacja algorytmw, czyli moliwo zrwnoleglenia oblicze oraz duaelestyczno, polegajca na moliwoci zmiany architektury wewntrznej poprzezrekunfiguracj ukadu.

    1.1. Cel pracy

    Celem pracy jest projekt oraz implementacja systemu MX2dMedian, realizujcegofiltracj strumienia wideo w wybranym ukadzie FPGA rodziny Spartan-3A DSP dlastrumienia wejciowego o rozdzielczoci obrazu 1280 x 1024 i czstotliwoci 60Hz.Opis architektury projektu powinien by wykonany w jzyku opisu sprztu VHDL.Zaoeniem projektu jest wsppraca z interfejsami nadajnika i odbiornika HDMI.

    1.2. Teza pracy

    Uycie ukadu FPGA do implementacji algorytmw przetwarzania obrazw wczasie rzeczywistym zapewnia du moc obliczeniow, wynikajc z moliwocizrwnoleglenia oblicze oraz elastyczno w postaci dowolnej, szybkiej modyfikacjialgorytmu dziki moliwoci rekonfiguracji FPGA.

    1.3. Zakres pracy

    Zakres pracy obejmuje:

    analiza problemw cyfrowej transmisji strumienia wideo oraz sprztowychalgorytmw filtracji medianowej,

    opracowanie obsugi interfejsw komunikacyjnych wystpujcych w projekcie,

    opisanie wybranego algorytmu filtru medianowego w jzyku VHDLi zsyntezowanie go do wybranego ukadu FPGA rodziny Spartan-3A DSP,

    weryfikacja poprawnoci dziaania algorytmu filtracji w rodowiskusymulacyjnym ModelSim,

    ocena i analiza efektywnoci automatycznej implementacji projektu przeznarzdzia rodowiska projektowego ISE.

    6

  • 1.4. Zaoenia projektowe

    Wobec algorytmu filtracji zostay postawione nastpujce zaoenia:

    format obrazu wejciowego i wyjciowego: RGB lub YCrCb,

    przetwarzanie obrazw o maksymalnych parametrach zgodnych ze standardemSXGA @ 60Hz1,

    filtracja w czasie rzeczywistym (generowanie jednej prbki obrazu wyjciowegow jednym cylku zegarowym),

    moliwoc wyboru trzech rozmiarw okna filtru 3x3, 5x5 oraz 7x7.

    Dziaanie filtru medianowego, opartego na powyszych zaoeniach naleyzweryfikowa, w zwizku z czym niezbdne jest przygotowanie aplikacji testujcejo nastpujcych wymaganiach:

    generowany sygna wejciowy obrazu zgodny z sygnaem wystpujcymw odbiorniku HDMI umieszczonym na pycie MMXS3DSP-AV (dodatek A),

    otrzymywany sygna wyjciowy obrazu zgodny z sygnaem wystpujcymw nadajniku HDMI umieszczonym na pycie MMXS3DSP-AV,

    symulacja w warunkach czasowych zgodnych z panujcymi w moduleMMXS3DSP-AV.

    1Parametry standardu SXGA: 1280 x 1024 @ 60 Hz

    7

  • ROZDZIA 2

    Problemy sprztowego przetwarzania obrazww FPGA

    2.1. Akwizycja sygnau wideo

    Akwizycja obrazu jest procesem przetwarzania informacji ootaczajcym nas wiecie lub nie-elektronicznej reprezentacji obrazu(fotografie, plany, mapy, dokumenty papierowe) na posta cyfrow,dogodn do obrbki1

    Najbardziej rozpowszechnionym sposobem reprezentacji obrazw cyfrowych,pozyskiwanych ze wiata zewntrznego jest zastosowanie rastra (siatki)kwadratowego (rys.2.1). W procesie tym, zwanym dyskretyzacj, otrzymujesi macierz dwuwymiarow R:

    R = Nhor Nver (2.1)

    gdzie: R - rozdzielczo obrazuNhor - ilo punktw w linii obrazuNver - ilo linii obrazu

    Parametry obrazu maj cile okrelony zwizek z jego rozmiarem, a co zatym idzie, wpywaj na czas jesgo przetwarzania. Zgodnie z wzorem (2.1) liniowywzrost rozdzielczoci powoduje kwadratowy wzrost objtoci obrazu. Tak wicwybr rozdzielczoci obrazu jest kompromisem pomidzy jakoci odwzorowania(zachowaniem szczegw obrazu), a jego rozmiarem.

    Pojedynczy element macierzy zwany jest pikselem. Kady piksel moeprzyjmowa jeden spord okrelonej liczby stanw. Jednym z modeli zapisu obrazukolorowego jest format RGB2, w ktrym kady piksel opisuj skadowe zoonez trzech kolorw: czerwonego, zielonego i niebieskiego. Poprzez zmieszanie ich w

    1Tadeusiewicz R., Korochoda P.: Komputerowa analiza i przetwarzanie obrazw, Wydawnictwo FundacjiPostpu Telekomunikacji, Krakw 1997, s.14

    2Z jzyka angielskiego: R-red, G-green, B-blue.

    8

  • Rysunek 2.1. Siatka typowego obrazu cyfrowego. [3]

    ustalonych proporcjach uzyskiwany jest dowolny kolor. Do zapisu obrazw cyfrowychuywany jest rwnie model YCbCr3.

    2.2. Nadajnik i odbiornik HDMI

    Na pycie MMXS3DSP-AV umieszczono odbiornik oraz nadajnik HDMI/DVI,ktre s konwerterami tych sygnaw na posta rwnoleg, wygodn dokomunikacji z FPGA. Do akwizycji sygnau wideo moe wie by wykorzystanedowolne urzdzenie posiadajce interfejs DVI lub HDMI. W niniejszym rozdzialeumieszczono podstawowe informacje zwizane z wymienionymi interfejsami orazukadami odbiornika i nadajnika.

    INTERFEJS DVI

    Interfejs DVI4 zosta opracowany w celu zapewnienia szybkiego, cyfrowegopoczenia do przesyu obrazw. Tabela 2.1 przedstawia stosowane standardywykorzystywane do cyfrowego przesyu sygnau wizyjnego w interfejsie DVI.

    3Y-luminancja, Cb, Cr-skadowe chrominancji.4Digital Visual Interface

    9

  • Nazwa Rozdzielczo

    VGA 640 x 480SVGA 800 x 600XGA 1024 x 786SXGA 1280 x 1024UXGA 1600 x 1200HDTV 1920 x 1080QXGA 2048 x 1536

    Tabela 2.1. Standardy przesyu sygnau wizyjnego [16].

    Specyfikacja DVI wykorzystuje do szeciu kanaw, linii rnicowych do przesyudanych w formie nieskompresowanej 8-bitowej (rys.2.2). Jego warstw elektryczntworz pary linii rnicowych zgodne ze stardardem T.M.D.S. [16]. Wykaz liniiinterfejsu DVI przedstawia zacznik B.

    Rysunek 2.2. Poczenie T.M.D.S.

    INTERFEJS HDMI

    Interfejs HDMI5 zosta wprowadzony na rynek jako nastpca DVI i jest z nimkompatybilny, co oznacza, e mona obydwie technologie czy ze sob, mimornicy wtyczek, za pomoc pasywnego konwertera (rys.2.3). HDMI umoliwia

    5High Definition Multimedia Interface

    10

  • ponadto przesyanie dwku (8 kanaw audio) oraz danych obrazu w formie 10 -bitowej.

    Rysunek 2.3. Konwerter sygnau HDMI/DVI, DVI/HDMI [20]

    ODBIORNIK HDMI AD9383

    Rysunek 2.4 przedstawia wewntrzn budow odbiornika HDMI AD9398firmy Analog Devices. Z lewej strony przedstawiono wejcia sygnaw HDMI,kompatybilne ze standardem DVI. Zasada dziaania ukadu polega na konwersji tegosygnau na posta rwnoleg (24 - bitow) do postaci RGB lub YCbCr, w ktrejkady z trzech kanaw (R, G, B lub Y, Cb, Cr) przesyany jest na 8 bitach. Rys.2.5 przedstawia ukad tych kanaw w interfejsie odbiornika. W niniejszej pracy dotransmisji danych wykorzystano dwa spod wymienionych standardw: RGB oraz4:4:4 YCbCr. Ukad posiada rwnie linie synchronizacji poziomej VSYNC, pionowejHSYNC. Generuje rwnie sygna zegarowy DATACK dla interfejsu rwnolegegooraz sygna DE sygnalizujcy gotowo na transmisj. Konwersja odbywa si w blokuHDMI RECEIVER, natomiast w bloku COLOR SPACE CONVERTER realizowanajest ewentualna zmiana formatu przesyanych danych na posta RGB lub YCbCr,zgodnie z ustawieniem w rejestrach konfiguracyjnych ukadu. Poniej bloku COLORSPACE CONVERTER widoczne s wyprowadzenia sygnaw audio. Zagadnienie tojednak wykracza poza temetyk tej pracy, tak samo jak realizacja szyfrowania danychw bloku DHCP. Ukad nadrzdny (procesor lub FPGA) maj moliwo konfiguracjirejestrw ukadu poprzez interfejs I2C (linie SCL, SDA).

    11

  • Rysunek 2.4. Schemat blokowy odbiornika HDMI AD9398 [14].

    Rysunek 2.5. Kanay RGB oraz YCbCr, wystpujce w interfejsie rwnolegym ukadu AD9398[14].

    12

  • NADAJNIK HDMI AD9889B

    Nadajnik HDMI AD9889B realizuje konwersj sygnau wizyjnego, przesyanegointerfejsem rwnolegym, identycznym jak w opisanym wyej odbiorniku na standardHDMI. Na schemacie blokowym (rys.2.6) wyrni mona blok wejciowy sygnauVIDEO DATA CAPTURE, blok konwersji kolorw COLOR SPACE CONVERSIONoraz blok nadajnika HDMI Tx CORE.

    Rysunek 2.6. Schemat blokowy nadajnika HDMI AD9889B [15].

    2.3. Filtracja medianowa

    Filtracja medianowa jest nieliniow, kontekstow metod filtracji, bardzopowszechnie wykorzystywan jako element wstpnego przetwarzania obrazwze wzgldu na swoje interesujce waciwoci. Filtr medianowy potrafi

    13

  • Rysunek 2.7. Usuwanie zakce filtrem medianowym [3].

    Rysunek 2.8. Wpyw filtru medianowego na krawdzie obiektu [3].

    zredukowa szum wysokoczstotliwociowy oraz impulsowe zakceniabez rozmywania ostrych krawdzi obrazu (rys.2.7, rys.2.8). Podczas filtracjiobrazu mamy do czynienia z filtracj dwuwymiarow.

    Median (median) nazywana jest liczba, ktra w szeregu uporzdkowanymznajduje si dokadnie w poowie tego szeregu. W algorytmie filtracji medianowejdwuwymiarowej okno o rozmiarze (K K), gdzie K = 2N + 1, posiadajceliczb elementw rwn TAP6 jest przesuwane wzdu sygnau, a rodkowy punktokna zamieniany jest na median wszystkich punktw okna. Ide dziaania jestzaoenie, e mediana wszystkich punktw okna bdzie najlepszym wyborem dlapunktu centralnego. Niech Wi,j bdzie oknem, ktrego centralnym punktem jestpunkt o wsprzdnych (i, j), wtedy:

    yi,j = median {Wi,j} (2.2)

    Operacj wykonywan przez filtr medianowy jest sortowanie elementw okna,przedstawienie ich w uporzdkowany sposb (np. rosnco) i wybr rodkowego

    6TAP - liczba elementw okna. Dla filtracji dwuwymiarowej: TAP = K2

    14

  • elementu jako wyniku filtracji. Na rys. 2.9 przedstawiono may wycinek (3 x 3)pewnego obrazu, ktry posuy jako okno w przykadzie ilustrujcym dziaanie filtrumedianowego. W tabeli 2.2 zapisano wartoci pikseli okna rozdzielajc kanay R, Gi B.

    Rysunek 2.9. Przykadowe okno 3 x 3.

    R G B178 171 156 89 91 104 83 82 82178 134 179 115 76 135 108 62 100182 189 152 199 157 165 142 134 119

    Tabela 2.2. Wartoci kanaw R, G i B dla okna z rys.2.9

    Naley dokona sortowania elementw kanau R w kolejnoci rosncej:

    R = {134, 152, 156, 171, 178, 178, 179, 182, 189} (2.3)

    Wynikiem, czyli median, bdzie rodkowy (pity) element w uporzdkowanymcigu, czyli punkt o wartoci 178. To samo sortowanie naley powtrzy dla kolejnychkanaw:

    G = {76, 89, 91, 104, 115, 135, 157, 165, 199} (2.4)

    B = {62, 82, 82, 83, 100, 108, 119, 134, 142} (2.5)

    W wyniku powyszych operacji otrzymywany jest nowy punkt wynikowy(tab.2.3), ktry w otoczeniu punktw okna przedstawiono na rys.2.10.

    Po wykonaniu filtracji dla danego okna nastpuje jego przesunicie w prawo(rys.2.11).

    15

  • R G B178 171 156 89 91 104 83 82 82178 178 179 115 115 135 108 100 100182 189 152 199 157 165 142 134 119

    Tabela 2.3. Wartoci kanaw R, G i B dla okna z rys.2.9 po filtracji medianowej.

    Rysunek 2.10. Wynik filtracji medianowej.

    Wspczesne struktury filtrw medianowych mona podzieli na dwa typy:

    1. Filtry, w ktrych elementy okna przechowywane s w kolejnoci przybycia oraz

    2. Filtry, w ktrych elementy okna przechowywane s wedug rzdu, np. rosnco.

    W filtrach z pierwszej grupy moliwe jest zastosowanie przetwarzania potokowegodowolnej gbokoci oraz zrwnoleglenia algorytmu, przez co czas oblicze moe byznacznie krtszy ni w architekturach drugiej grupy. Filtry z drugiej grupy monazrealizowa z wykorzystaniem znacznie mniejszej iloci zasobw logicznych.

    Ze wzgldu na krytyczne wymogi czasowe, w niniejszej pracy skoncentrowano sina filtrach pierwszej grupy, w ktrych elementy przechowywane wedug kolejnociprzybycia.

    2.4. Sprztowa realizacja filtracji medianowej

    Struktura sprztowej implementacji filtru medianowego, prezentowana w niniejszejpracy, bazuje na algorytmie zaproponowanym w [3] z modyfikacjami na podstawiewiedzy zawartej w [4].

    Dane wejciowe pobierane s bajt po bajcie od lewej strony obrazu do prawej,poczwszy od grnej linii obrazu kolejno w d. Architektura filtracji medianowejz oknem 3 x 3, przedstawiona na rysunku 2.12, skada si z linii opniajcych,dziki ktrym zapewniony jest dostp do otoczenia danego punktu w jednej jednostce

    16

  • Rysunek 2.11. Okno o rozmiarach 3 x 3 podczas filtracji.

    czasu. Kolejne punkty obrazu umieszczane s w rejestrach7 i przechowywane w nichwedug kolejnoci przybycia, tak e kolejne przychodzce nowe punkty wypychajz rejestrw najstarsze. Blok komparatorw odpowiedzialny jest za porwnywaniekadej wartoci rejestrw z kad, by nastpnie w bloku RAM/ROM zapisa wagikadego z punktw i obliczy, zawarto ktrego rejestru ma by przekazana przezmultiplekser na wyjcie filtru.

    W wyniku realizacji bloku komparatorw, w ktrych zawartoci rejestrw sporwnywane kada z kad otrzymanoby zbyt rozbudowan struktur algorytmu,zajmujc niepotrzebnie bardzo duo zasobw. Mona j zmodyfikowa, jakzaproponowano w [5]. W tym rozwizaniu, zamiast bloku RAM/ROM, kadyz rejestrw danych posiada przypisany do niego rejestr wag, natomiast zawartocirejestrw s porwnywane jedynie z nowymi punktami, wchodzcymi w danymcylku zegarowym do rejestrw, a wynik porwnania zapisywany jest do rejestrwwag.

    Dla wyjanienia zasady dziaania powyej opisanego algorytmu posuyrysunek2.13, w ktrym dla uproszczenia zaprezentowano architektur dla filtracjisygnaw jednowymiarowych dla okna picioelementowego TAP = 5. Analogiczniealgorytm ten jest przenaszalny na sygnay dwuwymiarowe, jakimi s obrazy.

    W rejestrach D[3...0] oraz DN przechowywane s wartoci kolejnych prbeksygnau. Nowa prbka trafia do rejestru DN, by w kolejnym cyklu zosta przesunitdo D[0], pniej do D[1] itd. Kady rejestr D posiada odpowiadajcy mu rejestr C

    7Na przechowanie wartoci wszystkich punktw dla okna 3 x 3 potrzebnych jest 9 rejestrw, analogiczniedla wikszych oklien K x K, gdzie K = 2N + 1 potrzeba K2 rejestrw.

    17

  • Rysunek 2.12. Sprztowa realizacja filtracji medianowej zaprezentowana w [3].

    18

  • oraz CR. Zawartoci rejestrw D, C oraz CR s przesuwane w lewo z kadym cyklemzegarowym.

    Kada nowa prbka zapisana do rejestru DN jest porwnywana z prbkamiju obecnymi w rejestrach D[3...0]. Zawartoci rejestrw C, przechowujce wynikporwnania s wwczas uaktualniane na podstawie porwnania dokonanegow blokach komparatorw. Jeli nowa prbka jest wiksza lub rwna istniejcejw danym rejestrze, wwczas wynik porwnania bdzie logiczn 1, w przeciwnymwypadku bdzie logicznym 0.

    Kady rejestr CR[1...3] oraz rejestr CN posiada szeroko rwn TAP. Dorejestru CN trafia inwersja zoenia wszystkich bitw wynikw porwnania. Bdziew nim zatem zapisana informacja, w ktrym rejestrze D[0...3] zawarto bya wikszaod zawartoci rejestru DN, w postaci jedynki logicznej na odpowiednim miejscu. Podokonaniu sumy bitw (jedynek logicznych) otrzymamy warto indeksu dla prbkiw rejestrze DN.

    Zawartoci rejestrw CR[1...3] propagowane s wedug zalenoci 2.6, rys.2.14.

    CR[k] = {CR[k 1](TAP 2 : 0), C[k]} (2.6)

    gdzie (:) oznacza wybr bitw, {} oznacza skadanie bitwTAP - ilo prbek okna.

    W ten sposb realizowane jest sortowanie. Indeks danej prbki, bdcy wynikiemsumowania bitowego zawartoci resestru CR, jest jego numerem w sortowaniurosncym. Dla najmniejszej prbki bdzie to warto 1, natomiast dla najwikszej 5.

    Kolejn operacj jest porwnanie indeksw z parametrem RANK. Wybr jegowartoci ma kluczowe znaczenie. W celu otrzymania filtracji medianowej parametrten musi by rwny indeksowi rodkowego elementu okna. W prezentowanymprzykadzie jest to warto 2. Jeli RANK przyjmie inn warto, wwczasotrzymany zostanie filtr o waciwociach filtru minimalnego lub maksymalnego(tab.2.4)

    Wynik porwnania parametru RANK z indeksami prbek trafia do enkoderajeden-z-piciu. W ten sposb na jego wyjciu otrzymany zostaje numer rejestruD, ktrego zawarto ma by przekazana przez demultiplekser (niewidoczny narysunku) na wyjcie filtru.

    Udoskonalenie powyej przedstawionej architektury polega na zmodyfikowaniujej tak, by moliwa bya realizacja przetwarzania potokowego. Metody osigniciatego zostay opisane w [4]. Celem wprowadzenia przetwarzania potokowego jest

    19

  • Warto par. RANK Otrzymany Filtr

    RANK = 0 Filtr MinimalnyRANK = (TAP 1)/2 Filtr MedianowyRANK = TAP 1 Filtr Maksymalny

    Tabela 2.4. Waciwoci filtru w zalenoci od parametru RANK (TAP - liczba elementwokna).

    Rysunek 2.13. Architektura rdzenia filtru medianowego wedug [5].

    20

  • Rysunek 2.14. Przykad operacji filtru medianowego [5].

    potrzeba uzyskiwania wyniku filtracji w kadym cyklu zegarowym. Kolejkowaniegbokoci N dla okna K x K polega wic na wczytaniu w jednym cylku zegarowymt = t0 iloci punktw rwnych K oraz na zwracania w tym samym cylku wyniku dladanych wczytanych w cyklu t = t0 N . W ten sposb dane wyjciowe generowanes w kadym takcie zegarowym z opnieniem rwnym gbokoci kolejkowania.

    21

  • ROZDZIA 3

    Projekt sprztowej realizacji filtracji medianowejMX2dMedian

    Prezentowany w tym rozdziale, opracowany w ramach pracy projekt MX2dMedianrealizuje sprztow filtracj medianow sygnau wizyjnego. Zaprezentowanyalgorytm zosta zaimplementowany oraz zsyntezowany do wybranego ukadu FPGA,rodziny Spartan-3A DSP. Projekt zakada prac w czasie rzeczywistym z wszystkimirozdzielczociami sygnaw HDTV, nie przekraczajcymi rozdzielczoci SXGA (1280x 1024 @ 60Hz). rdem sygnau o wymienionych parametrach jest ukad AD9398 -odbiornik, konwertujcy sygna HDMI na posta rwnoleg, wygodn do przesaniasygnau do FPGA. Rol nadajnika HDMI peni ukad AD9889B, odbierajcy sygnaz FPGA i konwertujcy go na posta HDMI. Wykorzystanie uniwersalnych sygnawwejciowych i wyjciowych HDMI lub DVI oznacza, e rdem oraz odbiornikiemsygnau musz by odpowiednie urzdzenia posiadajce interfejs HDMI lub DVI.

    Ukad FPGA taktowany jest z zewntrznego generatora sygnau zegarowego.Generator ten jest rdem dla sygnau system clock w projekcie. Jego czstotliwowynoi 100MHz. Ukady nadajnika i odbiornika HDMI taktowane s innczstotliwoci zwan w dalszej czci pracy pixel clock, ktra zmienia si wzalenoci od parametrw obrazu. Maksymalna czstotliwo pixel clock wynosi niewicej ni 80MHz dla sygnau 1280 x 1024 @ 60Hz.

    Rysunek 3.1 przedstawia ukad FPGA w otoczeniu nadajnika i odbiornikaHDMI. W dalszej czci rozdziau przedstawiono opis projektu zaimplementowanegowewntrz struktury FPGA oraz aplikacj symulujc interfejsy ukadw nadajnikai odbiornika HDMI, umoliwiajc testowanie algorytmu w zadanych warunkach,speniajcych wymogi czasowe zgodne z rzeczywistymi.

    3.1. Skrzyowanie rnych domen czasowych

    Sygna wejciowy jest przesyany do FPGA przez magistral rwnoleg,o szerokoci 24 bitw1. Odbiornik HDMI przesya t magistral po jednym bajcienieskompresowanych kanaw RGB lub YCbCr w kadym cyklu zegarowym. Oprcz

    1Szczegowy opis interfejsu zamieszczony jest w rozdziale 2.2

    22

  • Rysunek 3.1. Ukad FPGA w otoczeniu ukadw nadajnika i odbiornika HDMI.

    tego generuje sygnay synchronizacji pionowej oraz poziomej, ktre s niezbdneprzy wykrywaniu koca linii oraz koca obrazu. Odbiornik HDMI pracuje z wasnymrdem taktujcym interfejs pixel clock, zalenym od parametrw transmitowanegosygnau. Struktura FPGA taktowana jest przez sygna system clock. Sygna zodbiornika HDMI jest wic przekazywany do ukadu FGPA, pracujcego z innczstotliwoci a nastpnie, po przetworzeniu zostaje wysyany do nadajnika HDMI,ktry rwnie taktowany jest z czstotliwoci pixel clock (rys.3.2).

    W projekcie zastosowano kolejk FIFO, ktra poredniczy w przekazywaniudanych pomidzy ukadami pracujcymi w rnych domenach czasowych.Wykorzystano rdzeni IP dostpny w rodowisku projektowym ISE, za pomocktrego wygenerowano modu kolejki FIFO o odpowiednich parametrach2. Rysunek3.3 przedstawia blok FIFO z widocznymi sygnaami wejciowymi oraz wyjciowymi.Podczas parametryzacji moduu zostay wybrane tylko niezbdne sygnay sterujce,ktre wystarczaj do kontroli przepywu danych.

    Parametr Warto JednostkaSzeroko danych we/wy 27 bityGboko kolejki 64 bajtyNiezalene wejcia sygnaw zegarowych 2 -

    Tabela 3.1. Wybrane parametry FIFO

    Wygenerowany modu FIFO zosta umieszczony w projekcie zarwno do2FIFO Generator v3.4, Xilinx ISE v10.1

    23

  • Rysunek 3.2. Skrzyowanie rnych domen czasowych w FPGA.

    synchronizacji danych wejciowych, jak i wyjciowych, tak jak przedstawiono narys.3.2.

    Poniewa struktura FPGA taktowana jest zegarem o wikszej czstotliwociod odbiornika HDMI3, zapis do kolejki FIFO jest dozwolony nieprzerwanie,natomiast odczyt (oprnianie) nastpuje wwczas, gdy kolejka prawie si napeni,tzn. pozostanie w niej jeszcze tylko jedno miejsce wolne do zapisu. Stan tenzasygnalizuje sygna wyjciowy FIFO_ALMOST_FULL. Wtedy zezwolony jestodczyt danych z kolejki, ktry nastpuje do momentu, w ktrym kolejka bdzieprawie pusta (sygna FIFO_ALMOST_EMPTY ). Kontrola kolejki zrealizowanazostaa na automacie stanu, ktry zosta opisany w jzyku VHDL. Deklaracjajednostki zostaa przedstawiona na rys.3.4, a schemat dziaania na rys.3.5.

    Obsug kolejki wyjciowej zrealizowano analogicznie, z rnic polegajc natym, e nieprzerwanie trwa odczyt danych z kolejki.

    3Dla formatu SXGA sygna zegarowy HDMI jest tylko nimimalnie mniejszy od sygnau zegarowegoFPGA.

    24

  • Rysunek 3.3. Rdze IP moduu FIFO (wejcia, wyjcia zaznaczone kolorem szarym nie zostaywykorzystane w projekcie).

    Rysunek 3.4. Instancja bloku kontroli kolejk FIFO, Control_Logic.

    25

  • Rysunek 3.5. Automat stanu sterujcy prac kolejki FIFO.

    3.2. Przetwarzanie strumienia danych obrazu

    Projekt MX2dMedian umoliwia filtracj obrazu w postaci RGB oraz YCbCr.W kadej z nich filtracji podlega bezporednio kady z kanaw. Instancj moduuprzetwarzania przedstawiono na rys.3.6, natomiast rysunek 3.7 przedstawia blokowoprzepyw strumienia danych podczas algorytmu filtracji RGB. Kady z kanaw, porozdzieleniu posiada swj wasny blok filtracji, ktry jest identyczn struktur dlakadego kanau. Dla danych YCbCr filtracja przebiega analogicznie.

    RED_IN, GREEN_IN, BLUE_IN

    Omiobitowe wejcia danych. Zapis pojedynczego piksela obrazu nastpuje poprzezrwnolege wczytanie kadego z kanaw RGB lub YCbCr. Kanay YCbCrrozmieszczone s zgodnie z rys.2.5.

    D_OUT

    Dwudziestoczterobitowe wyjcie danych. Kanay RGB lub YCbCr s rozmieszczonena porcie w sposb przedstawiony w tabeli 3.3.

    26

  • Nazwa portu Szeroko Kierunek Opis

    red_in 8 We Wejcie danych, kana R lub Crgreen_in 8 We Wejcie danych, kana G lub Yblue_in 8 We Wejcie danych, kana B lub Cbd_out 24 Wy Wyjcie danych RGB lub YCbCrvsync 1 We Wejcie linii synchronizaci pionowejvsync_out 1 Wy Opnione wyjcie linii synchronizacji pionowejhsync 1 We Wejcie linii synchronizaci poziomejhsync_out 1 Wy Opnione wyjcie linii synchronizacji poziomejWINDOW_WIDTH - We Parametr generyczny definiujcy szer. oknarank - We Wybr indeksu danej wyjciowejclk 1 We Wejcie zegarowece 1 We Zezwolenie na sygna zegarowyreset 1 We Reset synchroniczny

    Tabela 3.2. Wyprowadzenia instancji przetwarzania strumienia danych obrazu Dataflow

    Zakres D_OUT KanaD_OUT(23:16) R lub CrD_OUT(15:8) G lub YD_OUT(7:0) B lub Cb

    Tabela 3.3. Rozmieszczenie kanaw na porcie wyjciowym D_OUT.

    27

  • Rysunek 3.6. Instancja bloku przetwarzania strumienia danych obrazu Dataflow.

    VSYNC, VSYNC_OUT, HSYNC, HSYNC_OUT, FIELD_IN, DE_OUT,WINDOW_WIDTH, RANK

    Opis w rozdziale 3.3

    CLK, CE, RESET

    Opis w rozdziale 3.3

    3.3. Implementacja rdzenia filtru medianowego

    Omawiany w tym punkcie rdze filtru medianowego stanowi gwn, najwaniejszcz projektu. Filtr skada si z pamici obrazu (wewntrznych linii opniajcych,opartych na pamici BlockRAM) oraz odpowiednio ze sob poczonych jednostekprocesorw pikseli i jednostki wyjciowej, odpowiedzialnej za przekazanie na wyjciefiltru odpowiednio wybranej danej.

    Wejcia i wyjcia filtru przedstawiono na rys.3.8 i opisano w tabeli 3.4.

    28

  • Rysunek 3.7. Przetwarzanie strumienia danych obrazu RGB.

    Nazwa portu Szeroko Kierunek Opis

    d_in 8 We Wejcie danychd_out 8 Wy Wyjcie danychvsync 1 We Wejcie linii synchronizaci pionowejvsync_out 1 Wy Opnione wyjcie linii synch. pionowejhsync 1 We Wejcie linii synchronizaci poziomejhsync_out 1 Wy Opnione wyjcie linii synch. poziomejWINDOW_WIDTH - We Par. generyczny definiujacy szer. oknarank - We Wybr indeksu danej wyjciowejclk 1 We Wejcie zegarowece 1 We Zezwolenie na sygna zegarowyreset 1 We Reset synchroniczny

    Tabela 3.4. Wyprowadzenia instancji rdzenia filtru.

    29

  • Rysunek 3.8. Instancja rdzenia filtru medianowego

    DIN, DOUT

    Omiobitowe wejcie i wyjcie danych w formatach std_logic_vector. Danewyjciowe s generowane z kadym cyklem zegarowym. Ze wzgldu na zastosowanieprzetwarzania potokowego, dane wyjciowe pojawiaj si z opnieniem 4 cyklizegarowych wzgldem danych wyjciowych.

    VSYNC, VSYNC_OUT, HSYNC, HSYNC_OUT

    Linie synchronizacji pionowej i poziomej wymagane do odpowiedniego sterowaniaprzepywem danych obrazu. Ze wzgldu na zastosowanie przetwarzania potokowego,linie VSYNC_OUT oraz HSYNC_OUT s opnione o 4 cykle zegarowe wzgldemlinii wejciowych VSYNC i HSYNC.

    WINDOW_WIDTH

    Parametr generyczny typu integer, umoliwiajcy parametryzacj filtru. Moeprzyjmowa tylko dozwolone wartoci (tab.3.5), ktre determinuj szeroko oknafiltracji danych.

    30

  • Warto Rozmiar okna filtru

    WINDOW_WIDTH = 3 3 x 3WINDOW_WIDTH = 5 5 x 5WINDOW_WIDTH = 7 7 x 7

    Tabela 3.5. Dozwolone wartoci parametru generycznego WINDOW_WIDTH.

    RANK

    Parametr typu integer, ktry moe przyjmowa wartoci od 0 do 48. Okrelaindeks danej, ktra z okna filtracji ma by przekazana na port wyjciowy. W celuotrzymania filtracji medianowej, parametr ten musi wskazywa na rodkowy4

    element okna (tab.3.6). Parametr RANK przekazywany jest w gb struktury filtrudo komponentu jednostki wyjciowej (szczegowy opis w rozdziale 3.8.

    Okno Ilo pikseli w oknie Warto par. rank

    3 9 45 25 127 49 24

    Tabela 3.6. Wartoci parametru rank dla filtracji medianowej.

    CLK

    Wejcie sygnau zegarowego dla wszystkich elementw w strukturze filtru.

    CE

    Zezwolenie na sygna zegarowy. Jeli CE przyjmuje warto 0, praca rdzenia filtruzostaje wstrzymana.

    RESET

    Synchroniczny reset, zerujcy wszystkie wewntrzne rejestry w strukturze rdzeniafiltru.

    4Prezentowana struktura filtru pozwala na zastosowanie jej dla filtracji maksymalnej i minimalnejpoprzez zmian wartoci parametru rank

    31

  • 3.4. Architektura rdzenia filtru medianowego

    Dla uproszczenia, w tym rozdziale skoncentrowano si na opisieelementw sparametryzowanych dla okna 3 x 3. Dla wikszych okien (5 x 5oraz 7 x 7) zasada dziaania i rozmieszczenie elemetw s analogiczne, co dokadnieomwiono podczas opisywania procesu parametryzacji i zagadnie z nim zwizanychw rozdziale 3.7.

    Rysunek 3.9. Struktura rdzenia filtru dla okna 3 x 3.

    Budowa wewntrzna rdzenia filtru bazuje na zaoeniach przedstawionychw rozdz.2.4. Rysunek 3.9 ilustruje przepyw danych wewntrz struktury filtru.Dane wejciowe D_IN zapisywane s w Bloku Pamici Linii Obrazu, nastpnieprzesyane do matrycy procesorw pikseli P0...8, ktrej ukad odpowiada strukturzezaproponowanej w rozdz.2.4, rys.2.12. Budowa pojedynczego procesora pikselizostaa oparta o wiedz przedstawion w rozd.2.4, rys.2.13 i dokadnie opisana

    32

  • w kolejnym razdziale (3.6). Konieczne s rwnie trzy bloki P9..10, bdceuproszczonymi wersjami procesorw pikseli, posiadajce jedynie rejestry danych. Ichzamieszczenie jest konieczne ze wzgldu na zastosowanie przetwarzania potokowego,ktre omwiono szczegowo w dalszej czci pracy. Zadaniem Jednostki Wyjciowejjest zwrcenie wyniku (D_OUT), bdcego zawartoci odpowiedniego rejestruprocesorw P3...105, wybieran na podstawie porwnania dokonanego w procesorachP0...8.

    3.5. Blok pamici linii obrazu

    Uproszczon budow Bloku Pamici Linii Obrazu z rys.3.9 przedstawiono narys.3.10. Skada si on z kontrolera pamici Circle Control oraz kilku jednostekpamici linii obrazu.

    Rysunek 3.10. Blok pamici linii obrazw.

    Zgodnie z zaoeniamu projektowymi, maksymalna szeroko przetwarzanego5Gdyby w strukturze filtru nie zastosowano przetwarzania potokowego, wwczas byyby to rejestry

    P0...8.

    33

  • obrazu wynosi 1280 pikseli. Z tego powodu, kada linia pamici obrazu mapojemno 1280 bajtw. Jeli przetwarzany obraz posiada mniejsz rozdzielczo,linia obrazu nie jest zapisywana do koca.

    Liczba linii pamici obrazu determinowana jest wielkoci okna filtracji. Dlaokna o rozmiarach 3 x 3 tworzone s 3 linie obrazu. Analogicznie dla okna N x Ngenerowanych jest N linii obrazu.

    Tabela 3.7 przedstawia ilo wykorzystanych zasobw Block RAM przez rdzefiltru w zalenoci od rozmiarw okna filtraji.

    Okno Generowana ilo pamici Block RAM

    3 x 3 3840 Bajtw5 x 5 6400 Bajtw7 x 7 8960 Bajtw

    Tabela 3.7. Ilo generowanej pamici obrazu dla rnych rozmiarw okna (dla jednego kanau:R, G, B lub Y).

    Jednostka sterujca zapisem do pamici Circle Control (rys.3.11) generuje adresy,pod ktre wykonywany jest zapis przychodzcych danych obrazu oraz adresy,spod ktrych nastpuje odczyt danych i przesanie ich do macierzy procesorwpikseli. Po wykryciu sygnau synchronizacji poziomej VSYNC, bdcej znakiemrozpoczcia nowej ramki obrazu, zaczyna zapenia lini 0 danymi wejciowymi.Kade pojawienie si sygnau synchronizacji pionowej HSYNC jest znakiem dorozpoczcia zapisu nastpnej linii w kolejnoci przedstawionej na rys.3.12.

    Rysunek 3.11. Instancja kontrolera zapisu i odczytu pamici Circle_Conrtol.

    34

  • Nazwa portu Szeroko Kierunek Opis

    r_vs 1 We Wejcie linii synchronizacji pionowejaddra 11 Wy Wyjcie adresowe dla portu aaddrb 11 Wy Wyjcie adresowe dla portu bline_en WINDOW_WIDTH Wy Wyjcie zezwolenia na zapis danej liniiclk 1 We Wejcie zegarowece 1 We Zezwolenie na sygna zegarowyreset 1 We Reset synchroniczny

    Tabela 3.8. Wyprowadzenia instancji Circle_Control

    R_VS

    Wejcie linii synchronizacji pionowej. Po wykryciu impulsu na tym wejciu, kontrolerkoczy zapis aktualnej linii i zaczyna umieszcza dane wejciowe w linii nastpnej(rys.3.12) poprzez zmian ustawienia bitw portu wyjciowego LINE_EN.

    ADDRA, ADDRB

    Wyjcia adresowe kontrolera dla portu a oraz b pamici obrazu.

    LINE_EN

    Port wyjciowy o definiowanej szerokoci WINDOW_WIDTH. Steruje wyboremlinii pamici poprzez ustawienie na odpowiednim miejscu jedynki logicznej. Portten pracuje w kodzie 1 z WINDOW_WIDTH, co oznacza, e w danym momencietylko jeden bit portu jest aktywny.

    CLK, CE, RESET

    Jak w 3.3.

    Rysunek 3.12. Zapis kolejnych linii obrazu.

    35

  • Pojedyncza linia pamici zostaa zaprojektowana w oparciu o generator rdzeniIP, dostpny w rodowisku projektowym ISE6. Jest to dwuportowa pami, opartana komrkach Block RAM dostpnych w strukturze FPGA (rys.3.13). Oznacza to,e w jednym cyklu zegarowym moe by jednoczenie dokonany odczyt i zapis dopamici. Zostaa ona skonfigurowana w taki sposb, e zapis moliwy jest jedynieprzez jej port a, natomiast odczyt przez port b.

    Rysunek 3.13. Rdze IP pamici pojedynczej linii obrazu Line RAM (wejcia, wyjciazaznaczone kolorem szarym nie zostay wykorzystane w projekcie)

    .

    DINA, DOUTB

    Wejcie i wyjcie danych pamici. Omawiana pami dwuportowa zostaaskonfigurowana w sposb umoliwiajcy wpis danych przez port a, natomiast odczytprzez port b

    6Block Memory Generator v.2.7, Xilinx ISE v10.1

    36

  • Nazwa portu Szeroko Kierunek Opis

    addra 11 We Wejcie adresowe portu adina 8 We Wyjcie danych portu awea 1 We Zezwolenie na zapis portu aclka 1 We Wejcie zegarowe portu aaddrb 11 We Wejcie adresowe portu bdoutb 8 Wy Wyjcie danych portu bclkb 1 We Wejcie zegarowe portu a

    Tabela 3.9. Wyprowadzenia instancji pamici Line RAM

    ADDRA, ADDRB

    Wyjcia adresowe pamici dla portu a oraz b pamici obrazu.

    WEA

    Ustawienie tego wejcia w stan jedynki logicznej umoliwia zapis danej do portu apod dany adres.

    CLKA, CLKB

    Wejcia sygnau zegarowego dla portu a i portu b. W projekcie obydwa wejcia staktowane tym samym sygnaem zegarowym.

    3.6. Procesor pikseli

    Sercem w strukturze filtru z rys.3.9 jest macierz procesorw pikseli. Do nichtrafiaj dane z bloku pamici linii obrazu i w nich dokonywana jest najwaniejszaoperacja filtracji - sortowanie poprzez obliczanie indeksu kadego bajtu. Rysunek3.14 przedstawia wewntrzn budow pojedynczej komrki procesora pikseli dlaokna o rozmiarach 3 x 3. Dla wikszych rozmiarw okien odpowiednie elementystruktralne ulegaj powieleniu, co dokadnie opisano w rozdziale 3.7. Strukturprocesora opisano kadc nacisk na kodowanie w stylu RTL, ktry zosta szczegowoopisany w [1].

    Procesor skada si z nastpujcych elementw7:7Dokadny opis elementw widocznych na rys.3.9 zamieszczono w rozdziale 3.10.

    37

  • Rysunek 3.14. Pojedyncza komrka procesora pikseli dla okna 3 x 3.

    38

  • Data_Register - DR - rejestr przechowujcy wczytan warto danejwejciowej,

    Line_Comparator (

  • Krok 3 - Konwertuj indeksy

    Sumowanie jedynek zapisanych w rejestrze CR w asynchronicznej jednostce BSw celu przeksztacenia wag na posta numeryczn. Nastpnie wpisanie danych dojednostki wyjciowej Output_unit.

    Krok 4 - Demultipleksuj wynik

    Porwnianie wag danych zapisanych we wszystkich procesorach (P0 - P8) orazprzekazanie przez demultiplekser na wyjcie tej danej, ktrej waga jest rwnaparametrowi RANK.

    Przedstawiony powyej algorytm wymaga czterech cykli zegarowych od momentuotrzymania danej wejciowej do mementu zwrcenia wyniku. Fakt, e wszystkiewewntrzne elementy s synchroniczne, umoliwi zastosowanie potokowegoprzetwarzania danych (rys.3.15). W ten sposb dane wyjciowe generowane sw kadym cyklu zegarowym, lecz z opnieniem 4 cylki. Opnienie wynikajcez zastosowania przetwarzania potokowego determinuje zastosowanie procesorw P9-P11. S uproszczonymi wersjami procesora pikseli, posiadajcymi jedynie rejestrDR. Umieszczono je w strukturze z koniecznoci opnienia danych przesyanych dojednostki wyjciowej.

    Rysunek 3.15. Przetwarzanie potokowe zastosowane w rdzeniu filtru medianowego.

    40

  • 3.7. Parametryzacja filtru

    Jzyk opisu sprztu VHDL umoliwia kodowanie w taki sposb, by w zalenociod odpowiednich parametrw lub warunkw generowane byy dane zasoby.W rozdziale 3.6 przedstawiono opis rdzenia filtru projektu MX2dMediansparametryzowanego dla okna 3 x 3. Dla wikszych rozmiarw okien potrzebawicej zasobw wewntrzych, by pomieci wiksz ilo linii obrazu, elementwokna, itd. W tabeli 3.10 i 3.11 przedstawiono ilo wykorzystanych zasobww rdzeniu filtru oraz w pojedynczej komrce procesora, ktrych ilo jestobliczana i generowana automatycznie w zalenoci od parametru generycznegoWINDOW_WIDTH .

    Nazwa elementu Okno 3x3 Okno 5x5 Okno 7x7

    Line RAM 3 5 7Circle Control 1 1 1Processor 9 25 49Processor (tylko rejestr D) 3 5 7Output Unit 1 1 1

    Tabela 3.10. Liczba elementw strukturalnych rdzenia filtru w zalenoci rozmiarw okna.

    Nazwa elementu Okno 3x3 Okno 5x5 Okno 7x7

    Data Register 1 1 1Line Comparator 3 5 7Compare Register 1 1 1Bit Sum All 1 1 1

    Tabela 3.11. Liczba elementw strukturalnych pojedynczego procesora pikseli w zalenoci odrozmiarw okna.

    Parametr generyczny WINDOW_WIDTH podawany jest podczastzw. parametryzacji komponentu. W projekcie MX2dMedian naley podawarto parametru w specjalnie wyszczeglnionej sekcji przedstawionym na list.3.1.

    Listing 3.1. Sekcja parametryzacji rdzenia filtru.

    1 2 USER PARAMETRIZE SECTION 3 USE THIS SETTINGS TO PARAMETRIZE FILTER CORE

    41

  • 4 5

    6 CHOOSE WINDOW WIDTH 7 constant WINDOW_WIDTH : i n t e g e r range 3 to 7 := 3 ; window 3x38 cons tant WINDOW_WIDTH : i n t e g e r range 3 to 7 := 5; window 5x59 cons tant WINDOW_WIDTH : i n t e g e r range 3 to 7 := 7; window 7x710

    11 constant MEDIAN : i n t e g e r range 0 to 48 := (WINDOW_WIDTH2) /2 ;12 constant MINIMUM : i n t e g e r range 0 to 48 := 0 ;13 constant MAXIMUM : i n t e g e r range 0 to 48 := WINDOW_WIDTH1;14

    15 CHOOSE FILTER RANK 16 constant RANK : i n t e g e r range 0 to 48 := MEDIAN; median f i l t e r17 cons tant RANK : i n t e g e r range 0 to 48 := MINIMUM; minimum f i l t e r18 cons tant RANK : i n t e g e r range 0 to 48 := MAXIMUM; maximum f i l t e r19

    20 21 END OF USER PARAMETRIZE SECTION 22

    W liniach 7-9 umieszczono wybr rozmiarw okna. W zalenoci od potrzeb,naley wybra jeden z trzech moliwych rozmiarw okien: 3 x 3, 5 x 5, 7 x 7. Lnie11-13 definiuj odpowiednie wartoci parametru RANK dla wybranego rozmiaruokna, zgodnie z opisem zamieszczonym w tabeli 2.4, rozdz.2.4. Nastpnie, w liniach16-18 dokonywany jest wybr filtracji: medianowej, minimalnej, maksymalnej. Wpracy skoncentrowano si na przedstawieniu zastosowania projektu MX2dMediando filtracji medianowej, ale zmieniajc jedynie warto parametru RANK z filtrumedianowego otrzyma mona filtr maksymalny lub minimalny bez zmianystruktury filtru.

    3.8. Jednostka wyjciowa

    Jednostka wyjciowa skada si z bloku komparatorw oraz demultipleksera. Dowej BS_IN podczone s wyjcia indeksw z kaego z procesorw w strukturzefiltru, natomiast do wej D_IN wyjcia rejestrw danych kadego procesora.Zadaniem jednostki wyjciowej jest porwna wartoci indeksw na wejciach BS_INz wartoci parametru RANK. Jeli wejcie indeksowe BS_IN[n] bdzie rwneparamertowi RANK, bdzie to oznaczao, e w procesorze P[n] znajduje si dana,ktr naley zwrci na wyjcie D_OUT. Wewntrzny demultiplekser przekae wicna wyjcie D_OUT dan z portu D_IN[n].

    42

  • Jednostka wyjciowa Output_Unit jest parametryzowana przez parametrdefiniujcy szeroko okna filtru WINDOW_WIDTH. Dla okna 3 x 3 bdzieposiadaa 9 wej BS_IN oraz 9 wej D_IN, analogicznie dla okna o rozmiarachN x N ilo tych wej wynosi bdze N2.

    Rysunek 3.16. Instancja jednostki wyjciowej filtru Output_Unit.

    BS_IN

    Wejcia indeksowe o szerokoci 7 bitw. Ilo portw BS_IN jest zalena odparametru WINDOW_WIDTH i wynosi WINDOW_WIDTH2. Kade z wejposiada swj komparator, w ktrym jest porwnywane z parametrem RANK.

    D_IN

    Wejcia danych o szerokoci 8 bitw. Ilo portw D_IN jest zalena od parametruWINDOW_WIDTH i wynosi WINDOW_WIDTH2. Porty D_IN stanowi wejciademultipleksera i w kadym cylku zegarowym jedno z nich przekierowane zostaje nawyjcie.

    43

  • Nazwa portu Szeroko Kierunek Opis

    bs_in 7 We Wejcie indeksowed_in 8 We Wyjcie danychd_out 8 Wy Wyjcie danychrank - We Wybr indeksu danej wyjciowejWINDOW_WIDTH - We Wejcie parametryzujceclk 1 We Wejcie zegarowereset 1 Wy Synchroniczny resetce 1 We Zezwolenie na sygna zegarowy

    Tabela 3.12. Wyprowadzenia instancji jednostki wyjciowej Output_Unit.

    D_OUT

    Wyjcie danych o szerokoci 8 bitw, bdce wyjciem wyniku filtracji. Jest wyjciemwewntrznego demultipleksera.

    RANK

    Wejcie typu integer, ktre moe przyjmowa wartoci z zakresu 0 - 48. RANKjest drugim wejciem kadego z komparatorw wej BS_IN. Odpowiednie dobranieparametru RANK determinuje zachowanie filtru jako medianowego, minimalnegolub maksymalnego (rozdzia 3.3.)

    WINDOW_WIDTH

    Parametr generyczny, szeroko okna filtracji. Definiuje ilo portw BS_IN i D_IN,ilo wewntrznych komparatorw oraz szeroko demultipleksera zwracajcegowynik.

    CLK, CE, RESET

    Jak w 3.3.

    3.9. Opnienia sygnaw synchronizacji pionoweji poziomej

    Sygnay synchronizacji pionowej VSYNC i poziomej HSYNC s potrzebnew cyfrowym formacie przesyu obrazu do zaznaczenia momentu koca linii i koca

    44

  • ramki obrazu. W rdzeniu filtru zastosowano przetwarzanie potokowe o gbokocikolejki rwnej 4. Oznacza to, e czas propagacji pojedyczego piksela przez rdzefiltru wynosi 4 cylke zegarowe. Samo przekazanie sygnaw synchronizacji z wejciafiltru na wyjcie skutkowaoby rozbienoci miedzy nimi, a sygnaem danych o 4cykle zegarowe. By tego unikn zastosowano opnienie sygnaw synchronizacjipoprzez zostosowanie czterech przerzutnikw synchronicznych wpitych szeregowow kad z lini synchronizacji.

    3.10. Budowa wewntrzna procesora pikseli

    W tym rozdziale zamieszczono opis elementarnych jednostek (rys.3.14) wchodzcychw budow procesora pikseli.

    3.10.1. Rejestr danych i rejestr indeksw

    Jednostka Data Register po odpowiedniej parametryzacji jest stosowana jako rejestrdanych DR i rejestr indeksw CR. S to synchroniczne rejestry rnice si midzysob jedynie szerokoci. Parament generyczny WIDTH definiuje szeroko danegorejestru, ktra dla rejestru DR wynosi 8 bitw, natomiast dla rejestru CR wynosiWINDOW_WIDTH2 bitw. Szeroko ta wynika z iloci bitw z komparatorw dozapamitania. Jest ona kwadratem szerokoci okna.

    Rysunek 3.17. Instancja jednostki Data Register penicej rol DR i CR.

    D_IN

    Parametryzowane wejcie rejestru o szerokoci okrelonej parametremWIDTH. Wpisdo rejestru odbywa si przy narastajcym zboczu zegarowym oraz wysokim stanielinii CE.

    45

  • Nazwa portu Szeroko Kierunek Opis

    d_in WIDTH We Wejcie danychd_out WIDTH Wy Wyjcie danychWIDTH - We Parametr generyczny definiujcy szerokoclk 1 We Wejcie zegarowece 1 We Zezwolenie na sygna zegarowyreset 1 We Reset synchroniczny

    Tabela 3.13. Wyprowadzenia instancji Data_Register.

    D_OUT

    Parametryzowane wyjcie rejestru o szerokoci okrelonej parametrem WIDTH.

    CLK, CE, RESET

    Jak w 3.3.

    3.10.2. Bloki komparatorw

    Element Comparator jest to synchroniczna jednostka, porwnujca dwa bajtywejciowe i zwracajce wynik porwnania w nastpnym cylku zegarowym.

    Rysunek 3.18. Instancja jednostki Comparator LC.

    46

  • Nazwa portu Szeroko Kierunek Opis

    d_in 8 We Wejcie danychline_din 8 We Wejcie danychcmp_out 1 Wy Wynik porwnaniaclk 1 We Wejcie zegarowece 1 We Zezwolenie na sygna zegarowyreset 1 We Reset synchroniczny

    Tabela 3.14. Wyprowadzenia jednostki Comparator.

    D_IN, LINE_DIN

    Omiobitowe wejcia komparatora. Porwnanie wartoci tych dwch wej nastpujew trybie unsigned, co oznacza, e porwnywane wejcia traktowane s jak liczbybez znaku. Porwnanie nastpuje przy narastajcym zboczu sygnau zegarowegoi wysokim stanie linii CE.

    CMP_OUT

    Jednobitowe wyjcie komparatora, przyjmujce stan jedynki logicznej, gdyLINE_DIN < D_IN i zera logicznego, gdy LINE_DIN D_IN

    CLK, CE, RESET

    Jak w 3.3.

    3.10.3. Blok Sumy Bitowej

    Wejciem bloku Bit Sum All jest parametryzowanej szerokoci port. Dlamaksymalnej szerokoci okna filtru jego szeroko wynosi 49. Wyjciem jednostkijest liczba odpowiadajca sumie wszystkich jedynek, ktre pojawiy si na porciewejciowym. Maksymalny wynik, czyli 48 otrzymany zostanie, gdy jednostkazostanie sparametryzowana dla szerokoci okna wynoszcej 7 oraz na wejciu pojawisi same jedynki. Liczb t mona zapisa na 7 bitach, std szeroko portuwyjciowego.

    D_IN

    Parametryzowany port wejciowy o szerokoci bdcej kwadratem szerokoci oknafiltru, WINDOW_WIDTH2.

    47

  • Rysunek 3.19. Instancja Bit Sum All - BS.

    Nazwa portu Szeroko Kierunek Opis

    d_in WINDOW_WIDTH2 We Wejcie danychd_out 7 Wy Wyjcie danychWINDOW_WIDTH - We Par. generyczny, szer. okna filtru

    Tabela 3.15. Wyprowadzenia instancji Bit Sum All.

    D_OUT

    Siedmiobitowe wyjcie, bdce sum jedynek wystpujcych na porcie wejciowym.

    WINDOW_WIDTH

    Paramert generyczny, szeroko okna filtru, w ktrym montowana jest jednostkaBit_Sum.

    3.11. Moliwoci rozbudowy rdzenia filtru

    Zaprezentowana architektura filtracji w projekcie MX2dMedian otwiera drzwi dodalszej rozbudowy i udoskonalenia algorytmu. Jedn z moliwoci modyfikacji,ktra skutkowaaby zmniejszeniem zasobw potrzebnych do implementacji w FPGAmoga by by filtracja tylko jednego kanau: luminancji Y. Skadowa ta byabyobliczana na podstawie danych wejciowych RGB, nastpnie trafiaaby do rdzeniafiltru. Ten jednak nie zwracaby wartoci, tylko indeks danej wynikowej w okniefiltracji. Wybrieranie indeksu odbywaoby si na podstawie sortowania kanauY, a pene skadowe barwy RGB przechowywane byyby w pamici. Wynikfiltracji byby dan wyjciow pamici o indeksie (adresie) wskazanym przez modufiltracji Y.

    W celu uzyskania tak dziaajcego filtru, w projekcie MX2dMedian naleaoby

    48

  • zmodyfikowa jednostk wyjciow Output Unit, doda pami do przechowywaniadanych RGB, czekajcych na wynik filtracji oraz stworzy now jednostk sterujc.

    Dla strumienia wejciowego YCbCr to rozwizanie skutkowaoby jeszczewikszym uproszczeniem struktury, poniewa sygna luminancji Y nie musiabyby obliczany. Dokonywaa by si filtracja kanau Y, natomiast pena informacjao obrazie (kanay YCbCr) przechowywana byaby w pamici, a nastpnie,analogicznie z tym co opisano dla filtracji RGB, przekazywana na wyjcie filtru.

    49

  • ROZDZIA 4

    Wyniki

    4.1. Weryfikacja poprawnoci dziaania projektuMX2dMedian

    Zaprezentowany w poprzednim rozdziale algorytm podczas procesu projektowaniaby na bieco weryfikowany. Aplikacja weryfikujca poprawno dziaania filtrumedianowego oraz poszczeglnych elementw projektu MX2dMedian powstawaawraz z nim i jako jego nieodczna cz. Takie podejcie zapewnio bardzo wczesnewykrywanie bdw zwizanych z nieprawidociami dziaania algorytmu.

    Aplikacja weryfikujca zostaa napisana w jzyku VHDL i uruchomionaw rodowisku Mentor Graphics ModelSim XE III 6.3c. Pooono nacisk nazgodno interfejsw z rzeczywistymi ukadami HDMI Analog Devices, ktrezostay opisane w rozdziale 2.2. Z wykorzystaniem waciwociwoci jzyka VHDLudao si przenie do programu symulacjynego zalenoci czasowe pomidzyposzczeglnymi sygnaami, dziki czemu uzyskano symulacj dziaania algorytmuw czasie rzeczywistym. Sygnaem wejciowym i wyjciowym jest obraz zapisany wpostaci mapy bitowej w formacie ASCII PPM. Jest on odczytywany przez processymulacji odbiornika HDMI i przekazywany do procesu symulacyjnego projektuMX2dMedian, a nastpnie odbierany przez symulator nadajnika HDMI po czymzapisywany na dysku twardym komputera (rys.4.1).

    Listing 4.1. Deklaracja komponentu rodowiska symulacjynego.

    1 COMPONENT MX2dMedian2 PORT(3 RESET_N : IN s td_log i c ;4

    5 Externa l 100MHz Clock Generator 6 CLK_100MHz : IN s td_log i c ;7

    8 HDMI Receiver 9 S i g n a l s are compa t i b i l e wi th Analog Devices HDMI Reciever : AD939810 R_RED : IN s td_log ic_vector (7 downto 0) ;11 R_GREEN : IN s td_log ic_vector (7 downto 0) ;

    50

  • Rysunek 4.1. Schematyczne przedstawienie poczenia projektu MX2dMedian z aplikacjsymulacyjn.

    12 R_BLUE : IN s td_log ic_vector (7 downto 0) ;13 R_DATACK : IN s td_log i c ;14 R_HSOUT : IN s td_log i c ;15 R_VSOUT : IN s td_log i c ;16 R_FIELD : IN s td_log i c ;17

    18 HDMI Transmitter 19 S i g n a l s are compa t i b i l e wi th Analog Devices HDMI Tranmitter : AD9889B20 T_CLK : OUT s td_log i c ;21 T_VSYNC : OUT s td_log i c ;22 T_HSYNC : OUT s td_log i c ;23 T_DE : OUT s td_log i c ;24 T_D : OUT s td_log ic_vector (23 downto 0) ) ;25 ENDCOMPONENT;

    Na listingu 4.1 przedstawiono wszystkie wejcia i wyjcia aplikacji symulacyjnej.W linii 3 umieszczono reset, ktry odpowiada resetowi zamontowanemu na pycieMMXS3DSP-AV w postaci przycisku monostabilnego. Stanem aktywnym jest zerologiczne, co odpowiada naciniciu przycisku na pycie. W linii 6 deklaracja wejciasygnau zegarowego, natomiast deklaracj interfejsu odbiornika HDMI umieszczonow liniach 10-16, a nadajnika HDMI w liniach 20-24.

    4.1.1. Algorytm dziaania programu symulacyjnego

    Architektur algorytmu symulacyjnego tworz nastpujce instrukcje wspbiene:

    51

  • 1. Wczytywanie obrazu z dysku (list. 4.3),

    2. Zapisywanie obrazu na dysk (list. 4.4),

    3. Symulacja odbiornika HDMI wraz sygnaami sterujcymi (list. 4.5),

    4. Symulacja nadajnika HDMI (list. 4.6),

    5. Proces zegara systemowego (list. 4.7),

    6. Instancja komponentu projektu MX2dMedian (list. 4.1).

    Instrukcje (1) oraz (2) uruchamiane s jednorazowo. Instrukcja (1) na pocztkusymulacji, natomiast (2) na kocu. W (3) zamieszczono gwny proces symulacjiodbiornika HDMI oraz sygnay ni sterujce. Jego dziaanie mona przedstawi wkilku krokach:

    1. Inicjalizacja tablic w pamici RAM dla obrazu wejciowego i obrazuwyjciowego.

    2. Wczytanie obrazu z dysku komputera do tablicy (1).

    3. Globalny reset FPGA.

    4. Symulacja nadajnika HDMI - przesanie obrazu.

    5. Zapisanie tablicy z obrazem wyjciowym - wynikiem symulacji (2) - na dyskkomputera.

    Wspbienie do powyej przedstawionego algorytmu dziaa proces symulacjiodbiornika (4), ktry przechwytuje dane wyjciowe projektuMX2dMedian i zapisujeje w tablicy przeznaczonej dla obrazu wynikowego.

    4.1.2. Wczytywanie i zapis obrazu

    Odczyt obrazu z pliku i jego zapis zrealizowano bazujc na bibliotece std.TextIO.Przygotowano obraz testowy w formacie PPM. W formacie tym warto kanawRGB kadego piksela zapisana jest w postaci znakw ASCII, dziki czemu moliwyjest odczyt za pomoc funkcji readline oraz read i zapis za pomoc funkcji writelineoraz write, dostpnych w bibliotece std.TextIO. Na listingu 4.2 przedstawionoinicjalizacj tablicy, do ktrej po uruchomieniu symulacji zostanie wczytany obrazwejciowy input_img_mem (linia 8) oraz tablicy do przechowywania wynikwfiltracji output_img_mem (linia 9). Tablice posiadaj rozmiar, ktry obliczany jest

    52

  • na podstawie zadeklarowanych staych WIDTH i HEIGHT - szerokoci i wysokociobrazu testowego w pikselach.

    Listing 4.2. Sygnay i zmienne wykorzystane do obsugi odczytu i zapisu obrazu.

    1 Simulat ion s i g n a l s and cons tan t s

    2 constant WIDTH : i n t e g e r := 1280 ; 12803 constant HEIGHT : i n t e g e r := 100 ; 10244 constant IMG_RES : i n t e g e r := WIDTHHEIGHT;5

    6 Simulat ion Image memory

    7 type RAM i s array (0 to IMG_RES31) of i n t e g e r range 0 to 255 ;8 signal input_img_mem : RAM;9 signal output_img_mem : RAM;10 FILE input_img : TEXT open read_mode IS " images /img .ppm" ;11 FILE output_img : TEXT open write_mode IS " images /img_out .ppm" ;

    Listing 4.3 przedstawia proces wczytania obrazu testowego do uprzedniozadeklarowanej tablicy. Jest on uruchamiany tylko raz, na pocztku symulacji. PlikPPM rozpoczyna si nagwkiem, ktrego odczyt i analiza jest zbdna dla potrzebsymulacji. W liniach 13-18 nagwek jest zczytywany i ignorowany. Nastpnie,w liniach 20-28 umieszczono ptl odczytujc po kolei kad lini obrazu, ktradziaa a do znaku koca pliku.

    Zapis wynikowego pliku symulacji na dysk (list.4.4) przebiega analogiczniei wykonywany jest jako ostatni proces symulacji. Zachowany zostaje plik wynikowyw formacie PPM.

    Listing 4.3. Proces inicjalizacji pamici rodowiska symulacyjnego przez wczytanie do niejobrazu do filtracji.

    1 This proces s can be run only once .2 I t i n i t i a l i z e s the input_img_mem by load ing image f i l e3 load_img : process ( load_img_trigger )4 variable row : l i n e ;5 variable data : i n t e g e r ;6 variable blank : cha rac t e r ;7 variable i : i n t e g e r ; count v a r i a b l e8 begin9 i f load_img_trigger = 1 then10 i f open_init = 0 then run only once

    53

  • 11 open_init
  • 18 wr i t e l i n e ( output_img , row ) ;19 data := WIDTH;20 wr i t e ( row , data ) ;21 blank := ;22 wr i t e ( row , blank ) ;23 data := HEIGHT;24 wr i t e ( row , data ) ;25 wr i t e l i n e ( output_img , row ) ;26 data := 255 ;27 wr i t e ( row , data ) ;28 wr i t e l i n e ( output_img , row ) ;29 while i < (IMG_RES81)3 loop30 for y in 0 to 23 loop31 data := output_img_mem( i ) ;32 wr i t e ( row , data ) ;33 wr i t e ( row , blank ) ;34 i := i + 1 ;35 end loop ;36 wr i t e l i n e ( output_img , row ) ;37 end loop ;38 end i f ;39 end i f ;40 end process save_img ;

    4.1.3. Procesy symulacji nadajnika i odbiornika HDMI

    W procesie symulacji odbiornika HDMI (list.4.5) zawarto sygnay sterujcesymulacj. Algorytm ten wykonywany jest sekwencyjnie. Na pocztku wystpujeglobalny reset (linia 4, 12). W trakcie jego trwania wymuszany jest proces zapisuobrazu testowego do zadeklarowanej tablicy (linie 7-9). Nastpnie rozpoczynasi symulacja dziaania odbiornika HDMI. W podwjnie zagniedonej ptlifor odczytywane s bajt po bajcie wartoci kanaw RGB i przekazywane naodpowiednie porty. Po zakoczeniu dziaania pli for zostaje wymuszony zapisdanych tablicy wyjciowej (linie 42-44). Sygnay na portach generowane przezproces odbiornika HDMI s wczytywane przez wspbienie dziaajcy procesfiltracji w projekcie MX2dMedian. Dane wyjciowe (obraz po filtracji) s na biecoodbierane przez proces symulacji nadajnika HDMI (list.4.6) i zapisywane do tablicywyjciowej.

    Listing 4.5. Proces symulacji odbiornika HDMI wraz z instrukcjami sterujcymi

    55

  • 1 c on t r o l : process2 variable i : i n t e g e r := 0 ; count v a r i a b l e3 begin4 RESET_N
  • 43 wait for 5 ns ;44 save_img_trigger
  • 4 wait for 5 ns ;5 CLK_100MHz
  • Rysunek 4.3. Okno programu ModelSim podczas testw FIFO. Widoczne trzy cyklezapeniania i odczytu kolejki zaznaczono numerami 1-3.

    4.3. Weryfikacja poprawnoci dziaania rdzenia filtru

    Do weryfikacji poprawnoci dziaania algorytmu filtracji MX2dMedian posuyobraz testowy, wczytywany do rodowiska symulacyjnego ModelSim. Zgodniez zaoeniem projektowym, maksymalna rozdzielczo testowanego obrazu wynosi1280 x 1024. Wczytanie tak obszernego pliku do rodowiska symulacyjnego okazaosi niemoliwe, dlatego testy przeprowadzono na wycinku obrazu. Poniewa podczasfiltracji okno filtru jest przesuwane horyzontalnie po testowanym obrazie (rozdz.2.3, rys.2.11) do poprawnego przetestowania algorytmu niezbdne musiao byzachowanie szerokoci obrazu rwnej wartoci maksymalnej (1280), natomiastrozmiar obrazu mona byo zmniejszy, zmiejszajc wysoko obrazu. W zwizkuz tym, jako obraz testowy posuy wycinek o rozdzielczoci 1280 x 100 (rys. 4.4).Na obraz testowy zosta sztucznie naniesiony szum typu salt and pepper.

    Przeprowadzono symulacj dla 3 rnych rozmiarw okien:

    3 x 3, rys.4.5,

    5 x 5, rys.4.6,

    7 x 7, rys.4.7.

    Brak szumu na obrazach wyjciowych (rys.4.8) potwierdza poprawnoimplementacji filtru w projekcie MX2dMedian. Na rysunku 4.8 przedstawionozblienie czci obrazw. Po filtracji oknem 3 x 3 (rys.4.8-B) znika wikszo szumutypu salt and pepper z obrazu testowego, co jest zachowaniem poprawnym, poniewananiesiony szum by szumem jednopikselowym. Filtracja oknem 5 x 5 (rys.4.8-C)jeszcze dokadniej usuwa niedokadnoci obrazu, co wida w miejscach przy granicykolorw biaego i zielonego, w ktrych poprzedni filtr zostawi ciemne punkty.

    59

  • Rysunek 4.4. Obraz testowy z szumem typu salt and pepper.

    Rysunek 4.5. Obraz testowy poddany filtracji z oknem 3 x 3.

    Rysunek 4.6. Obraz testowy poddany filtracji z oknem 5 x 5.

    Rysunek 4.7. Obraz testowy poddany filtracji z oknem 7 x 7.

    Rysunek 4.8. Zblienie obrazw z rys.4.4 - 4.8: (A) obraz testowy, (B) obraz testowy po filtracjiz oknem 3 x 3, (C) 5 x 5, (D) 7 x 7.

    60

  • 4.4. Implementacja i weryfikacja sprztowa

    Poczenia sygnaw wejcia/wyjcia z portami FPGA oraz podanie informacji donarzdzia implementujcego odnonie wymogw czasowych sygnaw umieszczanes w pliku UCF. Na listingu C.1 w dodatku C przedstawiono plik UCF stworzonyna potrzeby projektu MX2dMedian. W liniach 2, 8 i 69 zapisano specyfikacjczstotliwoci sygnaw zegarowych za pomoc sowa kluczowego PERIOD. Podanieczstotliwoci zegarowych jest konieczne do wykonania analiz czasowych przeznarzdzie PAR (Place and Route). Wyprowadzenia odbiornika HDMI zdefiniowanow liniach 9-38 natomiast nadajnika w liniach 43-72 za pomoc sowa LOC.

    Na rysunku 4.9, ktry jest fragmentem raportu narzdzia PAR, przedstawionoanaliz czasow sygnaw zegarowych wystpujcych w projekcie dla rdzenia filtruz oknem 5 x 5. Maksymalny okres zegara systemowego, ktry mona zastosowa,wynis 9.777ns. Oznacza to, e praca z czstotliwoci 100MHz (okres 10ns) jestosigalna. Dla implementacji z oknem 3 x 3 uzyskano lepsze warunki czasowe.Maksymalna wartoci okresu zegara systemowego zostaa jednak przekroczona dlaimplementacji z oknem 7 x 7. Narzdzie PAR obliczyo, e opnienie generowaneprzez logik i cieki wewntrz struktury FPGA wynosi 11.7ns. Wynika to z duobardziej rozbudowanej struktury filtru w porwnaniu do poprzednich implementacjii oznacza, e zastosowanie zegara systemowego o czstotliwoci 100MHz jestniemoliwe. Zmodyfikowano wic plik UCF, poprzez zmniejszenie czstotliwocizegara systemowego do 85MHz, dla ktrego implementacja wykonaa si poprawnie.

    Rysunek 4.9. Fragment analizy czasowej wykonanej przez narzdzie PAR dla filtracji z oknem5 x 5.

    4.5. Ilo wykorzystanych zasobw FPGA

    Tabela 4.1 przedstawia wykorzystanie zasobw ukadu XC3SD1800A, FPGA firmyXilinx rodziny Spartan-3A DSP po przeprowadzeniu implementacji. W zalenociod rozmiaru okna filtru, otrzymano rny stopie zajtoci zasobw ukadu.

    61

  • Nazwa Zasoby Zasoby wykorzystane [%]zasobu dostpne Okno 3x3 Okno 5x5 Okno 7x7

    Slice Flip Flop 33,280 2 9 29LUTs 33,280 4 22 71Slice 16,640 6 34 99IOB 309 18 18 18BUFGMUX 24 12 12 12DCM 8 12 12 12RAMB16BWER 84 13 20 27

    Tabela 4.1. Wykaz zajtoci ukadu FPGA dla 3 rozmiarw okien.

    Podejrzenie, ktre jednostki architektury projektu MX2dMedian wygenetowaynajwicej zasobw, jest poliwe dziki programowi Floorplanner w rodowiskuprojektowym ISE. Rysunek 4.11 przedstawia zajto zasobw FPGA dlanajbardziej ekstremalnej implementacji filtru z oknem 7 x 7. Poszczeglne jednostkizostay zaznaczone kolorami wg. rys.4.10.

    Rysunek 4.10. Opis kolorw uytych na rys.4.11: (1) Jednostki Comparator, (2) Data Register -DR, (3) Jednostki Bit Sum All, (4) Line RAM, Line RAM Ctrl, (5) FIFO, Ctrol Logic,(6) Output Unit

    62

  • Rysunek 4.11. Okno programu Floorplanner, rozmieszczenie wykorzystanych zasobwwewntrz FPGA dla implementacji projektu MX2dMedian z oknem 7 x 7.

    63

  • Podsumowanie

    W ramach niniejszej pracy powsta projekt MX2dMedian, system filtracjimedianowej sygnau wizyjnego w czasie rzeczywistym dla moduu MMXS3DSP-AV (dodatek A), oparty na ukadzie FPGA firmy Xilinx, rodziny Startan3A-DSPoraz ukadach firmy Analog Devices, penicych rol nadajnika i odbiornika sygnauwizyjnego wysokiej rozdzielczoci HDMI/DVI.

    Projekt speni zaoone we wstpie cele. Udao si zrealizowa filtracjmedianow dla obrazw o maksymalnej rozdzielczoci 1280 x 1024 i czstotliwoci60Hz. Filtr posiada moliwo wyboru trzech okien filtracji. Weryfikacja algorytmunastrczaa pewnych problemw wynikajcych z duych rozmiarw obrazuwejciowego i wyjciowego, w wyniku czego skoncentrowano si na poziomychwycinkach obrazw. Podejcie to skutecznie zmniejszyo czas symulacji przyzachowaniu tej samej wiarygodnoci algorytmu weryfikujcego.

    Przed przystpieniem do implementacji algorytmu konieczne byo zapoznaniesi z wystpujcymi obecnie standardami akwizycji i przesyu cyfrowych sygnawwideo i poznanie wicych si z nimi problemw. Pozyskan wiedz na ten tematumieszczeono w rozdz.2. Postanowiono skoncentrowa si w pracy nad obsuginterfejsw dostpnych na rynku ukadw HDMI/DVI. Za wzr ich poczenia zFPGA posuya pyta MMXS3DSP-AV. Projekt algorytmu filtracji przystosowanodo implementacji w FPGA rodziny Spartan-3A DSP umieszczonym na tej pyciew otoczeniu nadajnika i odbiornika HDMI. Zapoznano si rwnie ze sposobamiimplementacji filtrw medianowych w ukadach programowalnych.

    Projekt MX2dMedian stworzono jako gotowy komponent, ktry w przyszocimoe zosta wykorzystany do implementacji w FPGA na pycie MMXS3DSP-AV. Architektur opisano w jzyku VHDL kadc nacisk na kodowanie w styluRTL z dodatkiem komponentw wygenerowanych za pomc generatora rdzeniIP, dostpnego w rodowisku projektowym. Powstay projekt opisano w rozdz.3.Filtr generuje jeden piksel (zoony z trzech skadowych RGB lub YCbCr)obrazu wynikowego w jednym cyklu zegara systemowego. Pierwszym z powodwuzyskania tak zadowalajcych wynikw byo zastosowanie macierzy procesorwpikseli, w ktrych byy obliczane rwnolegle indeksy punktw okna danego obrazu.Drugim powodem byo zastosowanie przetwarzania potokowego w procesorachpikseli. Mimo faktu, i czas potrzebny od wczytania nowych pikseli okna doobliczenia punktu wynikowego wynis 4 cykle zegara systemowego, podzielenie

    64

  • oblicze na kroki oraz umieszczenie ich w kolejce przetwarzania potokowegopozwolio na jednoczesn prac kadego z komponentw procesora pikseli i generacjjednego punktu wynikowego w kadym cylku zegarowym. W celu zapewnieniardzeniowi filtru dostpu do odpowiednich pikseli obrazu w danym czasie koniecznebyo zapamitywanie kilku linii przetwarzanego obrazu w pamici. Do tego celuposuono si pamici BlockRam dostpn wewntrz struktury FPGA, ktrskonfigurowano jako pami dwuportow, poniewa konieczny okaza si odczyti zapis do pamici w jednym cyklu zegarowym.

    Podczas projektowania napotkano na problem krzyowania si rnych domenzegarowych. Czstotliwo piksel clock, z jak pracoway nadajnik i odbiornikHDMI bya mniejsza od czstotliwoci zegara systemowego system clock, wdodatku czstotliwo pixel clock moga si zmienia w zalenoci od rozdzielczociprzesyanego obrazu. Do taktowania rdzenia filtru zastosowano niezaleny sygnazegarowy o czstotliwoci 100MHz, natomiast przejcie strumienia danych midzydomenami o innych czstotliwociach zrealizowano poprzez wykorzystania moduwFIFO.

    Przeprowadzono weryfikacj projektu MX2dMedian zarwno pod wzgldempoprawnoci dziaania algorytmu (rozdz.4.1), jak i poprawnoci implementacji wwybranym FPGA (rozdz.4.4). Dla implementacji z oknami 3 x 3 i 5 x 5 potwierdzonomoliwo taktowania struktury FPGA za pomoc sygnau systemowego (systemclock) o czstotliwoci 100MHz. Okazao si jednak, e dla filtracji z oknem7 x 7 wystpuje tak due opnienie sygnau systemowego, e niemoliwe byobytaktowanie FPGA sygnaem o tak wysokiej czstotliwoci. Zewntrzne ukadyHDMI pracuj z czstotliwoci pixel clock nie wiksz od 80MHz. Wymaganiemnaoonym przez zastosowane wejciowe i wyjciowe koleki FIFO jest, by systemclock by zawsze wikszy od pixel clock. Zmniejszono wic czstotliwo zegarasystemowego do 85MHz. Modyfikacja ta, nie spowodowaa wymuszenia zmian warchitekturze projektu.

    Drog rozwoju projektu jest praca nad modyfikacj algorytmu kadcnacisk na zmniejszenie zajtoci zasobw FPGA, udoskonalenia architekturyposzczeglnych komponentw filtru tak, by uyta logika generowaa mniejszeopnienia wewntrzych sygnaw. Moliwe jest rwnie wykorzystanie manualnegorozmieszczania poszczeglnych elementw w strukturze FPGA w celu polepszeniaparametrw czasowych projektu.

    Projekt wsppracuje z sygnaami wizyjnymi RGB i 4:4:4 YCbCr przesyanymiinterfejsem rwnolegym o maksymalnej czstotliwoci taktowania 80MHz. By

    65

  • algorytm sta si badrziej elastyczny, naleaoby rozpatrzy obsug pozostaychformatw przesyu sygnau dostpnych przez ukady nadajnika i odbiornika HDMI,takich jak 4:2:2 YCbCr lub transmisja DDR. W projekcie zastosowano kolejkFIFO w celu poradzenia sobie z problemem skrzyowania domen zegarowych.Zaproponowano bardzo proste rozwizanie sterowania kolejk. Jest to te punktemwyjciowym do ulepszenia i rozbudowy algorytmu sterowania FIFO, np. poprzezwykorzystanie procesora monitorujcego zajto kolejki i bardziej efektywne jejsterowanie.

    66

  • DODATEK A

    Modu MMXS3DSP-AV

    Modu MMXS3DSP-AV zosta opracowany w firmie Microtech International S.A..Jednostk obliczeniow jest FPGA Spartan-3A DSP XC3SD1800A-4CS484LI. Napycie umieszczono midzy innymi odbiornik HDMI AD9398KSTZ-100 i nadajnikHDMI AD9889BBBSTZ-80.

    Rysunek A.1. Pyta MXS3DSP-AV opracowana w firmie Microtech International S.A.

    67

  • DODATEK B

    Lista sygnaw interfejsu DVI

    rdo: [16].

    68

  • DODATEK C

    Plik UCF stworzony na potrzeby projektuMX2dMedian

    Listing C.1. Plik UCF definiujcy poczenia sygnaw z wyprowadzeniami FPGA.

    1 NET "CLK_100MHz" LOC = "F10 " | IOSTANDARD = LVTTL;2 NET "CLK_100MHz" PERIOD = 10.0 ns HIGH 50%;3

    4 NET "RESET_N" LOC = "C1" | IOSTANDARD = LVTTL | PULLUP;5

    6 #######################################################7 ## HDMI Rec iever8 #######################################################9 NET "R_RED[ 0 ] " LOC = "AB19" | IOSTANDARD = LVTTL;10 NET "R_RED[ 1 ] " LOC = "AB18" | IOSTANDARD = LVTTL;11 NET "R_RED[ 2 ] " LOC = "AB17" | IOSTANDARD = LVTTL;12 NET "R_RED[ 3 ] " LOC = "AA19" | IOSTANDARD = LVTTL;13 NET "R_RED[ 4 ] " LOC = "Y18" | IOSTANDARD = LVTTL;14 NET "R_RED[ 5 ] " LOC = "AA15" | IOSTANDARD = LVTTL;15 NET "R_RED[ 6 ] " LOC = "Y15" | IOSTANDARD = LVTTL;16 NET "R_RED[ 7 ] " LOC = "V16" | IOSTANDARD = LVTTL;17 NET "R_GREEN[ 0 ] " LOC = "AA10" | IOSTANDARD = LVTTL;18 NET "R_GREEN[ 1 ] " LOC = "AB10" | IOSTANDARD = LVTTL;19 NET "R_GREEN[ 2 ] " LOC = "AB14" | IOSTANDARD = LVTTL;20 NET "R_GREEN[ 3 ] " LOC = "Y13" | IOSTANDARD = LVTTL;21 NET "R_GREEN[ 4 ] " LOC = "Y16" | IOSTANDARD = LVTTL;22 NET "R_GREEN[ 5 ] " LOC = "U15" | IOSTANDARD = LVTTL;23 NET "R_GREEN[ 6 ] " LOC = "Y17" | IOSTANDARD = LVTTL;24 NET "R_GREEN[ 7 ] " LOC = "U16" | IOSTANDARD = LVTTL;25 NET "R_BLUE[ 0 ] " LOC = "AB5" | IOSTANDARD = LVTTL;26 NET "R_BLUE[ 1 ] " LOC = "AB6" | IOSTANDARD = LVTTL;27 NET "R_BLUE[ 2 ] " LOC = "V8" | IOSTANDARD = LVTTL;28 NET "R_BLUE[ 3 ] " LOC = "U8" | IOSTANDARD = LVTTL;29 NET "R_BLUE[ 4 ] " LOC = "W8" | IOSTANDARD = LVTTL;30 NET "R_BLUE[ 5 ] " LOC = "Y8" | IOSTANDARD = LVTTL;31 NET "R_BLUE[ 6 ] " LOC = "V7" | IOSTANDARD = LVTTL;

    69

  • 32 NET "R_BLUE[ 7 ] " LOC = "AA8" | IOSTANDARD = LVTTL;33

    34 NET "R_HSOUT" LOC = "AA14" | IOSTANDARD = LVTTL;35 NET "R_FIELD" LOC = "Y19" | IOSTANDARD = LVTTL;36

    37 NET "R_DATACK" LOC = "AB12" | IOSTANDARD = LVTTL;38 NET "R_DATACK" PERIOD = 12.5 ns HIGH 50%;39

    40 #######################################################41 ## HDMI Transmitter42 #######################################################43 NET "T_D[ 0 ] " LOC = "R19" | IOSTANDARD = LVTTL;44 NET "T_D[ 1 ] " LOC = "N21" | IOSTANDARD = LVTTL;45 NET "T_D[ 2 ] " LOC = "P16 " | IOSTANDARD = LVTTL;46 NET "T_D[ 3 ] " LOC = "N17" | IOSTANDARD = LVTTL;47 NET "T_D[ 4 ] " LOC = "N22" | IOSTANDARD = LVTTL;48 NET "T_D[ 5 ] " LOC = "M17" | IOSTANDARD = LVTTL;49 NET "T_D[ 6 ] " LOC = "M22" | IOSTANDARD = LVTTL;50 NET "T_D[ 7 ] " LOC = "R22" | IOSTANDARD = LVTTL;51 NET "T_D[ 8 ] " LOC = "M20" | IOSTANDARD = LVTTL;52 NET "T_D[ 9 ] " LOC = "U18" | IOSTANDARD = LVTTL;53 NET "T_D[ 1 0 ] " LOC = "N18" | IOSTANDARD = LVTTL;54 NET "T_D[ 1 1 ] " LOC = "T18" | IOSTANDARD = LVTTL;55 NET "T_D[ 1 2 ] " LOC = "T22" | IOSTANDARD = LVTTL;56 NET "T_D[ 1 3 ] " LOC = "R20" | IOSTANDARD = LVTTL;57 NET "T_D[ 1 4 ] " LOC = "P22 " | IOSTANDARD = LVTTL;58 NET "T_D[ 1 5 ] " LOC = "N20" | IOSTANDARD = LVTTL;59 NET "T_D[ 1 6 ] " LOC = "P19 " | IOSTANDARD = LVTTL;60 NET "T_D[ 1 7 ] " LOC = "T20" | IOSTANDARD = LVTTL;61 NET "T_D[ 1 8 ] " LOC = "V20" | IOSTANDARD = LVTTL;62 NET "T_D[ 1 9 ] " LOC = "U20" | IOSTANDARD = LVTTL;63 NET "T_D[ 2 0 ] " LOC = "W22" | IOSTANDARD = LVTTL;64 NET "T_D[ 2 1 ] " LOC = "Y21" | IOSTANDARD = LVTTL;65 NET "T_D[ 2 2 ] " LOC = "U19" | IOSTANDARD = LVTTL;66 NET "T_D[ 2 3 ] " LOC = "T17" | IOSTANDARD = LVTTL;67

    68 NET "T_CLK" LOC = "AB13" | IOSTANDARD = LVTTL;69 NET "T_CLK" PERIOD = 12.5 ns HIGH 50%;70

    71 NET "T_HSYNC" LOC = "AA20" | IOSTANDARD = LVTTL;72 NET "T_VSYNC" LOC = "AB20" | IOSTANDARD = LVTTL;

    70

  • Bibliografia

    [1] Chu P.: RTL hardware design using VHDL, John Wiley & Sons, 2006.

    [2] Gorgo M.: Architektury rekonfigurowalne do przetwarzania i analizy obrazuoraz dekodowania sygnau wideo, Uczelniane wydawnictwo naukowo -dydaktyczne, Krakw 2007.

    [3] Tadeusiewicz R., Korochoda P.: Komputerowa analiza i przetwarzanie obrazw,Wydawnictwo Fundacji Postpu Telekomunikacji, Krakw 1997.

    [4] Chakrabarti C.: High sample rate array architectures for median filters,Department of Electrical Engeneering Center for Solid State ElectronicsResearch.

    [5] Gabor S.: Two-Dimensional Rank Order Filter, XAPP953 (v1.1) September 21,2006.

    [6] Majewski J., Zbysiski P.: Ukady FPGA w przykadach, Wydawnictwo BTC,Warszawa 2007.

    [7] Malina W., Ablameyko S., Pawlak W.: Podstawy cyfrowego przetwarzaniaobrazw, Akademicka Oficyna Wydawnicza EXIT, Warszawa 2002.

    [8] Ashenden P. J.: The VHDL Cookbook, First Edition, Dept. Computer ScienceUniversity of Adelaide South Australia, 1990

    [9] Xilinx, Inc., Xilinx DS610 Spartan-3A DSP FPGA Family, Data Sheet.

    [10] Xilinx, Inc., Xilinx Constraints Guide, v.10.1

    [11] Xilinx, Inc., Xilinx UG112 Device Package User Guide.

    [12] Xilinx, Inc., Xilinx UG331 Spartan-3 Generation FPGA User Guide.

    [13] Xilinx, Inc., Xilinx UG332 Spartan-3 Generation Configuration User Guide.

    [14] Analog Devices, Inc., AD9381 HDMITM Display Interface Data Sheet (Rev. 0).

    [15] Analog Devices, Inc., Analog Devices, Inc., AD9389B High PerformanceHDMI/DVI Transmitter Data Sheet (Rev.0).

    [16] Digital Display Working Group, Digital Visual Interface DVI, rev.1.002.07.1999

    71

  • [17] http://groups.google.com/group/comp.lang.vhdl, Frequently Asked QuestionsAnd Answers (Part 1) General, 2009.03.07

    [18] http://www.doulos.com/knowhow/vhdl_designers_guide/, A HardwareEngineers Guide to VHDL, 2006.11.11

    [19] http://hdmi.pl/, 2009.07.06

    [20] http://sklep.rms.pl, 2009.08.10

    [21] http://pl.wikipedia.org/wiki/Portable_anymap, 2009.09.10

    [22] http://www.zsk.ict.pwr.wroc.pl/zsk_ftp/fpga/, 2009.08.28

    72

    http://groups.google.com/group/comp.lang.vhdlhttp://www.doulos.com/knowhow/vhdl_designers_guide/http://hdmi.pl/http://sklep.rms.plhttp://pl.wikipedia.org/wiki/Portable_anymaphttp://www.zsk.ict.pwr.wroc.pl/zsk_ftp/fpga/

  • Spis tabel

    2.1. Standardy przesyu sygnau wizyjnego [16]. . . . . . . . . . . . . . . . 102.2. Wartoci kanaw R, G i B dla okna z rys.2.9 . . . . . . . . . . . . . 152.3. Wartoci kanaw R, G i B dla okna z rys.2.9 po filtracji medianowej. 162.4. Waciwoci filtru w zalenoci od parametru RANK (TAP - liczba

    elementw okna). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    3.1. Wybrane parametry FIFO . . . . . . . . . . . . . . . . . . . . . . . . 233.2. Wyprowadzenia instancji przetwarzania strumienia danych obrazu

    Dataflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.3. Rozmieszczenie kanaw na porcie wyjciowym D_OUT. . . . . . . . 273.4. Wyprowadzenia instancji rdzenia filtru. . . . . . . . . . . . . . . . . . 293.5. Dozwolone wartoci parametru generycznego WINDOW_WIDTH. . . 313.6. Wartoci parametru rank dla filtracji medianowej. . . . . . . . . . . . 313.7. Ilo generowanej pamici obrazu dla rnych rozmiarw okna (dla

    jednego kanau: R, G, B lub Y). . . . . . . . . . . . . . . . . . . . . . 343.8. Wyprowadzenia instancji Circle_Control . . . . . . . . . . . . . . . . 353.9. Wyprowadzenia instancji pamici Line RAM . . . . . . . . . . . . . . 373.10. Liczba elementw strukturalnych rdzenia filtru w zalenoci

    rozmiarw okna. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.11. Liczba elementw strukturalnych pojedynczego procesora pikseli w

    zalenoci od rozmiarw okna. . . . . . . . . . . . . . . . . . . . . . . 413.12. Wyprowadzenia instancji jednostki wyjciowej Output_Unit. . . . . . 443.13. Wyprowadzenia instancji Data_Register. . . . . . . . . . . . . . . . . 463.14. Wyprowadzenia jednostki Comparator. . . . . . . . . . . . . . . . . . 473.15. Wyprowadzenia instancji Bit Sum All. . . . . . . . . . . . . . . . . . 48

    4.1. Wykaz zajtoci ukadu FPGA dla 3 rozmiarw okien. . . . . . . . . 62

    73

  • Spis rysunkw

    2.1. Siatka typowego obrazu cyfrowego. [3] . . . . . . . . . . . . . . . . . 92.2. Poczenie T.M.D.S. . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.3. Konwerter sygnau HDMI/DVI, DVI/HDMI [20] . . . . . . . . . . . . 112.4. Schemat blokowy odbiornika HDMI AD9398 [14]. . . . . . . . . . . . 122.5. Kanay RGB oraz YCbCr, wystpujce w interfejsie rwnolegym

    ukadu AD9398 [14]. . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.6. Schemat blokowy nadajnika HDMI AD9889B [15]. . . . . . . . . . . . 132.7. Usuwanie zakce filtrem medianowym [3]. . . . . . . . . . . . . . . 142.8. Wpyw filtru medianowego na krawdzie obiektu [3]. . . . . . . . . . . 142.9. Przykadowe okno 3 x 3. . . . . . . . . . . . . . . . . . . . . . . . . . 152.10. Wynik filtracji medianowej. . . . . . . . . . . . . . . . . . . . . . . . 162.11. Okno o rozmiarach 3 x 3 podczas filtracji. . . . . . . . . . . . . . . . 172.12. Sprztowa realizacja filtracji medianowej zaprezentowana w [3]. . . . . 182.13. Architektura rdzenia filtru medianowego wedug [5]. . . . . . . . . . . 202.14. Przykad operacji filtru medianowego [5]. . . . . . . . . . . . . . . . . 21

    3.1. Ukad FPGA w otoczeniu ukadw nadajnika i odbiornika HDMI. . . 233.2. Skrzyowanie rnych domen czasowych w FPGA. . . . . . . . . . . . 243.3. Rdze IP moduu FIFO (wejcia, wyjcia zaznaczone kolorem szarym

    nie zostay wykorzystane w projekcie). . . . . . . . . . . . . . . . . . 253.4. Instancja bloku kontroli kolejk FIFO, Control_Logic. . . . . . . . . 253.5. Automat stanu sterujcy prac kolejki FIFO. . . . . . . . . . . . . . . 263.6. Instancja bloku przetwarzania strumienia danych obrazu Dataflow. . . 283.7. Przetwarzanie strumienia danych obrazu RGB. . . . . . . . . . . . . . 293.8. Instancja rdzenia filtru medianowego . . . . . . . . . . . . . . . . . . 303.9. Struktura rdzenia filtru dla okna 3 x 3. . . . . . . . . . . . . . . . . . 323.10. Blok pamici linii obrazw. . . . . . . . . . . . . . . . . . . . . . . . . 333.11. Instancja kontrolera zapisu i odczytu pamici Circle_Conrtol. . . . . 343.12. Zapis kolejnych linii obrazu. . . . . . . . . . . . . . . . . . . . . . . . 353.13. Rdze IP pamici pojedynczej linii obrazu Line RAM (wejcia,

    wyjcia zaznaczone kolorem szarym nie zostay wykorzystane wprojekcie) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    3.14. Pojedyncza komrka procesora pikseli dla okna 3 x 3. . . . . . . . . . 38

    74

  • 3.15. Przetwarzanie potokowe zastosowane w rdzeniu filtru medianowego. . 403.16. Instancja jednostki wyjciowej filtru Output_Unit. . . . . . . . . . . 433.17. Instancja jednostki Data Register penicej rol DR i CR. . . . . . . 453.18. Instancja jednostki Comparator LC. . . . . . . . . . . . . . . . . . . 463.19. Instancja Bit Sum All - BS. . . . . . . . . . . . . . . . . . . . . . . . 48

    4.1. Schematyczne przedstawienie poczenia projektu MX2dMedianz aplikacj symulacyjn. . . . . . . . . . . . . . . . . . . . . . . . . . 51

    4.2. Okno programu ModelSim podczas testw FIFO. Widoczna rnicaw czstotliwoci sygnaw zegarowych oraz moment wstrzymaniaodczytu kolejki. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    4.3. Okno programuModelSim podczas testw FIFO. Widoczne trzy cyklezapeniania i odczytu kolejki zaznaczono numerami 1-3. . . . . . . . . 59

    4.4. Obraz testowy z szumem typu salt and pepper. . . . . . . . . . . . . 604.5. Obraz testowy poddany filtracji z oknem 3 x 3. . . . . . . . . . . . . 604.6. Obraz testowy poddany filtracji z oknem 5 x 5. . . . . . . . . . . . . 604.7. Obraz testowy poddany filtracji z oknem 7 x 7. . . . . . . . . . . . . 604.8. Zblienie obrazw z rys.4.4 - 4.8: (A) obraz testowy, (B) obraz testowy

    po filtracji z oknem 3 x 3, (C) 5 x 5, (D) 7 x 7. . . . . . . . . . . . . 604.9. Fragment analizy czasowej wykonanej przez narzdzie PAR dla

    filtracji z oknem 5 x 5. . . . . . . . . . . . . . . . . . . . . . . . . . . 614.10. Opis kolorw uytych na rys.4.11: (1) Jednostki Comparator, (2) Data

    Register - DR, (3) Jednostki Bit Sum All, (4) Line RAM, Line RAMCtrl, (5) FIFO, Ctrol Logic, (6) Output Unit . . . . . . . . . . . . . . 62

    4.11. Okno programu Floorplanner, rozmieszczenie wykorzystanychzasobw wewntrz FPGA dla implementacji projektu MX2dMedianz oknem 7 x 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    A.1. Pyta MXS3DSP-AV opracowana w firmie Microtech International S.A. 67

    75

    WstpCel pracyTeza pracyZakres pracyZaoenia projektowe

    Problemy sprztowego przetwarzania obrazw w FPGAAkwizycja sygnau wideoNadajnik i odbiornik HDMIFiltracja medianowaSprztowa realizacja filtracji medianowej

    Projekt sprztowej realizacji filtracji medianowej MX2dMedianSkrzyowanie rnych domen czasowychPrzetwarzanie strumienia danych obrazuImplementacja rdzenia filtru medianowegoArchitektura rdzenia filtru medianowegoBlok pamici linii obrazuProcesor pikseliParametryzacja filtruJednostka wyjciowaOpnienia sygnaw synchronizacji pionowej i poziomejBudowa wewntrzna procesora pikseliRejestr danych i rejestr indekswBloki komparatorwBlok Sumy Bitowej

    Moliwoci rozbudowy rdzenia filtru

    WynikiWeryfikacja poprawnoci dziaania projektu MX2dMedianAlgorytm dziaania programu symulacyjnegoWczytywanie i zapis obrazuProcesy symulacji nadajnika i odbiornika HDMIProces zegara systemowego

    Weryfikacja poprawnoci dziaania moduu FIFOWeryfikacja poprawnoci dziaania rdzenia filtruImplementacja i weryfikacja sprztowaIlo wykorzystanych zasobw FPGA

    PodsumowanieModu MMXS3DSP-AVLista sygnaw interfejsu DVIPlik UCF stworzony na potrzeby projektu MX2dMedianBibliografiaSpis tabelSpis rysunkw