Tester monitorów VGA, część 2 AVT 979

Podobne dokumenty
ZL10PLD. Moduł dippld z układem XC3S200

TDWA-21 TABLICOWY DWUPRZEWODOWY WYŚWIETLACZ SYGNAŁÓW ANALOGOWYCH DOKUMENTACJA TECHNICZNO-RUCHOWA. Wrocław, listopad 1999 r.

Programowalne Układy Cyfrowe Laboratorium

LITEcomp. Zestaw uruchomieniowy z mikrokontrolerem ST7FLITE19

Instrukcja do oprogramowania ENAP DEC-1

Przełącznik KVM USB. Przełącznik KVM USB z obsługą sygnału audio i 2 portami. Przełącznik KVM USB z obsługą sygnału audio i 4 portami

STEROWNIK MIKROPROCESOROWY PWM EC-10. Dla oświetlenia LED RGB. wersja oprogramowania: 1.7

IIPW_SML3_680 (Z80) przewodnik do ćwiczeń laboratoryjnych

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

DOKUMENTACJA TECHNICZNA WSKAŹNIKA ŁADOWANIA BATERII WSK-2 / 24V

Miernik poziomu cieczy MPC-1

Panelowy moduł automatyki SZR SIEĆ-AGREGAT ATS-10

MANIPULATOR LED CA-10 KLED-M

ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!

Wstęp Architektura... 13

SPECYFIKACJA PRZETWORNIK RÓŻNICY CIŚNIEŃ DPC250; DPC250-D; DPC4000; DPC4000-D

WIZUALIZACJA DANYCH SENSORYCZNYCH MINISTACJA METEOROLOGICZNA

LDA-8/ Z wyświetlacz tekstowy

Technika mikroprocesorowa. Konsola do gier

ZL8AVR. Płyta bazowa dla modułów dipavr

Montaż i uruchomienie

SYGNALIZATOR WJAZDU. Dokumentacja techniczno ruchowa. Mokronos Dolny, wrzesień 2009

dokument DOK wersja 1.0

ZL25ARM. Płyta bazowa dla modułów diparm z mikrokontrolerami STR912. [rdzeń ARM966E-S]

ZL6PLD zestaw uruchomieniowy dla układów FPGA z rodziny Spartan 3 firmy Xilinx

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

SPECYFIKACJA PRZETWORNIK RÓŻNICY CIŚNIEŃ

WEJŚCIE W TRYB PROGRAMOWANIA

STEROWNIK LAMP LED MS-1 Konwerter sygnału 0-10V. Agropian System

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

1 Badanie aplikacji timera 555

Edukacyjny sterownik silnika krokowego z mikrokontrolerem AT90S1200 na płycie E100. Zestaw do samodzielnego montażu.

ZL19PRG. Programator USB dla układów PLD firmy Altera

T2210HD/T2210HDA Szerokoekranowy monitor LCD 21,5 Podręcznik użytkownika

MONITOR SMILE VDS BASIC. comodín (przycisk uniwersalny)

Instrukcja obsługi rejestratora SAV35 wersja 10

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Firma DAGON Leszno ul. Jackowskiego 24 tel Produkt serii DAGON Lighting

Programator ZL2PRG jest uniwersalnym programatorem ISP dla mikrokontrolerów, o budowie zbliżonej do STK200/300 (produkowany przez firmę Kanda).

d&d Labo Dekoder Ledv.4 Przeznaczenie, działanie: Montaż:

Moduł rozszerzeń ATTO dla systemu monitorującego SMOK.

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Politechnika Wrocławska

Parametryzacja przetworników analogowocyfrowych

INDU-22. Przemysłowy Sterownik Mikroprocesorowy. Przeznaczenie. masownica próżniowa

IC200UDR002 ASTOR GE INTELLIGENT PLATFORMS - VERSAMAX NANO/MICRO

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

