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.