Grafika komputerowa - ćwicz. 3
Temat: Procesory graficzne
1. Sterowniki graficzne:
Funkcje:
- odczyt zawartości pamięci graficznej i generowanie szeregowego
strumienia informacji obrazowej do urządzenia zobrazowania (pikseli);
- generacja sygnałów synchronizacji H, V i Blank.
Sterownik graficzny firmy Motorola: MC6845
2. Akceleratory graficzne:
Funkcje:
- wykonywanie specjalizowanych zadań graficznych: cieniowanie,
wypełnianie obszarów, triangulacja, depth cueing, (efekt głębi
przestrzennej), antyaliasing, operacje HLHSR itp.
- funkcje sterownika graficznego.
3. Koprocesory graficzne:
Funkcje:
- procesor graficzny – GP (Graphics Processor)
Wykonuje rozkazy graficzne z dostępnej listy rozkazów graficznych
(rozkazy sterujące, rozkazy kreślenia, rozkazy transmisji blokowych),
składuje wytworzone mapy bitowe w pamięci dostępnej przez procesor
obrazu
- procesor obrazu – DP (Display Processor)
Generuje sygnały synchronizacji i szeregowy strumień informacji
obrazowej, jednocześnie może wyświetlać wiele okien na ekranie z
różnych obszarów map bitowych pamięci graficznej.
- jednostka sterująca interfejsem – BIU (Bus Interface Unit)
.
Steruje wszelką komunikacją pomiędzy koprocesorem a zewnętrznym
procesorem i pamięcią graficzną. Zawiera zintegrowany sterownik
pamięci DRAM/VRAM umożliwiający realizację różnych trybów dostępu
przy transmisjach blokowych. Wykorzystywany przez DP i GP w
operacjach dostępu do map bitowych w pamięci graficznej.
Koprocesory graficzne firmy Intel: I82720, I82786.
4. Procesory graficzne:
Funkcje:
- funkcje koprocesora graficznego;
- jednostka obliczeniowa wykonująca rozkazy z listy rozkazów
uniwersalnych (rozkazy arytmetyczne, logiczne, warunki, skoki itp.)
Procesory firmy Teksas Instruments:
- TMS34010 – 16-bitowy procesor graficzny
- TMS34020 – 32-bitowy procesor graficzny współpracujący
z koprocesorem zmiennoprzecinkowym TMS34082
Procesory firmy Intel:
- I860 – 64-bitowy procesor graficzny z 2 jednostkami obliczeń
stałopozycyjnych i zmiennoprzecinkowych, z układem MERGE
(mnożenie macierzy 4x4)
5. Systemy wieloprocesorowe z przetwarzaniem potokowym:
Chipsety GeForce: Vertex Shader, Pixel Shader, Unified Shader
- przetwarzanie potokowe: potok – strumień informacji opisujących
pojedynczą klatkę animacji;
- obliczenia na danych opisujących wierzchołki (współrzędne, wektory
normalne) wykonywane przez układ Vertex Shader;
- obliczenia na wartościach pikselowych (składowe R, G, B, A)
wykonywane przez układ Pixel Shader;
- obliczenia implementowane w postaci programów niskopoziomowych
składających się od kilku do kilkudziesięciu rozkazów.
Procesor obrazu – DP (Display Processor) generuje sygnały
synchronizacji i szeregowy strumień informacji obrazowej
Sygnały synchronizacji urządzeń rastrowych:
- synchronizacja pozioma (ang. Horizontal)
- synchronizacja pionowa (ang. Vertical)
- sygnał wygaszania: Blank (HBlank, VBlank)
Parametry sygnałów synchronizacji
Synchronizacja pozioma
1. Horizontal Line Rate:
HFreq
[kHz]
2. Horizontal Synchronization Width:
HSync
[µs]
3. Horizontal Back:
HBack
[µs]
4. Horizontal Front:
HFront
[µs]
HFront HSync HBack
HActive (K pixeli)
HBlank
1/HFreq
Synchronizacja pionowa
1. Vertical Line Rate:
VFreq
[Hz]
2. Vertical Synchronization Width:
VSync
[ms]
3. Vertical Back:
VBack
[ms]
4. Vertical Front:
VFront
[ms]
VFront VSync VBack
VActive (L linii video)
VBlank
1/VFreq
Przykład 1.
Sprawdzić czy monitor o dopuszczalnej częstotliwości odchylania poziomego
HFreq=33 kHz może współpracować z kartą graficzną SVGA w trybie rozdzielczości
800x600 z częstotliwością odświeżania VFreq=60Hz.
Wymagania techniczne monitora:
min. czas HBlank=5µs
min. czas VBlank=0.67ms
VFront VSync VBack
600 linii video (VActive)
VBlank
1/VFreq
1. VFreq=60Hz
VActive =1/VFreq - VBlank= 1/60Hz-0.67ms=16.67-0.67=16.0ms
HFreq=1/(VActive/L)=1/(16.0ms/600)=1/26.67
µ
s=37.5kHz
2. VFreq=50Hz
VActive =1/VFreq- VBlank= 1/50Hz-067ms=20.0-0.67=19.33ms
HFreq=1/(VActive/L)=1/(19.330ms/600)=1/32.22
µ
s=31.0kHz
Przykład 2.
Wyznaczyć pasmo przenoszenia sygnału video (VBW) dla karty j.w. dla:
L=600 linii
K=800 pixeli
HFreq=37.5KHz
VBW – Video Band Width
HFront HSync HBack
HActive (800 pixeli)
HBlank
1/HFreq
HActive=1/HFreq-HBlank=26.67
µ
s-5
µ
s=21.67
µ
s
VBW=1(HActive/K)=1/(21.67
µ
s/800)=1/27.09ns=36.9MHz
Zadanie 1:
Obraz wyświetlany na monitorze w sposób kolejnoliniowy odświeżany jest z
częstotliwością
VFreq=60Hz
. Zakładając, że układy sterujące monitora wymagają
minimalnych czasów wygaszania
HBlank=2µs
i
VBlank=2ms
wyznaczyć
częstotliwość sygnału synchronizacji poziomej
HFreq
i szerokość pasma sygnału
video VBW dla kart graficznych generujących obraz w standardzie:
•
Hercules
720x348
•
EGA
640x350
•
VGA
640x480
•
SVGA
800x600
•
*
1024x768
•
TIGA 1280x1024
•
* 1600x1280
Lp.
Standard
KxL
HFreq [kHz] VBW [MHz]
1.
Hercules
720x348
2.
EGA
640x350
3.
VGA
640x480
4.
SVGA
800x600
5.
1024x768
6.
TIGA
1280x1024
7.
1600x1280
Zadanie 2:
Wyznaczyć częstotliwość sygnału synchronizacji poziomej
HFreq
i szerokość pasma
sygnału video VBW dla obrazu generowanego z przeplotem o rozdzielczości:
•
800x600
•
1024x768
•
1280x1024
•
1600x1280
Zakładamy (jak w Zadaniu 1), że układy sterujące monitora wymagają minimalnych
czasów wygaszania
HBlank
=2µs
i
VBlank=2ms
oraz odświeżanie z
częstotliwością
VFreq=60Hz
Lp.
Standard
KxL
HFreq [kHz] VBW [MHz]
1.
SVGA
800x600
2.
1024x768
3.
TIGA
1280x1024
4.
1600x1280
Przebiegi synchronizacji pionowej i poziomej w trybie z przeplotem
VFront VSync VBack
VActive L/2 linii video
VBlank
1/VFreq
HBlank
p
HFront HSync HBack HSync HBack
HActive (K pixeli)
HBlank
1/HFreq
Założenia: (
tak się przyjmuje
):
HFront = HBack
≅
≅
≅
≅
10
÷
20 %
HBlank
dla 20%:HBlank :
HFront = HBack
=
0,2*
HBlank
→
→
→
→
HBlank
p
=
1,8*
HBlank
Rozwiązanie:
VFreq=60Hz
1. VActive = 1/VFreq - VBlank= 1/60Hz-2ms=16.67-2=14,67ms
2. HFreq=1/(VActive/(L/2))=1/(14,67ms/300)=1/0,0489ms=20,45kHz
3. HBlank
p
= 1,8*HBlank= 1,8*2
µ
s =3.6
µ
s
4. HActive = 1/HFreq - HBlank
p
= 1/(20,45kHz)- 3.6
µ
s=48,9-3,6=45,3
µ
s
5. VBW=1/( HActive/K)=1/(45,3
µ
s/800)=17,66 MHz
Zadanie 3:
Wyznaczyć maksymalną częstotliwość odświeżania obrazu dla karty graficznej
generującej obraz:
a) bez przeplotu
b) z przeplotem
o rozdzielczości 1600x1280 taktowanej zegarem VCLK=100MHz zakładając, że
minimalne czasy wygaszania pionowego i poziomego wynoszą odpowiednio
HBlank=1µs i VBlank=1ms
Rozwiązanie:
******************Synchronizacja pozioma***************************************************
HActive = K * 1/VCLK = 1600* 1/100 MHz = 16
µ
s
a)
1/
HFreq = HActive + HBlank = 16
µ
s + 1
µ
s = 17
µ
s
b) 1/
HFreq = HActive + HBlank
p
= 16
µ
s + 1,8
µ
s = 17,8
µ
s
HBlank
p
= 1,8*HBlank
******************Synchronizacja pionowa***************************************************
a) VActive = L *
1/
HFreq = 1280* 17
µ
s = 21,76 ms
b) VActive = L/2 *
1/
HFreq = 640* 17,8
µ
s = 11,39 ms
a) 1/ VFreq = VActive + VBlank = 21,76 ms + 1 ms = 22,76 ms
b) 1/ VFreq = VActive + VBlank = 11,39 ms + 1 ms = 12,39 ms
a) VFreq = 1/ 22,76 ms = 43,9 Hz
b) VFreq = 1/ 12,39 ms = 80,7 Hz
Uwagi:
a)
zbyt mała częstotliwość VFreq w trybie bez przeplotu /migotanie
obrazu/
Procesor TMS34010 – blok współpracy z monitorem
Rejestry środowiskowe bloku współpracy z monitorem TMS34010
Przebiegi sygnałów w czasie wyświetlania jednej linii obrazu
Rejestry środowiskowe bloku współpracy z monitorem TMS34010
Przebiegi sygnałów w czasie wyświetlania jednego obrazu
Wyświetlanie obrazu - charakterystyka czasowa
Zadanie 4
Wyznaczyć wartości rejestrów środowiskowych bloku współpracy z monitorem procesora
graficznego TMS34010 określających parametry czasowe sygnałów synchronizacji dla
obrazu generowanego w trybie:
- rozdzielczość KxL=1152x870
- częstotliwość odświeżania VFreq=75 Hz
- pasmo przenoszenia VBW=100 MHz. - {VCLK}
Zweryfikować parametry czasowe obliczone z rzeczywistymi.
Rejestry
Macintosh
1152x870
HESYNC
HEBLNK
HSBLNK
HTOTAL
VESYNC
VEBLNK
VSBLNK
VTOTAL
Macintosh
1152x870
HFreq [kHz]
A [ µs ]
12.98
B [ µs ]
1.0
C [ µs ]
0.23
D [ µs ]
11.52
E [ µs ]
0.23
VFreq [Hz]
75.0
O [ms]
13.33
P [ ms ]
1.6
Q [ ms ]
0.2
R [ ms ]
11.33
S [ ms ]
0.2
VideoClock [MHz]
100,0
ROZWIĄZANIE:
DANE:
Rozdzielczość 1152 x 870
VFreq = 75 Hz
VCLK = 100 MHz
************OBLICZENIA WSTĘPNE*****************
O =1/VFreq = 1/(75 Hz) = 13.33 ms
HActive = D =1152∗1/VCLK =1152*10 ns = 11.52
µ
s
**********************************************************
*********VERTICAL**********************************
Dobieramy VBlank
VBlank =1/VFreq
−
(HActive+HBlank) ∗L
VBlank ma wartość maksymalną dla HBlank=0 stąd:
VBlank << 1/VFreq
−
(HActive+0) ∗870 = 13.33
−
10.02 =3.31 ms
:
Przyjmujemy
VBlank = 2 ms
VBlank = P + Q + S
Q = S =
≈
(10÷20%) VBlank
przyjmujemy10% stąd:
Q = S = 0.2 ms
P = 1.6 ms
R = VActive = 1/VFreq
−
VBlank = 13.33
−
2 =11.33 ms
A = 1/HFreq = VActive/ 870 =11.33 ms / 870 =12.98
µ
s
HBlank = A
−
D = 1/HFreq
−
HActive =12.98
−
11.52 =1.46
µ
s
HBlank = B + C + E
C = E =
≈
(10÷20%) HBlank
przyjmujemy C=E=0.23
µ
s (
≈
15% ) stąd:
C = E = 0.23
µ
s
B = HBlank - C - E = 1.46 -0.23-0.23 = 1
µ
s
*********************************************************
*********HORIZONTAL******************************
Dobieramy HBlank
HBlank + HActive =(1/VFreq-VBlank) / 870
HBlank ma wartość maksymalną dla VBlank=0 stąd:
HBlank + HActive << (1/VFreq-0) / 870= 13.33 ms / 870 = 15.32
µ
s
HBlank << 15.32
µ
s
−
HActive = 15.32
−
11.52 = 3.8
µ
s
Przyjmujemy
HBlank = 1.46
µ
s
HBlank = B + C + E
C = E =
≈
(10÷20%) HBlank
przyjmujemy
C = E = 0.23
µ
s
stąd
B =1.46
−
0.23
−
0.23 = 1
µ
s
A = 1/HFreq = HActive + HBlank =11.52+1.46 = 12.98
µ
s
R = VActive = 1/HFeq ∗ 870 = 11.33
-s
VBlank = O
−
R = 1/VFreq
−
VActive =13.3
−
11.3 =2 ms
VBlank = P + Q + S
Q = S = 0.2 ms
≈
(10÷20%) VBlank
P = 1.6 ms
*********************************************************
Dla HSync jednostka taktu
1/VCLK= 10 ns
Przeliczenie
na takty
Dla VSync jednostka taktu
1/HFreq= A= 12.98 µs
Przeliczenie na takty
A
12.98 µs
1298
O
13.3 ms
13.3 ms/(12.98 µs)=
1024
B
1.00 µs
100
P
1.6 ms
1.6 ms/(12.98 µs)=
123
C
0.23 µs
23
Q
0.2 ms
0.2 ms/(12.98 µs)=
15
D
11.52 µs
1152
R
11.3 ms
11.3 ms/(12.98 µs)=
870
E
0.23 µs
23
S
0.2 ms
0.2 ms/(12.98 µs)=
15
Rejestry H (
uwzględniona numeracja taktów od 0)
HESYNC+1 B = 100
HEBLNK+1 B + C = 100 + 23 = 123
HSBLNK+1 B + C + D = 123 + 1152 = 1275
HTOTAL+1 B + C + D + E =A = 1275 + 23= 1298
Rejestry V
(
uwzględniona numeracja taktów od 0)
VESYNC+1 P = 123
VEBLNK+1 P + Q = 123 + 15 = 138
VSBLNK+1 P + Q + R = 138 + 870 = 1008
VTOTAL+1 P + Q + R + S =O = 1008 + 15= 1023
Zweryfikować parametry czasowe obliczone z rzeczywistymi
Literatura: Grafika Komputerowa – metody i narzędzia.
Jan Zabrodzki
Rozdz. 9
9.22 Procesory graficzne
TMS 34010
TMS 34020
Układ współpracy z urządzeniami zobrazowania
↓
Rejestry wewnętrzne:
HESYNC+1
Wartości obliczone
Wartości rzeczywiste
1/VCLK= 10 ns
A
12.98 µs
1298•10 ns=12.98 µs
B
1.00 µs
100•10 ns=1.00 µs
C
0.23 µs
23•10 ns=0.23 µs
D
11.52 µs
1152•10 ns=11.52 µs
E
0.23 µs
23•10 ns=0.23 µs
Wartości obliczone
Wartości rzeczywiste
1/HFreq= A= 12.98 µs
O
13.3 ms
1024•12.98 µs = 13.291 ms
P
1.6 ms
123•12.98 µs = 1.596 ms
Q
0.2 ms
15•12.98 µs = 0.195 ms
R
11.3 ms
870•12.98 µs = 11.293 ms
S
0.2 ms
15•12.98 µs = 0.195 ms
WYNIKI
Zadanie 1
DANE
WYNIK
VFreq
60 [Hz]
VActive
[ms]
14,67
VBlank
2 [ms]
HBlank
2 [µ
s]
DANE
WYNIK
K
L
HFreq
[kHz] HActive [µs] VBW [MHz]
Hercules
720
348
23,73
40,15
17,93
EGA
640
350
23,86
39,90
16,04
VGA
640
480
32,73
28,56
22,41
SVGA
800
600
40,91
22,44
35,64
1024
768
52,36
17,10
59,89
TIGA
1280
1024
69,82
12,32
103,87
1600
1280
87,27
9,46
169,16
Zadanie 2
z przeplotem
DANE
WYNIK
VFreq
60 [Hz]
VActive
[ms]
14,67
VBlank
1 [ms]
HBlank
2 [µ
s]
HBlank
p
3,6 [µ
s]
DANE
WYNIK
K
L
HFreq
[kHz] HActive [µs] VBW [MHz]
SVGA
800
600
20,45
45,29
17,66
1024
768
26,18
34,59
29,60
TIGA
1280
1024
34,91
25,05
51,11
1600
1280
43,64
19,32
82,83
Zadanie 3
DANE
WYNIK
VCLK
100 [MHz]
HActive
[µs]
16,00
VBlank
1 [ms]
HBlank
1 [µ
s]
HBlank
p
1,8[µ
s]
K
L
1600
1280
WYNIK
(a)
bez przeplotu
(b)
z przeplotem
1/HFreq
[µ
s]
17
17,8
VActive
[ms]
21,76
11,39
1/VFreq
[ms]
22,76
12,39
VFreq
[Hz]
43,9
80,7
o
HFreq=1/(VActive/L)
o
HActive=1/HFreq-HBlank
o
VBW=1/(HActive/K)
o
VActive=1/VFreq - VBlank
o
HFreq=1/(VActive/(L/2))
o
HBlank
p
=1,8*HBlank
o
HActive=1/HFreq-HBlank
p
o
VBW=1/(HActive/K)
o
VActive=1/VFreq - VBlank
(a)
1/HFreq=HActive+HBlank
VActive=L*1/HFreq
1/VFreq=VActive+Vblank
VFreq=
o
HBlank
p
=1,8*HBlank
o
HActive=K*1/VCLK
(b)
1/HFreq=HActive+HBlank
p
VActive=L/2*1/HFreq
1/VFreq=VActive+Vblank
VFreq=