TesterJmonitorów VGA
P R O E K T Y
Tester monitorów VGA,
część 2
AVT 979
W dobie powszechnego Blok generatora obrazu kraty liczbie aktywnych punktów w linii dla
Blok ten, oprócz obrazu kraty danego trybu pracy podzielonej przez
korzystania z komputerów PC
o regulowanej wielkości oczek, wy- 8 (czyli całkowitą liczbę wyświetla-
równie powszechne stało się
twarza również obraz kropek oraz nych pasów; BCoef=AH/8). Znaczenie
użycie współpracujących z nimi
umożliwia uzyskanie jednorodnego tła pozostałych wejść jest takie samo jak
o trzech kolorach podstawowych oraz dla bloku generatora kraty. Na list. 5
monitorów VGA. Podczas
w kolorze białym. Poziom wysoki na przedstawiono kod w języku Verilog
wszelkich prac serwisowych
wejściu BLNAK powoduje wyzerowa- opisujący działania bloku generatora
związanych z ich naprawą
nie wyjść R, G, B bloku (wygaszenie kolorowych pasów.
i regulacją, zarówno tradycyjnych obrazu). Wejście LP steruje rodzajem
obrazu wyświetlanego na ekranie: Blok wyświetlania informacji
CRT, jak i LCD, szczególnie
dla LP=0 wyświetlana jest krata, dla na ekranie
przydatny może być specjalny
LP=1 obraz kropek, pojawiających się Blok ten spełnia dwie zasadnicze
tester. Przedstawiona niżej
w miejscach skrzyżowania linii obrazu funkcje. Pierwsza z nich to funkcja
kraty. Na 10 bitowe wejścia cntx, cnty multipleksera przełączającego sygna-
konstrukcja takiego przyrządu
podawane są z bloku wytwarzania ły RGB z bloku generatora kraty (dla
zwraca uwagę m.in. ze względu
impulsów synchronizacji współrzędne sygnału gsw=0) lub bloku generato-
na wykorzystanie układów
odpowiednio pozioma i pionowa ak- ra pasów kolorowych (gsw=1). Druga
programowalnych i języków opisu tualnie wybieranego punktu. Wejście funkcja polega na dodaniu do obrazu
LSize określa rozmiar (w punktach) tekstowej informacji o bieżącej rozdziel-
sprzętu.
oczka obrazu kraty lub gęstość kro- czości obrazu i częstotliwości odświe-
Rekomendacje:
pek, a stan wejścia PCol wyznacza żania. Informacja ta jest przechowy-
tester trudno jest polecić
kolor (czerwony, zielony, niebieski lub wana w postaci odpowiednio przygo-
biały) punktu na ekranie. Gdy LSize- towanej mapy bitowej w pamięci typu
komuś, kto chce jednorazowo
=1, wówczas uzyskuje się jednorod- Block RAM zastosowanego w testerze
wykonać naprawę monitora
ny obraz o kolorze zależnym od stanu układu FPGA. W celu przygotowania
komputerowego, dla serwisantów
wejścia PCol. Znaczenie wejść MaxX map bitowych, odpowiadających po-
robiących to na co dzień będzie
oraz MaxY jest identyczne jak dla szczególnym wyświetlanym napisom,
bloku wytwarzania impulsów synchro- posłużono się specjalnie do tego celu
natomiast cennym wyposażeniem
nizacji. Kod opisujący działanie bloku napisanym programem w języku C++,
stanowiska pracy.
generatora obrazu kraty przedstawiono który przekształca standardową (8 bi-
na list. 4. tową) mapę bitową Windows do po-
staci kodu w języku Verilog zawiera-
Blok generatora obrazu jącego sekwencję inicjującą zawartość
kolorowych pasów bloków pamięci Block RAM.
Jedynym zadaniem tego bloku Na list. 6 pokazano fragment
PODSTAWOWE PARAMETRY
jak sugeruje jego nazwa jest wy- kodu opisujący moduł o nazwie vi-
twarzania obrazu kolorowych pasów. deo_rom, który implementuje pamięć
" Płytka o wymiarach 95x74 mm
Pasy są wyświetlane w typowym po- obrazu z zawartością mapy bitowej
" Zasilanie: 6...8 VDC
" Pobór prądu: 118 mA/6 V
rządku: biały, żółty, niebieskozielony, dla poszczególnych napisów. Wy-
" Obrazy testowe: kolorowe pasy (8 kolo-
zielony, karmazynowy, czerwony, nie- korzystano tu elementy biblioteczne
rów), krata, kropki, tło: czerwone, zielone,
bieski, czarny. Kolor pierwszego od o nazwie RAMB16_S1 (dla rodziny
niebieski, białe
lewej pasa wyznacza wartość podana Spartan 3 firmy Xilinx) opisujące
" Rozdzielczości obrazu: 640x480, 800x600,
1024x768 na wejście RGBInitColor. Dla RGBI- bloki synchronicznej pamięci RAM
" Częstotliwości odświeżania: 60 i 85 Hz
nitColor=1 kolejność wyświetlanych o organizacji 16384x1 bit. Inicjowanie
" Wyświetlanie dodatkowych informacji na
pasów jest taka, jak opisano to po- zawartości początkowej takiej pamięci
ekranie (OSD)
wyżej, dla RGBInitColor=2 obraz roz- (ustalanej podczas konfiguracji układu
" Możliwość zmiany kolejności kolorów
poczyna się od pasa o kolorze żółtym, FPGA) polega na zdefiniowaniu sze-
w obrazie pasów
" Regulowana gęstość węzłów kraty a kończy na pasie o kolorze białym, regu atrybutów (dla bloku o nazwie
" Możliwość zmiany koloru obrazu kraty
itd. Wartość podana na wejście BCoef RAMB16_S1 dokładnie 64) rozpoczy-
i kropek (czerwony, zielony, niebieski, biały)
określa szerokość (w punktach) poje- nających się od słowa kluczowego
" Automatyczny tryb pracy (sekwencyjna
dynczego pasa. Wartość ta, zadawa- defparam tak jak wyróżniono to
zmiana poszczególnych obrazów testowych)
na przez blok sterowania, jest równa na list. 6.
Elektronika Praktyczna 5/2007
34
Tester monitorów VGA
Z kolei list. 7 przedstawia opis sa-
List. 4. Opis bloku generatora kraty
mego modułu wyświetlania informa-
module cross_hatch(input vga_clk,
input [10:0] cntx,cnty,MaxX,MaxY,LSize,
cji na ekranie, który odwołuje się do
input BLANK,LP,
wspomnianego powyżej modułu pa-
input [1:0] PCol,
output R,G,B);
mięci obrazu.
reg [10:0] cx,cy;
reg [2:0] RGB;
Blok sterowania
wire eq_cx,eq_cy;
Zadaniem bloku sterowania jest
reg set_pixel;
reg [2:0] RGBColor;
obsługa zdarzeń (zmiana trybu pra-
assign eq_cx=(cntx==cx); cy, zmiana położenia obrazu, zmiana
assign eq_cy=(cnty==cy);
typu obrazu testowego, itp.) pocho-
//ustalenie koloru punktów dzących od użytkownika testera VGA,
always @(PCol)
posługującego się klawiaturą urządze-
case(PCol)
2'b00: RGBColor=3'b111; //biały nia oraz generowanie na tej podsta-
2'b01: RGBColor=3'b100; //czerwony
wie odpowiednich wartości parame-
2'b10: RGBColor=3'b010; //zielony
2'b11: RGBColor=3'b001; //niebieski trów, które następnie są odpowiednio
endcase
interpretowane przez pozostałe bloki
always @(posedge vga_clk) testera. Znaczenie poszczególnych
if(BLANK) RGB<=0; // jeżeli BLANK wygaś obraz
parametrów (sygnałów wyjściowych
else
if(cntx==0||cntx==MaxX||cnty==0||cnty==MaxY)
bloku sterowania) zostało już wymie-
begin
nione przy okazji omawiania innych
RGB<=3'b100; //rysuj obramowanie obrazu
set_pixel<=0;
bloków testera.
if(cntx==0) cx<=LSize;
Listing bloku sterowania, ze wzglę-
if(cnty==0) cy<=LSize;
end
du na jego znaczną długość, nie zo-
else
stał tutaj pokazany, ale jest dostępny
begin
w materiałach dodatkowych (CDEP4/
if(eq_cx) cx<=cx+LSize;
2007 i CDEP6/2007).
if(eq_cy) begin cy<=cy+LSize; set_pixel<=1; end
//aktualizacja współrzędnych węzłów kraty
Układ elektryczny testera
if(LP) //jeżeli ma być obraz kropek
begin
Schemat elektryczny testera po-
if(eq_cx&set_pixel) RGB<=RGBColor;
kazano na rys. 4. W znacznej części
else RGB<=3'b000;
end else
jest to standardowa aplikacja układu
begin //obraz kraty
XC3S200 (U1) wraz z pamięcią konfi-
if(eq_cx|set_pixel) RGB<=RGBColor;
else RGB<=3'b000;
guracji XCF01 (U2).
end
Do zasilania układu testera wybra-
end
assign {R,G,B}=RGB;
no trzy stabilizatory LDO z rodziny
endmodule
SPX1117 (układ FPGA wymaga trzech
napięć zasilających: 1,2 V, 2,5 V oraz
3,3 V). Dioda D1 zabezpiecza układy
List. 5. Opis bloku generatora kolorowych pasów
testera przed skutkami odwrotnego
module bars(input vga_clk,BLANK,
input [10:0] cntx,cnty,
włączenia napięcia zasilania. Jako zró-
input [2:0] RGBInitColor,
dło częstotliwości zegara zastosowano
input [7:0] BCoef,
output reg R,G,B);
generator kwarcowy (U3) o wartości
40 MHz. Wszystkie porty wejścia wyj-
reg [7:0] r_cnt;
reg [2:0] RGB;
ścia układu FPGA zostały skonfiguro-
always @(posedge vga_clk) wane do pracy w standardzie LVTTL.
if(BLANK)
Diody LED D2...D9 sygnalizujące tryb
begin RGB<=3'b000;r_cnt<=8'd0; end
else
pracy testera są połączone poprzez
begin
rezystory ograniczające prąd bezpo-
if(cntx==10'd0) RGB<=RGBInitColor;
//jeżeli współrzędna x=0 inicjuj kolor 1 szego pasa
średnio do końcówek układu FPGA.
W celu dopasowania impedancji
if(r_cnt
else begin r_cnt<=0; RGB<=RGB+1;end
charakterystycznej i amplitudy sygna-
//koniec szerokości pasa, zmiana koloru następny pas
łów wyjściowych RGB do wymogów
end
standardu VGA, zastosowano proste
always @(RGB) dzielniki rezystancyjne złożone z rezy-
case(RGB)
storów R1...R6. Alternatywnym sposo-
3'b000: {R,G,B}=3'b000;
3'b001: {R,G,B}=3'b111;
bem zapewnienia impedancji charak-
3'b010: {R,G,B}=3'b110;
terystycznej 75 V dla sygnałów RGB
3'b011: {R,G,B}=3'b011;
3'b100: {R,G,B}=3'b010;
może być wykorzystanie obwodów
3'b101: {R,G,B}=3'b101;
cyfrowego sterowania impedancją bu-
3'b110: {R,G,B}=3'b100;
3'b111: {R,G,B}=3'b001;
forów wyjściowych (DCI Digitally
endcase
//odwzorowanie kolejności kolorów wyświetlanych pasów Controlled Impedance) zintegrowa-
nych w układzie XC3S200. Jednak ze
endmodule
względu na trudności z jednoczesnym
Elektronika Praktyczna 5/2007
35
Tester monitorów VGA
zapewnieniem odpowiedniej amplitu- ci Falsh (U2) poprzez interfejs JTAG. wania testera. Na złączu J4 dostępne
dy sygnałów, z pomysłu tego zrezy- Układ końcówek złącza jest kompaty- są dodatkowo 22 sygnały portów wej-
gnowano. bilny z oferowanym np. przez progra- ścia wyjścia układu FPGA, które mogą
Złącze J3 służy do konfiguracji mator UnISProg opisany w EP1/2004, być przydatne np. podczas testowania
układu FPGA i programowania pamię- który można zastosować do programo- i rozbudowy testera.
Rys. 4. Schemat elektryczny testera
Elektronika Praktyczna 5/2007
36
Tester monitorów VGA
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: begin addr_m={1'b0,addr[12:0]}; DO=D1; end
4'b1001: begin addr_m={1'b1,addr[12:0]}; DO=D1; end
4'b0010: begin addr_m={1'b0,addr[12:0]}; DO=D2; end
4'b1010: begin addr_m={1'b1,addr[12:0]}; DO=D2; end
4'b0100: begin addr_m={1'b0,addr[12:0]}; DO=D3; end
4'b1100: begin addr_m={1'b0,addr[12:0]}; DO=D3; end
default: begin addr_m={1'b0,addr[12:0]}; DO=D1; end
endcase
//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
Montaż
List. 7. Opis bloku wyświetlania informacji na ekranie
Schemat montażowy płytki testera
module osd(input clk, inR1, inG1, inB1, inR2, inG2, inB2, gsw,
output outR, outG, outB,
pokazano na rys. 5. Elementy SMD
input [10:0] cntx,cnty,
są montowane po obydwu stronach
input [3:0] Mode);
płytki drukowanej. Na dolnej war-
reg [13:0] addr;
stwie płytki, w pobliżu miejsca. gdzie
reg sw; wire DO;
reg R,G,B;
na górnej warstwie znajduje się układ
wire inR,inG,inB;
reg [10:0] osd_maxx; U1, montowane są kondensatory C11...
C21 z wyjątkiem kondensatora C15.
video_rom b1(.DO(DO),.clk(clk),.addr(addr),.Mode(Mode));
Z kolei rezystory R9...R13 są monto-
always @(Mode)
wane w pobliżu mikroprzełączników
case (Mode)
4'b0100: osd_maxx=11'd170;
S1...S5. Układ U1 można z dość do-
4'b1100: osd_maxx=11'd170;
brym skutkiem przylutować do płytki
default: osd_maxx=11'd160;
endcase
przy pomocy zwykłej stacji lutowni-
//ustalenie współrzędnej x końca napisu
czej, usuwając miedzianą plecionką
always @(posedge clk)
(o handlowej nazwie solder remover )
begin
if(cnty>11'd10&&cnty<11'd37) nadmiar spoiwa. Plecionka powinna
begin //OSD aktywne dla współrzędnej y=11..36
być zwilżona w płynnym topniku.
if(cntx>=11'd21&&cntx<11'd277)
begin //OSD aktywne dla 256 kolejnych punktów
Obsługa testera
if(cntxPo załączeniu zasilania tester jest
//jeżeli xod razu gotowy do pracy, wytwarza-
if(cnty>11'd13)
jąc obraz kolorowych pasów w roz-
begin
if(DO) {R,G,B}<=3'b111; dzielczości VGA 640x480 i częstotli-
//jeżeli odczytano 1 z pamięci kolor punktu biały
wości odświeżania 60 Hz. Na płytce
else {R,G,B}<=3'b001; //w przeciwnym razie tło kolor niebieski
addr<=addr+1; //zwiększ adres komórki pamięci
drukowanej zapalane są diody LED
end
obok odpowiedniego opisu, sygnali-
end
end else addr<=14'd0;
zując bieżący tryb pracy (diody D7...
end
D9 sygnalizują wybraną rozdzielczość
assign {inR,inG,inB}=gsw?{inR1,inG1,inB1}:{inR2,inG2,inB2};
obrazu, diody D5, D6 częstotliwość
assign {outR,outG,outB}=sw?{R,G,B}:{inR,inG,inB};
odświeżania) oraz funkcję klawiszy
//realizacja multipleksera
S1...S4 (diody D2...D4). Tuż po włą-
endmodule
czeniu zasilania aktywna jest funkcja
Elektronika Praktyczna 5/2007
37
Tester monitorów VGA
a) b)
Rys. 5. Schemat montażowy testera VGA a) widok górnej warstwy, b) widok dolnej warstwy
centrowania obrazu (zapalona dioda tła białego (maksymalne zagęszczenie czanie obrazu w górę, w dół, w lewo,
D4). Kolejne naciskanie klawisza S5 linii kraty). Zarówno kolor tego tła, w prawo, itd. W każdej chwili można
(oznaczonego na płytce drukowanej jak i kolor linii kraty (lub punktów) powrócić do normalnego , manualne-
napisem FUN. ) powoduje zmianę można zmieniać naciskając klawisz go trybu pracy poprzez jednokrotne
funkcji kolejno na: wybór typu ob- S2. Możliwy jest wybór koloru bia- naciśnięcie klawisza S5.
razu testowego (zapalona dioda D3 łego, czerwonego, zielonego lub nie-
powyżej napisu TYP ), wybór para- bieskiego. Gdy wyświetlany jest obraz Podsumowanie
metrów (trybu) pracy (zapalona dioda kraty, jednoczesne naciśnięcie klawiszy W przedstawionej wersji opisu
D3 powyżej napisu PAR. ) i ponow- S4 i S2 (co praktycznie można zreali- w języku Verilog, dla zrównoważonej
nie centrowanie obrazu. zować np. poprzez przytrzymanie kla- strategii optymalizacji pomiędzy mak-
Dla aktywnej funkcji centrowania, wisza S4 i wciśnięcie S2) spowoduje symalizacją szybkości działania i mini-
uzyskany na ekranie obraz testowy wyświetlenie obrazu kropek, których malizacją powierzchni, implementacja
można przesuwać w górę lub w dół kolor można zmieniać klawiszem S2. testera zajmuje 381 bloków logicznych
(klawisze S4 lub S3) oraz w lewo lub Ponowne jednoczesne naciśnięcie kla- slice spośród 1920 (19%) dostępnych
w prawo (klawisze S1 lub S2). wiszy S4 i S2 spowoduje powrót do w układzie XC3S200. Pozostaje wiec
W przypadku funkcji wyboru rodza- wyświetlania obrazu kraty. jeszcze bardzo dużo wolnych zaso-
ju obrazu testowego klawisze S1...S4 Dla funkcji wyboru parametrów bów, które można wykorzystać przy
pełnią funkcje opisane niżej. Klawi- obrazu, klawiszami S4 i S3 odpowied- rozbudowie projektu testera. Dodatko-
szem S1 możliwy jest wybór rodzaju nio zwiększa się i zmniejsza rozdziel- wo, zamiast układu XC3S200 można
obrazu testowego: krata lub kolorowe czość obrazu, a klawiszami S1 i S2 byłoby zastosować mniejszy (tańszy)
pasy. W przypadku obrazu kolorowych możliwa jest zmiana częstotliwości układ XC3S50 (architektura wypro-
pasów, klawiszami S4 i S3 można odświeżania. Dla trybu pracy XGA wadzeń wszystkich układów Spartan
zmieniać (cyklicznie przesuwać) ko- 1024x768 dostępna jest tylko jedna 3 w takich samych obudowach jest
lejność pasów. Klawisz S2 jest w tym częstotliwość odświeżania 60 Hz. identyczna, dzięki czemu przy zmia-
trybie nieaktywny. W przypadku ob- W przypadku, gdy klawisz funk- nie układu nie trzeba zmieniać pro-
razu kraty, gęstość linii kraty można cyjny S5 zostanie przytrzymany dłu- jektu płytki ani przypisań numerów
zwiększać lub zmniejszać (w stosunku żej (ok. 2 sekundy), diody D2...D4 końcówek dla portów wejścia/wyjścia),
x2 dla każdego naciśnięcia klawisza) będą zapalać się i gasnąć kolejno, aż jednak układ ten posiada tylko jeden
za pomocą klawiszy S4 lub S3. Wie- do momentu zwolnienia klawisza S5. moduł DCM, w związku z czym do
lokrotne naciskanie tych klawiszy spo- Jednocześnie tester przejdzie do auto- obsługi więcej niż 2 trybów pracy te-
woduje, że w końcu uzyskamy obraz matycznego trybu pracy, w którym są stera niezbędne byłoby zastosowanie
albo czarnego tła (na ekranie widocz- zmieniane kolejno (w pętli) wszystkie kilku zewnętrznych generatorów tak-
na będzie czerwona ramka wyznacza- dostępne parametry obrazu: rozdziel- tujących o odpowiedniej częstotliwości
jąca granice obrazu oraz w lewym, czość, częstotliwość odświeżania, ro- punktu.
górnym rogu ekranu, na niebieskim dzaj obrazu testowego, kolorowe pasy Zbigniew Hajduk
tle będzie widniał biały tekst infor- przesuwane są cyklicznie w lewo lub Politechnika Rzeszowska
mujący o bieżącej rozdzielczości obra- w prawo, obraz kraty zagęszcza się
zu i częstotliwości odświeżania), albo lub rozrzedza, następuje przemiesz-
Elektronika Praktyczna 5/2007
38
Wyszukiwarka
Podobne podstrony:
AvtVgaFpga1 2
więcej podobnych podstron