dokumentacja projektu

Transkrypt

dokumentacja projektu
DOKUMENTACJA PROJEKTU
UKŁADY CYFROWE
Temat: Generator Testowego Sygnału Telewizji Cyfrowej
Prowadzący: dr inż. Paweł Tomaszewicz
Wykonujący: Artur Skrajnowski
Arkadiusz Płoski
Grupa: A4T3
1. Słowo wstępne.
Prawdopodobnie najbardziej popularnym cyfrowym standardem
telewizyjnym jest schemat oparty na próbkowaniu 4:2:2. Jest on używany
w wielu odmianach takich jak 525 – liniowy (NTSC), 625 – liniowy (PAL),
szeroko – ekranowy NTSC i PAL oraz HDTV. Przestrzeń kolorów YCbCr jest
najczęściej używana w przesyłaniu telewizji cyfrowej. Jest ona
przeskalowaną i zrównoważoną wersją przestrzeni YUV z komponentem
luminacji (Y) i dwoma komponentami chromatycznymi (Cb, Cr). Wszystkie
komponenty mają nominalny rozmiar 8 – bitowy, Y z przedziału 16 – 235,
natomiast obie chromy z zakresu 16 – 240. Wartości powyżej i poniżej
wymienionych są często wykorzystywane do kodowania sygnałów
specjalnych. Jedną z kluczowych cech komponentów telewizji cyfrowej są
schematy próbkowania. Schemat 4:2:2 oznacza, że na każde 4 próbki
lumy (Y) przypadają po 2 próbki każdej z chrom (Cb, Cr). Chromy są
próbkowane z połową częstotliwości próbkowania lumy, która wynosi 13,5
MHz. Wynika to z tego, że ludzkie oko jest bardziej wyczulone na zmiany
intensywności obrazu, za którą odpowiada luma, niż na zmiany koloru, za
które odpowiadają chromy.
Każda z linii video zawiera 858 próbek, z których każda zawiera dwa
słowa: komponent lumy – Y oraz jeden z komponentów chromy – na
zmianę Cb i Cr. Część aktywna linii trwa od 0 do 719 próbki, natomiast od
720 do 857 próbki trwa nieaktywna część linii przerwy poziomej. 4 słowa
umiejscowione na parach bitów 720/721 i 856/857 zawierają specjalne
kody zwane sygnałami odniesienia czasowego (od angielskiego timing
reference signals – TRS). Para 720/721 zawiera koniec aktywnego sygnału
video (end of active video – EAV), a para 856/857 początek aktywnego
sygnału video (start of active video – SAV). Te sygnały TRS są używane
do zaznaczenia przejścia między aktywną i nieaktywną częścią linii, ale
również zawierają inne informacje czasowe. W używanych 10 – bitowych
słowach TRS 3 pierwsze to 3FFHEX, 000HEX, 000HEX. 4 słowo jest nazywane
XYZ. 3 bity tego słowa przedstawiają stan bitów F, V i H, 4 kolejne
używane są do detekcji błędów, a pozostałe mają wyznaczaną wartość. Bit
F wskazuje, czy pole pierwsze (F=0), czy drugie (F=1) jest aktywne. V ma
wartość 1 jeśli linie są częścią obszaru przerwy pionowej, a w obszarach
aktywnych ma wartość 0. Bit H natomiast dokonuje rozróżnienia między
SAV i EAV, bo jest zawsze 1 w EAV, a 0 w SAV.
Kodowanie słowa XYZ jest następujące:
bit
9
1
8
F
7
V
6
H
5
P3
4
P2
3
P1
2
P0
1
0
0
0
przy czym:
P3
P2
P1
P0
=
=
=
=
V xor H
F xor H
F xor V
F xor V xor H
Numerowanie linii i próbek jest trochę specyficzne. O ile linie są
numerowane począwszy od 1, to pole 1 obejmuje linie od 4 do 265, a pole
2 linie od 266 do 525 plus linie od 1 do 3. Próbki wzdłuż linii pionowych są
numerowane od 0. Jednak początkiem linii jest zazwyczaj początek EAV,
czyli próbka 720.
2. Standard testowych wzorów video - SMPTE EG – 1 – 1990.
SMPTE EG – 1 – 1990
Wzór testowy składa się z 7 pionowych bloków kolorów, zajmujących 75%
wzorca. Nazywane są „blokami 75%” jednak z innego powodu, mianowicie
każdy z nich ma wartość natężenia (luma – Y) wynoszącą 75%.
Dolne 25% wzorca zawiera 4 bloki kolorów:
- -I – sygnał o maksymalnej ujemnej wartości I oraz Q = 0;
- biały – wartość lumy wynosi 100%;
- Q – sygnał o maksymalnej dodatniej wartości Q oraz I = 0;
- czarny – wartość lumy – 0%;
Standard SMPTE jest rozszerzoną wersją starszego standardu EIA – 189 –
A i jest dziś najczęściej stosowany. Ma on dodany wąsko- i
średniopasmowy blok zwany blokiem nowej chromy. Jest on tak
zaprojektowany, że jeśli wyłączy się czerwień i niebieski w odbiorniku, to
powinien zlać się z resztą części „75%”, która jest powyżej. Dodano
również wąskie bloki „okołoczarnych” kolorów, pomocne przy ustawianiu
poziomu czerni w odbiorniku. Są one czasem nazywane PLUGE (Picture
Line Up Generating Equipment). Żeby dostosować poziom czerni należy
tak ustawić jasność, żeby czarny +4% (bielszy – niż – czerń) był lekko
widoczny, a czarny -4% (czarniejszy – niż – czerń) był nieodróżnialny od
czarnego.
3. Generator wzorca video na pamięci RAM/ROM.
Generator wzorca może zostać rozbity na 3 główne sekcje:
- sekcję poziomą;
- sekcję pionową;
- sekcję składnika video;
Sekcja pozioma (HROM).
Zbudowana z pamięci ROM o szerokość adresu 10bit i szerokości wyjścia
16 bit. Implementuje ona automat, który „przechodzi” przez poziomą linię.
10 Bitów z wyjścia pamięci stanowi adres następnego stanu, pozostałe 6
bitów to kod regionu poziomego generatora (4 bity), sygnał v_ena służący
do informowania sekcji pionowej, że ma przejść do kolejnej linii i bit H
używany do generacji słowa XYZ w sygnałach TRS.
Pomimo tego, że wszystkich próbek użytych do tworzenia obrazu jest w
jednej linii 1716 to pamięć ROM w tej sekcji może posiadać 1024 wartości.
Dzieje się tak, dlatego, że każdy stan automatu poziomego trwa w czasie
dwóch próbek: próbki Y i próbki Cb lub Cr (sygnał włączający pamięć jest
aktywny, co drugi takt zegara – bramka XOR przed wejściem ena do
licznika).
Regiony poziome generatora wzorcowego EG 1
Sekcja pionowa (VROM).
Sekcja pionowa składa się z pamięci ROM o szerokość adresu 10bit i
szerokości wyjścia 16 bit. Podobnie jak w sekcji poziomej 10 bitów wyjścia
stanowi kolejny adres w pamięci. Pozostałe bity wyjściowe to kod regionu
pionowego (4 bity) oraz bity V i F używane w czasie generacji słów TRS.
Wejście włączające pamięć połączone jest z wyjściem sekcji poziomej, tak,
aby przejście do następnego stanu nastąpiło po zakończeniu danej
poziomej linii.
Regiony pionowe generatora wzorcowego EG 1
Sekcja składnika video (CROM).
Sekcja ta konwertuje 2 – bitowe próbki kodu z licznika poziomego, 4 –
bitowy kod poziomego regionu i 4 – bitowy kod regionu pionowego na
wartość aktualnego składnika video. Kod próbki informuje ROM video, czy
na wyjściu ma być Y, Cb, czy Cr. Kody regionów mówią o tym, w którym
regionie aktualnie znajduje się generator i tym samym, jaki kolor (lub
sygnał TRS) generowany ma być na wyjście układu.
Licznik kodu próbki.
Jest to zwykły 2-bitowy licznik liczący w kodzie Gray’a. Jego wyjście jest
użyte do włączania sekcji poziomej, co dwa takty zegara i do
informowania sekcji składnika, którą składową koloru powinien generować
na wyjście.
Schemat układu do generacji cyfrowego sygnału testowego EG-1.
Generacja zawartości pamięci dla pamięci ROM użytych w
układzie.
Do implantacji pamięci ROM w układzie użyliśmy dostarczonych w
bibliotekach makrofunkcji lpm_rom. Elementy te wymagają, aby
zawartość pamięci ROM-ów była zapisana w plikach *.mif. Ze względu na
duże rozmiary tych pamięci postanowiliśmy napisać program, który
generuje pliki z zawartością wszystkich pamięci (HROM, VROM, CROM).
Źródła jak i skompilowane pliki są dołączone do projektu (patrz Dołączone
pliki).
Kolory poszczególnych regionów są w programie zapisane w standardowej
postaci w formacie RGB ( zakres od 0 do 255). Przeliczenie na format
YCbCr użyty w generatorze dokonuje się za pomocą następujących
zależności:
Y = 16 + 0.257*R + 0.504*G + 0.098*B
Cb = 128 - 0.148*R - 0.291*G + 0.439*B
Cr = 128 + 0.439*R - 0.368*G - 0.071*B
Zależności te gwarantują poprawne zakresy wartości poszczególnych
składowych koloru.
Wygenerowane słowa pamięci i adresy je indeksujące maja następującą
budowę:
HROM
Adres 10bit – 10bit numer stanu.
Wyjście 16bit – 10 bit numer następnego stanu, 4bit kod regionu
poziomego, 1bit sygnał H, 1bit sygnał v_ena.
VROM
Adres 10bit – 10bit numer stanu
Wyjście 16 bit – 10bit numer następnego stanu, 4bit kod regionu
poziomego, 1bit sygnał V, 1bit sygnał F.
CROM
Adres 10bit – 4bit kod regionu poziomego, 4bit kod regionu
pionowego, 2bit kod próbki z licznika mówiący, która składowa
koloru generować ma układ (00 Cb; 01,10 Y; 11 Cr).
Wyjście 10bit – 10bit wartość składnika video.
Fragmenty przebiegów wyjściowych.
Przedstawione poniżej fragmenty zostały uzyskane po skompilowaniu
projektu w środowisku MAX+II firmy Altera (wersja 10.2).
Na rysunku tym widać przejście z jednej linii poziomej na drugą (region
poziomy zmienia się z F na 0). Po zakończeniu linii układ wysyła jeden z
sygnałów synchronizujących TRS (w tym przepadku jest to End of Active
Video – EAV). Zauważyć można charakterystyczna budowę tych sygnałów,
które zawsze składają się z czterech próbek. Pierwsze trzy próbki to
3FFHEX (1023 w notacji dziesiętnej), 000HEX i 000HEX. Ostatnią próbkę
stanowi tzw. słowo XYZ niosące informacje.
Ten przebieg pokazuje początek generowania „prawdziwego” obrazu
sygnału testowego. Po zakończeniu obszaru będącego odstępem pomiedzy
liniami poziomymi (HBI) generator wysyła na wyjście sygnał
synchronizujący TRS informujący o początku nowej linii (Start of Active
Video – SAV) a następnie generuje poszczególne składowe koloru
pierwszego paska 75% - szarego (Cb,Cr=128, Y=98).
Symulacje te są dołączone do projektu w dwóch wersjach: symulacja
krótka trwająca 300µs i symulacja dłuższa 1,5ms (patrz Dołączone pliki).
Dołączone pliki.
vga.zip – archiwum zawierające kody źródłowe projektu (.tdf) i pliki
inicjacji pamięci (.mif).
vga_scf.zip – archiwum zawierające przebiegi uzyskane poprzez symulacje
układu w środowisku Max+II (.scf).
vga_mem_gen.zip – archiwum zawierające pliki źródłowe jak i pliki
skompilowane programu użytego do generacji plików opisujących
zawartość pamięci ROM. Program napisany został w języku Java.
vga_all.zip – archiwum zawierające wszystkie z powyższych plików.