Grafika komputerowa - Lab. 5
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, depth cueing, 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 TMS34820
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 - strumień informacji opisujących pojedynczą
klatkę animacji;
- obliczenia na danych opisujących wierzchołki (współrzędne, wektory
normalne);
- obliczenia na wartościach pikselowych (składowe R, G, B, A);
- obliczenia wykonywane w shaderach (kilku-kilkudziesięcio rozkazowe
programy)
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
Horizontal Line Rate: HFreq [kHz]
Horizontal Synchronization Width: HSync [μs]
Horizontal Back: HBack [μs]
Horizontal Front: HFront [μs]
HFront HSync HBack
HActive (K pixeli)
HBlank
1/HFreq
Synchronizacja pionowa
Vertical Line Rate: VFreq [Hz]
Vertical Synchronization Width: VSync [ms]
Vertical Back: VBack [ms]
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
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
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 |
23.70 |
18.00 |
2. |
EGA |
640x350 |
23.8 |
16.0 |
3. |
VGA |
640x480 |
32,72 |
22,46 |
4. |
SVGA |
800x600 |
40.9 |
35.6 |
5. |
|
1024x768 |
52.36 |
59.88 |
6. |
TIGA |
1280x1024 |
69.78 |
103.8 |
7. |
|
1600x1280 |
87.0 |
168.0 |
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 |
20,4 |
17,6 |
2. |
|
1024x768 |
26,17 |
29,59 |
3. |
TIGA |
1280x1024 |
34.9 |
51.2 |
4. |
|
1600x1280 |
43.64 |
82.83 |
Przebiegi synchronizacji pionowej i poziomej w trybie z przeplotem
VFront VSync VBack
VActive L/2 linii video
VBlank
1/VFreq
HBlankp
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 → HBlankp = 1,8*HBlank
Rozwiązanie: VFreq=60Hz
VActive = 1/VFreq - VBlank= 1/60Hz-2ms=16.67-2=14,67ms
HFreq=1/(VActive/(L/2))=1/(14,67ms/300)=1/0,0489ms=20,45kHz
HBlankp = 1,8*HBlank= 1,8*2s =3.6s
HActive = 1/HFreq - HBlankp = 1/(20,45kHz)- 3.6s=48,9-3,6=45,3 s
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:
bez przeplotu
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 = 16s
1/ HFreq = HActive + HBlank = 16s + 1s = 17s
1/ HFreq = HActive + HBlankp = 16s + 1,8s = 17,8s
HBlankp = 1,8*HBlank
******************Synchronizacja pionowa***************************************************
VActive = L * 1/ HFreq = 1280* 17s = 21,76 ms
VActive = L/2 * 1/ HFreq = 640* 17,8s = 11,39 ms
1/ VFreq = VActive + VBlank = 21,76 ms + 1 ms = 22,76 ms
1/ VFreq = VActive + VBlank = 11,39 ms + 1 ms = 12,39 ms
VFreq = 1/ 22,76 ms = 43,9 Hz
VFreq = 1/ 12,39 ms = 80,7 Hz
Uwagi:
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
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.
|
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.3 |
P [ ms ] |
1.6 |
Q [ ms ] |
0.2 |
R [ ms ] |
11.3 |
S [ ms ] |
0,2 |
VideoClock [MHz] |
100,0 |
Rejestry |
Macintosh 1152x870 |
HESYNC |
|
HEBLNK |
|
HSBLNK |
|
HTOTAL |
|
VESYNC |
|
VEBLNK |
|
VSBLNK |
|
VTOTAL |
|
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**********************************
Określamy 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.3 − 2 =11.3 ms
A = 1/HFreq = VActive/ 870 =13.3 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******************************
Określamy 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/VFreq ∗ 870 = 11.3 ms
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 (uwzględnia numerację 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 |
|
|
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
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 |
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
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] |
HBlankp |
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] |
HBlankp |
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2
VActive=1/VFreq - VBlank
HFreq=1/(VActive/L)
HActive=1/HFreq-HBlank
VBW=1/(HActive/K)
VActive=1/VFreq - VBlank
HFreq=1/(VActive/(L/2))
HBlankp=1,8*HBlank
HActive=1/HFreq-HBlankp
VBW=1/(HActive/K)
HBlankp=1,8*HBlank
HActive=K*1/VCLK
(a)
1/HFreq=HActive+HBlank
VActive=L*1/HFreq
1/VFreq=VActive+Vblank
VFreq=
(b)
1/HFreq=HActive+HBlankp
VActive=L/2*1/HFreq
1/VFreq=VActive+Vblank
VFreq=