-
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