SZSA-21 NAŚCIENNY ZADAJNIK PRĄDU DOKUMENTACJA TECHNICZNO-RUCHOWA. Wrocław, wrzesień 2002 r.

ROZDZIAŁ 1 Instrukcja obsługi Grand Video Console

INSTRUKCJA OBSŁUGI KROSOWNICY WIDEO KV-12/4

Opis ogólny SAV5.HT

Instrukcja obsługi Zasilacz regulowany WINNERS XL4015 USB

Miernik Poziomu Cieczy MPC-1

PILOT RGB 4-STREFY, radiowy RF, programowalny, seria SEMI MAGIC

KONTROLER AUTONOMICZNY K601-UK-KR

T2200HD/T2200HDA Szerokoekranowy monitor LCD 21,5 Podręcznik użytkownika

Opis ultradźwiękowego generatora mocy UG-500

Firma DAGON Leszno ul. Jackowskiego 24 tel Produkt serii DAGON Lighting

ZL4PIC uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC (v.1.0) Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

REMOTE CONTROLLER RADIO 4

Karta katalogowa JAZZ OPLC JZ20-R31

Profesjonalny monitor CCTV INSTRUKCJA OBSŁUGI LA19DA0N-D / LA22DA0N-D

Uniwersalny miernik: częstotliwości, czasu, okresu na FPGA, część 4

Programowany układ czasowy

Modem radiowy MR10-GATEWAY-S

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Instrukcja obsługi elektronicznego licznika typu 524. Model 524. Licznik sumujący i wskaźnik pozycji typu Opis. 1. Opis

INSTRUKACJA UŻYTKOWANIA

3. Sieć PLAN. 3.1 Adresowanie płyt głównych regulatora pco

Karta katalogowa JAZZ OPLC JZ20-T40/JZ20-J-T wejść cyfrowych, 2 wejścia analogowe/cyfrowe, 2 wejścia analogowe. 20 wyjść tranzystorowych

Wyłącznik czasowy GAO EMT757

ASTOR IC200ALG320 4 wyjścia analogowe prądowe. Rozdzielczość 12 bitów. Kod: B8. 4-kanałowy moduł ALG320 przetwarza sygnały cyfrowe o rozdzielczości 12

POLITECHNIKA WROCŁAWSKA WYDZIAŁ ELEKTRYCZNY KATEDRA ENERGOELEKTRYKI LABORATORIUM INTELIGENTNYCH INSTALACJI ELEKTRYCZNYCH

Karta katalogowa JAZZ OPLC. Modele JZ20-T10/JZ20-J-T10 i JZ20-T18/JZ20-J-T18

Uniwersalna stacja dokująca z USB typu C

STEROWNIK TUBY LED STM-64

Modem radiowy MR10-NODE-S

JAZZ OPLC JZ20-R10 i JZ20-R16

T201W/T201WA Szerokoekranowy monitor LCD 20 Podręcznik użytkownika

KURTYNA LED 31 LIGHT - budowa i zastosowanie

1. Opis okna podstawowego programu TPrezenter.

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

INSTRUKCJA OBSŁUGI systemu pomiarowego

CENTRALA STERUJĄCA SMART CONTROL

