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.5<br />

Seite 29<br />

26 8 7 0<br />

DPYNEXT:<br />

CALC ELL:<br />

15 8<br />

CALC ELL SFT<br />

7<br />

TAP (Start)<br />

0<br />

✜<br />

SUM TAP ELL:<br />

11 9 8 7<br />

TAP (Ende)<br />

0<br />

✜<br />

❭ +<br />

❄<br />

SUM TE A<br />

✛ ✑<br />

Anzahl der notwendigen Non-Split Reloads:<br />

CALC NRL := CALC ELL SFT + SUM TE A<br />

Abbildung 22: Berechnung der Anzahl der notwendigen Reloads für SRE=’0’ am Beispiel SRL=256<br />

3b) Falls Split-Reloads zugelassen sind (SRE=’1’, Abbildung 23), ergibt sich auf identische Weise<br />

die Anzahl CALC NRL der notwendigen Reloads der unteren SR-Hälfte, wobei auch hier<br />

der Newline Reload des ganzen SRs vor Beginn der Zeile nicht mitgerechnet wird. Einer<br />

der berechneten Split-Reloads der unteren SR-Hälfte kann jedoch auch vor Beginn der Zeile<br />

erfolgen (vgl. Abb. 18, S. 24), dies entspricht nur einer zeitlichen Verlagerung.<br />

26 8 7 0<br />

DPYNEXT:<br />

CALC ELL:<br />

15 8<br />

CALC ELL SFT<br />

7<br />

TAP (Start)<br />

0<br />

✜<br />

SUM TAP ELL:<br />

11 9 8 7<br />

TAP (Ende)<br />

0<br />

✜<br />

❭ +<br />

❄ ❄<br />

✛ ✑<br />

SUM TE A SUM TE B<br />

Anzahl der notwendigen Split Reloads der unteren SR-Hälfte:<br />

CALC NRL := CALC ELL SFT + SUM TE A<br />

Anzahl der notwendigen Split Reloads der oberen SR-Hälfte:<br />

wenn SUM TE A=’0’ und SUM TE B=’0’ −→ CALC NRH := CALC ELL SFT − 1<br />

wenn SUM TE A=’1’ und SUM TE B=’1’ −→ CALC NRH := CALC ELL SFT + 1<br />

sonst −→ CALC NRH := CALC ELL SFT<br />

Abbildung 23: Berechnung der Anzahl der notwendigen Reloads für SRE=’1’ am Beispiel SRL=256<br />

Um die Anzahl CALC NRH der in der Zeile notwendigen Split-Reloads der oberen SR-<br />

Hälfte zu bestimmen, wird ebenfalls vom höherwertigen Teil der effektiven Zeilenlänge,<br />

CALC ELL SFT, ausgegangen. Es muß jedoch 1 addiert werden, falls SUM TE A=’1’ und<br />

SUM TE B=’1’ ist (Überlauf des SR-Zeigers bis in die obere SR-Hälfte), während 1 subtrahiert<br />

werden kann, wenn SUM TE A=’0’ und SUM TE B=’0’ ist (kein Überlauf des SR-<br />

Zeigers, und kein Erreichen der oberen SR-Hälfte am Zeilenende).<br />

Die Berechnung erfolgt parallel zu den ersten beiden Takten jedes Newline Reloads im Diagramm<br />

NEWL REL (Seite 95). Mit Transition T1 wird SUM TAP ELL berechnet, mit T2 werden<br />

CALC NRL und CALC NRH bestimmt.<br />

Einige zusätzlich nötige Rechenschritte werden im separaten Diagramm RL CALC (Seite 99)<br />

durchgeführt. Dort werden LD XZ, LD MBW und LD PSIZE aus den Registerwerten bestimmt,<br />

damit dann MSC SFT gebildet werden kann. Anschließend wird CALC RLL um entsprechend viele<br />

Stellen nach rechts geshiftet, so daß sich CALC ELL ergibt. Außerdem werden die Komponenten<br />

SUM TE A, SUM TE B und CALC ELL SFT ermittelt.<br />

Die Funktionsfähigkeit der Vorausberechnung kann anhand der Simulationsergebnisse auf den Abbildungen<br />

74 und 75 (S. 107 und 108) nachvollzogen werden. In Abbildung 74 endet die Zeile nach<br />

dem ersten Pixel einer neuen Speicher-Zeile (zu erkennen an den Signalen HBLANK, SR ROW<br />

(Zeile) und SR CNT (TAP)), daher muß der Midline Reload kurz vor Zeilenende noch erfolgen. In<br />

Abbildung 75 hingegen endet die Zeile gerade noch vor dem Wechsel zu einer neuen Speicher-Zeile,<br />

daher kann der Midline Reload hier entfallen.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!