21.07.2013 Aufrufe

DIPLOMARBEIT - FG Mikroelektronik, TU Berlin

DIPLOMARBEIT - FG Mikroelektronik, TU Berlin

DIPLOMARBEIT - FG Mikroelektronik, TU Berlin

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Technische Universität <strong>Berlin</strong><br />

Institut für <strong>Mikroelektronik</strong><br />

Lukas Bauer<br />

Diplomarbeit<br />

Hochleistungs-Grafikprozessor in Speedchart-VHDL<br />

Abschnitt 4.2<br />

Seite 24<br />

der letzten Position der SR ausgegeben werden, müssen die SR mit den Daten der nächsten Speicherzeile<br />

geladen werden. Der Reload-Zyklus muß dabei vor dem Datenwechsel beginnen, und der<br />

Zeitpunkt des Wechsels wird den VRAMs im Laufe des Zyklus über eine Steuerleitung signalisiert.<br />

Nur auf diese Weise ist ein kontinuierlicher Bilddatenstrom zu erreichen. Ohne die Fähigkeit zu<br />

Midline Reloads wäre die Länge einer Videozeile auf die Schieberegisterlänge beschränkt.<br />

Abbildung 18: Beispiel für eine Verteilung<br />

von VRAM-Relaods: Ein Laden des<br />

Schieberegisters wird z. B. durch 0080<br />

gekennzeichnet, hier ist 00 die RAM-Zeile<br />

und 80 der SR-Zeiger (TAP).<br />

Es ist Panning aktiv (DPYSTRT = 0),<br />

und die virtuelle Zeilenlänge DPYINC ist<br />

größer als die physikalische.<br />

DPYSTRT = 0x0080 Worte<br />

DPYINC = 0x0220 Worte<br />

phys. Zeilenläge = 0x0140 Worte<br />

SRL = 256 Worte<br />

SRE = ’0’<br />

Zeile 0: 0080 0100<br />

ˆ<br />

0500<br />

ˆ<br />

0300<br />

ˆ<br />

0100<br />

Zeile 1: 02A0 0300<br />

Zeile 2: 04C0 0500<br />

4.2.2 ” Split Reloads“ und ” Non-Split Reloads“<br />

Zeile 3: 06E0 0700 0800<br />

ˆ ˆ<br />

0700 0800<br />

Zeile 4: 0900 0A00<br />

0A00<br />

Zeile 5: 0B20 0C00<br />

Um das kritische Timing der Midline Reloads zu entschärfen, bieten moderne Video-RAMs die<br />

Möglichkeit, nur eine Hälfte des Schieberegisters zu laden. Aus der anderen Hälfte können<br />

dabei gleichzeitig Daten seriell ausgegeben werden. Dies zeigt, daß die VRAMs keine echten Schieberegister,<br />

sondern zählergesteuerte Multiplexer enthalten. Über das Register-Bit SRE kann programmiert<br />

werden, ob die angeschlossenen VRAMs solche ” Split Reloads“ unterstützen (SRE=’1’:<br />

Split-Reload-Modus).<br />

Auch im Split-Reload-Modus erfolgt für jede Videozeile ein Newline Reload am Ende der vorigen<br />

Videozeile. Beginnen die Daten dabei in der unteren Hälfte des SR’s (wie in Zeile 4 und 5 in<br />

Abbildung 19), so enthalten bereits beide SR-Hälften Daten, die in der folgenden Zeile benötigt<br />

werden. Beginnt die Ausgabe hingegen in der oberen SR-Hälfte, so kann bereits unmittelbar nach<br />

dem Newline Reload die untere SR-Hälfte mit Daten aus der nächsten VRAM-Zeile geladen werden<br />

(Zeile 0–3, Abb. 19).<br />

Abbildung 19: Beispiel für eine Verteilung<br />

von VRAM-Relaods im Split-Reload-<br />

Modus: Nur am Ende der jeweils vorigen<br />

Zeile wird das ganze SR geladen (Non-<br />

Split Reload). Beim Nachladen wird dann<br />

nur eine Hälfte geladen (Split Reload).<br />

Hier kennzeichnet z. B. 01L einen Split<br />

Reload. Dabei ist 01 die RAM-Zeile, und<br />

L (low) steht für ein Laden der unteren<br />

SR-Hälfte.<br />

DPYSTRT = 0x0080 Worte<br />

DPYINC = 0x0220 Worte<br />

phys. Zeilenläge = 0x0140 Worte<br />

SRL = 256 Worte<br />

SRE = ’1’<br />

ˆ<br />

0C00<br />

Zeile 0: 0080 0100 0180<br />

01H<br />

Zeile 1: 02A0 0300 0380<br />

03H<br />

Zeile 2: 04C0 0500 0580<br />

05H<br />

Zeile 3: 06E0 0700 0780 0800<br />

07H 08L<br />

Zeile 4: 0900 0980 0A00<br />

0CL<br />

0AL<br />

Zeile 5: 0B20 0B80 0C00<br />

ˆ<br />

0080<br />

02A0<br />

04C0<br />

06E0<br />

0900<br />

0B20<br />

0080 01L<br />

02A0 03L<br />

04C0 05L<br />

06E0 07L<br />

0900<br />

0B20

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!