Lista zadań nr 5. Ścieżka projektowa Realizacja każdego z zadań odbywać się będzie zgodnie z poniższą ścieżką projektową (rys.

INSTRUKCJA PANEL STERUJĄCY MT-5

Cyfrowy regulator temperatury

INSTRUKCJA KONFIGURACJI

TWSA-21 TABLICOWY WYŚWIETLACZ SYGNAŁÓW ANALOGOWYCH DOKUMENTACJA TECHNICZNO-RUCHOWA. Wrocław, listopad 1999 r.

Mikroprocesorowy miernik czasu

Dokumentacja Licznika PLI-2

1. Opis urządzenia. 2. Zastosowanie. 3. Cechy urządzenia -3-

WPW-1 ma 2 wejścia sygnalizacyjne służące do doprowadzenia informacji o stanie wyłącznika.

Lista zadań nr 1. Zagadnienia stosowanie sieci Petriego (ang. Petri net) jako narzędzia do modelowania algorytmów sterowania procesami

INSTRUKCJA OBSŁUGI MODUŁ TABLICY SYNOPTYCZNEJ - MTS42. Aktualizacja

Centrala Sterująca 540BPR

Jednym z najlepszych sposobów poznawania nowego typu mikrokontrolera

Xelee Mini IR / DMX512

PRUS. projekt dokumentacja końcowa

Transkrypt:

Tester P R O Jmonitorów E K T Y VGA Tester monitorów VGA, część 2 AVT 979 W dobie powszechnego korzystania z komputerów PC równie powszechne stało się użycie współpracujących z nimi monitorów VGA. Podczas wszelkich prac serwisowych związanych z ich naprawą i regulacją, zarówno tradycyjnych CRT, jak i LCD, szczególnie przydatny może być specjalny tester. Przedstawiona niżej konstrukcja takiego przyrządu zwraca uwagę m.in. ze względu na wykorzystanie układów programowalnych i języków opisu sprzętu. Rekomacje: tester trudno jest polecić komuś, kto chce jednorazowo wykonać naprawę monitora komputerowego, dla serwisantów robiących to na co dzień będzie natomiast cennym wyposażeniem stanowiska pracy. PODSTAWOWE PARAMETRY Płytka o wymiarach 95x74 mm Zasilanie: 6...8 VDC Pobór prądu: 118 ma/6 V Obrazy testowe: kolorowe pasy (8 kolorów), krata, kropki, tło: czerwone, zielone, niebieski, białe Rozdzielczości obrazu: 640x480, 800x600, 1024x768 Częstotliwości odświeżania: 60 i 85 Hz Wyświetlanie dodatkowych informacji na ekranie (OSD) Możliwość zmiany kolejności kolorów w obrazie pasów Regulowana gęstość węzłów kraty Możliwość zmiany koloru obrazu kraty i kropek (czerwony, zielony, niebieski, biały) Automatyczny tryb pracy (sekwencyjna zmiana poszczególnych obrazów testowych) Blok generatora obrazu kraty Blok ten, oprócz obrazu kraty o regulowanej wielkości oczek, wytwarza również obraz kropek oraz umożliwia uzyskanie jednorodnego tła o trzech kolorach podstawowych oraz w kolorze białym. Poziom wysoki na wejściu BLNAK powoduje wyzerowanie wyjść R, G, B bloku (wygaszenie obrazu). Wejście LP steruje rodzajem obrazu wyświetlanego na ekranie: dla LP=0 wyświetlana jest krata, dla LP=1 obraz kropek, pojawiających się w miejscach skrzyżowania linii obrazu kraty. Na 10 bitowe wejścia cntx, cnty podawane są z bloku wytwarzania impulsów synchronizacji współrzędne odpowiednio pozioma i pionowa aktualnie wybieranego punktu. Wejście LSize określa rozmiar (w punktach) oczka obrazu kraty lub gęstość kropek, a stan wejścia PCol wyznacza kolor (czerwony, zielony, niebieski lub biały) punktu na ekranie. Gdy LSize- =1, wówczas uzyskuje się jednorodny obraz o kolorze zależnym od stanu wejścia PCol. Znaczenie wejść MaxX oraz MaxY jest identyczne jak dla bloku wytwarzania impulsów synchronizacji. Kod opisujący działanie bloku generatora obrazu kraty przedstawiono na list. 4. Blok generatora obrazu kolorowych pasów Jedynym zadaniem tego bloku jak sugeruje jego nazwa jest wytwarzania obrazu kolorowych pasów. Pasy są wyświetlane w typowym porządku: biały, żółty, niebieskozielony, zielony, karmazynowy, czerwony, niebieski, czarny. Kolor pierwszego od lewej pasa wyznacza wartość podana na wejście RGBInitColor. Dla RGBInitColor=1 kolejność wyświetlanych pasów jest taka, jak opisano to powyżej, dla RGBInitColor=2 obraz rozpoczyna się od pasa o kolorze żółtym, a kończy na pasie o kolorze białym, itd. Wartość podana na wejście BCoef określa szerokość (w punktach) pojedynczego pasa. Wartość ta, zadawana przez blok sterowania, jest równa liczbie aktywnych punktów w linii dla danego trybu pracy podzielonej przez 8 (czyli całkowitą liczbę wyświetlanych pasów; BCoef=A H /8). Znaczenie pozostałych wejść jest takie samo jak dla bloku generatora kraty. Na list. 5 przedstawiono kod w języku Verilog opisujący działania bloku generatora kolorowych pasów. Blok wyświetlania informacji na ekranie Blok ten spełnia dwie zasadnicze funkcje. Pierwsza z nich to funkcja multipleksera przełączającego sygnały RGB z bloku generatora kraty (dla sygnału gsw=0) lub bloku generatora pasów kolorowych (gsw=1). Druga funkcja polega na dodaniu do obrazu tekstowej informacji o bieżącej rozdzielczości obrazu i częstotliwości odświeżania. Informacja ta jest przechowywana w postaci odpowiednio przygotowanej mapy bitowej w pamięci typu Block RAM zastosowanego w testerze układu FPGA. W celu przygotowania map bitowych, odpowiadających poszczególnym wyświetlanym napisom, posłużono się specjalnie do tego celu napisanym programem w języku C++, który przekształca standardową (8 bitową) mapę bitową Windows do postaci kodu w języku Verilog zawierającego sekwencję inicjującą zawartość bloków pamięci Block RAM. Na list. 6 pokazano fragment kodu opisujący moduł o nazwie video_rom, który implementuje pamięć obrazu z zawartością mapy bitowej dla poszczególnych napisów. Wykorzystano tu elementy biblioteczne o nazwie RAMB16_S1 (dla rodziny Spartan 3 firmy Xilinx) opisujące bloki synchronicznej pamięci RAM o organizacji 16384x1 bit. Inicjowanie zawartości początkowej takiej pamięci (ustalanej podczas konfiguracji układu FPGA) polega na zdefiniowaniu szeregu atrybutów (dla bloku o nazwie RAMB16_S1 dokładnie 64) rozpoczynających się od słowa kluczowego defparam tak jak wyróżniono to na list. 6. 34

List. 4. Opis bloku generatora kraty module cross_hatch(input vga_clk, input [10:0] cntx,cnty,maxx,maxy,lsize, input BLANK,LP, input [1:0] PCol, output R,G,B); reg [10:0] cx,cy; reg [2:0] RGB; wire eq_cx,eq_cy; reg set_pixel; reg [2:0] RGBColor; assign eq_cx=(cntx==cx); assign eq_cy=(cnty==cy); //ustalenie koloru punktów always @(PCol) case(pcol) 2'b00: RGBColor=3'b111; //biały 2'b01: RGBColor=3'b100; //czerwony 2'b10: RGBColor=3'b010; //zielony 2'b11: RGBColor=3'b001; //niebieski case always @(posedge vga_clk) if(blank) RGB<=0; // jeżeli BLANK wygaś obraz if(cntx==0 cntx==maxx cnty==0 cnty==maxy) RGB<=3'b100; //rysuj obramowanie obrazu set_pixel<=0; if(cntx==0) cx<=lsize; if(cnty==0) cy<=lsize; if(eq_cx) cx<=cx+lsize; if(eq_cy) cy<=cy+lsize; set_pixel<=1; //aktualizacja współrzędnych węzłów kraty if(lp) //jeżeli ma być obraz kropek if(eq_cx&set_pixel) RGB<=RGBColor; RGB<=3'b000; //obraz kraty if(eq_cx set_pixel) RGB<=RGBColor; RGB<=3'b000; assign {R,G,B}=RGB; module List. 5. Opis bloku generatora kolorowych pasów module bars(input vga_clk,blank, input [10:0] cntx,cnty, input [2:0] RGBInitColor, input [7:0] BCoef, output reg R,G,B); reg [7:0] r_cnt; reg [2:0] RGB; always @(posedge vga_clk) if(blank) RGB<=3'b000;r_cnt<=8'd0; if(cntx==10'd0) RGB<=RGBInitColor; //jeżeli współrzędna x=0 inicjuj kolor 1 szego pasa if(r_cnt<bcoef) r_cnt<=r_cnt+1; r_cnt<=0; RGB<=RGB+1; //koniec szerokości pasa, zmiana koloru następny pas always @(RGB) case(rgb) 3'b000: {R,G,B}=3'b000; 3'b001: {R,G,B}=3'b111; 3'b010: {R,G,B}=3'b110; 3'b011: {R,G,B}=3'b011; 3'b100: {R,G,B}=3'b010; 3'b101: {R,G,B}=3'b101; 3'b110: {R,G,B}=3'b100; 3'b111: {R,G,B}=3'b001; case //odwzorowanie kolejności kolorów wyświetlanych pasów module Z kolei list. 7 przedstawia opis samego modułu wyświetlania informacji na ekranie, który odwołuje się do wspomnianego powyżej modułu pamięci obrazu. Blok sterowania Zadaniem bloku sterowania jest obsługa zdarzeń (zmiana trybu pracy, zmiana położenia obrazu, zmiana typu obrazu testowego, itp.) pochodzących od użytkownika testera VGA, posługującego się klawiaturą urządzenia oraz generowanie na tej podstawie odpowiednich wartości parametrów, które następnie są odpowiednio interpretowane przez pozostałe bloki testera. Znaczenie poszczególnych parametrów (sygnałów wyjściowych bloku sterowania) zostało już wymienione przy okazji omawiania innych bloków testera. Listing bloku sterowania, ze względu na jego znaczną długość, nie został tutaj pokazany, ale jest dostępny w materiałach dodatkowych (CDEP4/ 2007 i CDEP6/2007). Układ elektryczny testera Schemat elektryczny testera pokazano na rys. 4. W znacznej części jest to standardowa aplikacja układu XC3S200 (U1) wraz z pamięcią konfiguracji XCF01 (U2). Do zasilania układu testera wybrano trzy stabilizatory LDO z rodziny SPX1117 (układ FPGA wymaga trzech napięć zasilających: 1,2 V, 2,5 V oraz 3,3 V). Dioda D1 zabezpiecza układy testera przed skutkami odwrotnego włączenia napięcia zasilania. Jako źródło częstotliwości zegara zastosowano generator kwarcowy (U3) o wartości 40 MHz. Wszystkie porty wejścia wyjścia układu FPGA zostały skonfigurowane do pracy w standardzie LVTTL. Diody LED D2...D9 sygnalizujące tryb pracy testera są połączone poprzez rezystory ograniczające prąd bezpośrednio do końcówek układu FPGA. W celu dopasowania impedancji charakterystycznej i amplitudy sygnałów wyjściowych RGB do wymogów standardu VGA, zastosowano proste dzielniki rezystancyjne złożone z rezystorów R1...R6. Alternatywnym sposobem zapewnienia impedancji charakterystycznej 75 V dla sygnałów RGB może być wykorzystanie obwodów cyfrowego sterowania impedancją buforów wyjściowych (DCI Digitally Controlled Impedance) zintegrowanych w układzie XC3S200. Jednak ze względu na trudności z jednoczesnym 35

zapewnieniem odpowiedniej amplitudy sygnałów, z pomysłu tego zrezygnowano. Złącze J3 służy do konfiguracji układu FPGA i programowania pamięci Falsh (U2) poprzez interfejs JTAG. Układ końcówek złącza jest kompatybilny z oferowanym np. przez programator UnISProg opisany w EP1/2004, który można zastosować do programowania testera. Na złączu J4 dostępne są dodatkowo 22 sygnały portów wejścia wyjścia układu FPGA, które mogą być przydatne np. podczas testowania i rozbudowy testera. Rys. 4. Schemat elektryczny testera 36

List. 6. Fragment opisu modułu pamięci obrazu module video_rom (input clk, input [3:0] Mode, input [13:0] addr, output reg DO); wire D1,D2,D3; reg [13:0] addr_m; always @(Mode) case(mode) 4'b0001: addr_m={1'b0,addr[12:0]}; DO=D1; 4'b1001: addr_m={1'b1,addr[12:0]}; DO=D1; 4'b0010: addr_m={1'b0,addr[12:0]}; DO=D2; 4'b1010: addr_m={1'b1,addr[12:0]}; DO=D2; 4'b0100: addr_m={1'b0,addr[12:0]}; DO=D3; 4'b1100: addr_m={1'b0,addr[12:0]}; DO=D3; default: addr_m={1'b0,addr[12:0]}; DO=D1; case //ustalenie adresu dla bloku pamięci oraz wybór wyjścia tego bloku RAMB16_S1 RAMB1 (.DO(D1),.ADDR(addr_m),.CLK(clk),.DI(1'b0),.EN(1'b1),.SSR(1'b0),.WE(1'b0)); defparam RAMB1.INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; defparam RAMB1.INIT_02 = 256'h00000000000000000000000000000000381C3E0780000F81F0700000F83803C0; defparam RAMB1.INIT_03 = 256'h00000000000000000000000000000000381C7F0FE0001FC3F8780001FC3C07F0; defparam RAMB1.INIT_04 = 256'h00000000000000000000000000000000381C771EE0001DC71C780001DC3C0F70; defparam RAMB1.INIT_05 = 256'h00000000000000000000000000000000381CE38C700038E71C7C00038E3E0638; defparam RAMB1.INIT_06 = 256'h000000000000000000000000000000FF381CE380700038E71C7C1C738E3E0038; defparam RAMB1.INIT_07 = 256'h000000000000000000000000000000FF381CE387700038E3B8761C738E3B03B8; defparam RAMB1.INIT_08 = 256'h000000000000000000000000000000E03FFCE38FF00038E1F0730EE38E3987F8; defparam RAMB1.INIT_09 = 256'h000000000000000000000000000000703FFCE39EF00038E1F07307C38E398F78; defparam RAMB1.INIT_0A = 256'h000000000000000000000000000000383FFCE39C700038E3B87187C38E38CE38; defparam RAMB1.INIT_0B = 256'h0000000000000000000000000000003C381CE39C700038E71C70C3838E386E38; defparam RAMB1.INIT_0C = 256'h0000000000000000000000000000001C381CE39C700038E71DFFC7C38EFFEE38; defparam RAMB1.INIT_0D = 256'h0000000000000000000000000000000E381CE39C700038E71DFFC7C38EFFEE38; defparam RAMB1.INIT_0E = 256'h00000000000000000000000000000007381C770EE0071DC7BC700EE1DC380770; defparam RAMB1.INIT_0F = 256'h000000000000000000000000000000FF381C7F0FE0071FC3F8701C71FC3807F0; defparam RAMB1.INIT_10 = 256'h000000000000000000000000000000FF381C3E0380070F81F0701C70F83801C0; //... //powyżej zapis mapy bitowej dla tekstu: 640x480, 60Hz RAMB16_S1 RAMB2 (.DO(D2),.ADDR(addr_m),.CLK(clk),.DI(1'b0),.EN(1'b1),.SSR(1'b0),.WE(1'b0)); RAMB16_S1 RAMB3 (.DO(D3),.ADDR(addr_m),.CLK(clk),.DI(1'b0),.EN(1'b1),.SSR(1'b0),.WE(1'b0)); //konkretyzacja pozostałych bloków pamięci Block RAM List. 7. Opis bloku wyświetlania informacji na ekranie module osd(input clk, inr1, ing1, inb1, inr2, ing2, inb2, gsw, output outr, outg, outb, input [10:0] cntx,cnty, input [3:0] Mode); reg [13:0] addr; reg sw; wire DO; reg R,G,B; wire inr,ing,inb; reg [10:0] osd_maxx; video_rom b1(.do(do),.clk(clk),.addr(addr),.mode(mode)); always @(Mode) case (Mode) 4'b0100: osd_maxx=11'd170; 4'b1100: osd_maxx=11'd170; default: osd_maxx=11'd160; case //ustalenie współrzędnej x końca napisu always @(posedge clk) if(cnty>11'd10&&cnty<11'd37) //OSD aktywne dla współrzędnej y=11..36 if(cntx>=11'd21&&cntx<11'd277) //OSD aktywne dla 256 kolejnych punktów if(cntx<osd_maxx) sw=1; sw=0; //jeżeli x<osd_maxx wyświetlaj bitmapę if(cnty>11'd13) if(do) {R,G,B}<=3'b111; //jeżeli odczytano 1 z pamięci kolor punktu biały {R,G,B}<=3'b001; //w przeciwnym razie tło kolor niebieski addr<=addr+1; //zwiększ adres komórki pamięci addr<=14'd0; assign {inr,ing,inb}=gsw?{inr1,ing1,inb1}:{inr2,ing2,inb2}; assign {outr,outg,outb}=sw?{r,g,b}:{inr,ing,inb}; //realizacja multipleksera module Montaż Schemat montażowy płytki testera pokazano na rys. 5. Elementy SMD są montowane po obydwu stronach płytki drukowanej. Na dolnej warstwie płytki, w pobliżu miejsca. gdzie na górnej warstwie znajduje się układ U1, montowane są kondensatory C11... C21 z wyjątkiem kondensatora C15. Z kolei rezystory R9...R13 są montowane w pobliżu mikroprzełączników S1...S5. Układ U1 można z dość dobrym skutkiem przylutować do płytki przy pomocy zwykłej stacji lutowniczej, usuwając miedzianą plecionką (o handlowej nazwie solder remover ) nadmiar spoiwa. Plecionka powinna być zwilżona w płynnym topniku. Obsługa testera Po załączeniu zasilania tester jest od razu gotowy do pracy, wytwarzając obraz kolorowych pasów w rozdzielczości VGA 640x480 i częstotliwości odświeżania 60 Hz. Na płytce drukowanej zapalane są diody LED obok odpowiedniego opisu, sygnalizując bieżący tryb pracy (diody D7... D9 sygnalizują wybraną rozdzielczość obrazu, diody D5, D6 częstotliwość odświeżania) oraz funkcję klawiszy S1...S4 (diody D2...D4). Tuż po włączeniu zasilania aktywna jest funkcja 37

a) b) Rys. 5. Schemat montażowy testera VGA a) widok górnej warstwy, b) widok dolnej warstwy centrowania obrazu (zapalona dioda D4). Kolejne naciskanie klawisza S5 (oznaczonego na płytce drukowanej napisem FUN. ) powoduje zmianę funkcji kolejno na: wybór typu obrazu testowego (zapalona dioda D3 powyżej napisu TYP ), wybór parametrów (trybu) pracy (zapalona dioda D3 powyżej napisu PAR. ) i ponownie centrowanie obrazu. Dla aktywnej funkcji centrowania, uzyskany na ekranie obraz testowy można przesuwać w górę lub w dół (klawisze S4 lub S3) oraz w lewo lub w prawo (klawisze S1 lub S2). W przypadku funkcji wyboru rodzaju obrazu testowego klawisze S1...S4 pełnią funkcje opisane niżej. Klawiszem S1 możliwy jest wybór rodzaju obrazu testowego: krata lub kolorowe pasy. W przypadku obrazu kolorowych pasów, klawiszami S4 i S3 można zmieniać (cyklicznie przesuwać) kolejność pasów. Klawisz S2 jest w tym trybie nieaktywny. W przypadku obrazu kraty, gęstość linii kraty można zwiększać lub zmniejszać (w stosunku x2 dla każdego naciśnięcia klawisza) za pomocą klawiszy S4 lub S3. Wielokrotne naciskanie tych klawiszy spowoduje, że w końcu uzyskamy obraz albo czarnego tła (na ekranie widoczna będzie czerwona ramka wyznaczająca granice obrazu oraz w lewym, górnym rogu ekranu, na niebieskim tle będzie widniał biały tekst informujący o bieżącej rozdzielczości obrazu i częstotliwości odświeżania), albo tła białego (maksymalne zagęszczenie linii kraty). Zarówno kolor tego tła, jak i kolor linii kraty (lub punktów) można zmieniać naciskając klawisz S2. Możliwy jest wybór koloru białego, czerwonego, zielonego lub niebieskiego. Gdy wyświetlany jest obraz kraty, jednoczesne naciśnięcie klawiszy S4 i S2 (co praktycznie można zrealizować np. poprzez przytrzymanie klawisza S4 i wciśnięcie S2) spowoduje wyświetlenie obrazu kropek, których kolor można zmieniać klawiszem S2. Ponowne jednoczesne naciśnięcie klawiszy S4 i S2 spowoduje powrót do wyświetlania obrazu kraty. Dla funkcji wyboru parametrów obrazu, klawiszami S4 i S3 odpowiednio zwiększa się i zmniejsza rozdzielczość obrazu, a klawiszami S1 i S2 możliwa jest zmiana częstotliwości odświeżania. Dla trybu pracy XGA 1024x768 dostępna jest tylko jedna częstotliwość odświeżania 60 Hz. W przypadku, gdy klawisz funkcyjny S5 zostanie przytrzymany dłużej (ok. 2 sekundy), diody D2...D4 będą zapalać się i gasnąć kolejno, aż do momentu zwolnienia klawisza S5. Jednocześnie tester przejdzie do automatycznego trybu pracy, w którym są zmieniane kolejno (w pętli) wszystkie dostępne parametry obrazu: rozdzielczość, częstotliwość odświeżania, rodzaj obrazu testowego, kolorowe pasy przesuwane są cyklicznie w lewo lub w prawo, obraz kraty zagęszcza się lub rozrzedza, następuje przemieszczanie obrazu w górę, w dół, w lewo, w prawo, itd. W każdej chwili można powrócić do normalnego, manualnego trybu pracy poprzez jednokrotne naciśnięcie klawisza S5. Podsumowanie W przedstawionej wersji opisu w języku Verilog, dla zrównoważonej strategii optymalizacji pomiędzy maksymalizacją szybkości działania i minimalizacją powierzchni, implementacja testera zajmuje 381 bloków logicznych slice spośród 1920 (19%) dostępnych w układzie XC3S200. Pozostaje wiec jeszcze bardzo dużo wolnych zasobów, które można wykorzystać przy rozbudowie projektu testera. Dodatkowo, zamiast układu XC3S200 można byłoby zastosować mniejszy (tańszy) układ XC3S50 (architektura wyprowadzeń wszystkich układów Spartan 3 w takich samych obudowach jest identyczna, dzięki czemu przy zmianie układu nie trzeba zmieniać projektu płytki ani przypisań numerów końcówek dla portów wejścia/wyjścia), jednak układ ten posiada tylko jeden moduł DCM, w związku z czym do obsługi więcej niż 2 trybów pracy testera niezbędne byłoby zastosowanie kilku zewnętrznych generatorów taktujących o odpowiedniej częstotliwości punktu. Zbigniew Hajduk Politechnika Rzeszowska 38