DIPLOMARBEIT - FG Mikroelektronik, TU Berlin
DIPLOMARBEIT - FG Mikroelektronik, TU Berlin
DIPLOMARBEIT - FG Mikroelektronik, TU Berlin
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Abbildung 62: Speedchart-Diagramm VIDEO/RELOAD/RL RAM/NEWL REL<br />
NEWL_REL<br />
entry<br />
T1<br />
S1<br />
T2<br />
S2<br />
T4<br />
A: -- 1st cycle of newline reload<br />
A: -- 2nd cycle<br />
A: -- 3rd cycle<br />
RAS_itv:="1111";<br />
CAS_itv:="1111";<br />
RAS_itv:="1110";<br />
RCA_itv:=DPYNEXTV(11 downto 0);<br />
MWE_itv:=’1’;<br />
-- calculate # of reloads necessary in next line<br />
-- calculate HCOUNT value for start of<br />
MOE_itv:=’0’;<br />
-- CALC_NRL: SRE=’0’: number of non-split reloads<br />
-- MLRAT6 and MLRAT10 midl. rel. attention signals<br />
MSF_itv:=’0’;<br />
-- SRE=’1’: # of split low half SR rel.<br />
-- CALC_NRH: SRE=’0’: no function<br />
-- and MLRAT5 midline reload start signal<br />
-- and calculation of SUM_TAP_ELL<br />
-- SRE=’1’: # of split high half SR rel.<br />
if HC_MEN5=’1’ then<br />
-- and calculation of TAPCNT (TAP position)<br />
if HC_MLR>=5 then<br />
if SUM_TE_A=’1’ then<br />
HC_MLR5:=HC_MLR-5;<br />
case SRL is<br />
CALC_NRL:=(CALC_ELL_SFT + 1) mod 256;<br />
else<br />
when "00" => -- SRL: 256 words<br />
else<br />
HC_MLR5:=(HC_MLR+HTOTAL-4) mod 65536;<br />
RCA_itv:=DPYNEXTV(19 downto 8);<br />
CALC_NRL:=CALC_ELL_SFT;<br />
end if;<br />
ROWCNT:=(DPYNEXT shr 8) mod 4096;<br />
TAPCNT:=(DPYNEXT mod 256) + 0x700;<br />
end if;<br />
end if;<br />
SUM_TAP_ELL:=(DPYNEXT mod 256) + (CALC_ELL mod 256);<br />
CALC_NRH:=(CALC_ELL_SFT + 1) mod 256<br />
if HC_MEN6=’1’ then<br />
when SUM_TE_A=’1’ and SUM_TE_B=’1’<br />
if HC_MLR>=11 then<br />
when "01" => -- SRL: 512 words<br />
else (CALC_ELL_SFT - 1)<br />
HC_MLR6:=HC_MLR-11;<br />
RCA_itv:=DPYNEXTV(20 downto 9);<br />
when SUM_TE_A=’0’ and SUM_TE_B=’0’<br />
else<br />
ROWCNT:=(DPYNEXT shr 9) mod 4096;<br />
and CALC_ELL_SFT/=0<br />
HC_MLR6:=(HC_MLR+HTOTAL-10) mod 65536;<br />
TAPCNT:=(DPYNEXT mod 512) + 0x600;<br />
else CALC_ELL_SFT;<br />
end if;<br />
SUM_TAP_ELL:=(DPYNEXT mod 512) + (CALC_ELL mod 512);<br />
-- calculate HCOUNT value at point of midline reload<br />
end if;<br />
when "10" => -- SRL: 1024 words<br />
if HC_MEN10=’1’ then<br />
RCA_itv:=DPYNEXTV(21 downto 10);<br />
case MSC_SFT is<br />
if HC_MLR>=15 then<br />
ROWCNT:=(DPYNEXT shr 10) mod 4096;<br />
when 0 => HC_MLR:=(HEBLNK+(0x800-TAPCNT)) mod 65536;<br />
HC_MLR10:=HC_MLR-15;<br />
TAPCNT:=(DPYNEXT mod 1024) + 0x400;<br />
when 1 => HC_MLR:=(HEBLNK+(0x800-TAPCNT) shl 1) mod 65536;<br />
else<br />
SUM_TAP_ELL:=(DPYNEXT mod 1024) + (CALC_ELL mod 1024);<br />
when 2 => HC_MLR:=(HEBLNK+(0x800-TAPCNT) shl 2) mod 65536;<br />
HC_MLR10:=(HC_MLR+HTOTAL-14) mod 65536;<br />
when 3 => HC_MLR:=(HEBLNK+(0x800-TAPCNT) shl 3) mod 65536;<br />
end if;<br />
when "11" => -- SRL: 2048 words<br />
when 4 => HC_MLR:=(HEBLNK+(0x800-TAPCNT) shl 4) mod 65536;<br />
end if;<br />
RCA_itv:=DPYNEXTV(22 downto 11);<br />
when 5 => HC_MLR:=(HEBLNK+(0x800-TAPCNT) shl 5) mod 65536;<br />
ROWCNT:=(DPYNEXT shr 11) mod 4096;<br />
TAPCNT:=DPYNEXT mod 2048;<br />
end case;<br />
SUM_TAP_ELL:=(DPYNEXT mod 2048) + (CALC_ELL mod 2048);<br />
-- determine if HCOUNT has to be regarded to<br />
end case;<br />
-- generate midline reload attention signals<br />
-- disable HC_MLR6 and HC_MLR10 signals<br />
case MSC_SFT is<br />
when 0 => if TAPCNT>0x7FB then -- 0x800 -5<br />
HC_MEN5 :=’0’;<br />
HC_MEN5:=’1’;<br />
HC_MEN6 :=’0’;<br />
end if;<br />
HC_MEN10:=’0’;<br />
if TAPCNT>0x7F5 then -- 0x800 -11 (5+6)<br />
HC_MEN6:=’1’;<br />
end if;<br />
if TAPCNT>0x7F1 then -- 0x800 -15 (5+10)<br />
HC_MEN10:=’1’;<br />
end if;<br />
when 1 => if TAPCNT>0x7FD then -- 0x800 -(5/2 up)<br />
HC_MEN5:=’1’;<br />
end if;<br />
if TAPCNT>0x7FA then -- 0x800 -(11/2 up)<br />
HC_MEN6:=’1’;<br />
end if;<br />
if TAPCNT>0x7F8 then -- 0x800 -(15/2 up)<br />
HC_MEN10:=’1’;<br />
end if;<br />
when 2 => if TAPCNT=0x7FF then -- 0x800 -(5/4 up)<br />
HC_MEN5:=’1’;<br />
end if;<br />
if TAPCNT>0x7FD then -- 0x800 -(11/4 up)<br />
HC_MEN6:=’1’;<br />
end if;<br />
if TAPCNT>0x7FC then -- 0x800 -(15/4 up)<br />
HC_MEN10:=’1’;<br />
end if;<br />
when 3 => if TAPCNT=0x7FF then -- 0x800 -(11/8 up)<br />
HC_MEN6:=’1’;<br />
HC_MEN10:=’1’; -- 0x800 -(15/8 up)<br />
end if;<br />
end case;<br />
T6<br />
T7<br />
T3<br />
T5<br />
S3<br />
S4<br />
S5<br />
S6<br />
exit<br />
A: -- 4th cycle<br />
CAS_itv:="0000";<br />
A: -- 5th cycle<br />
RCA_itv:=0xFFF;<br />
MOE_itv:=’1’;<br />
A: -- 6th cycle<br />
RAS_itv:="1111";<br />
CAS_itv:="1111";<br />
MSC_reload:=’0’; -- MSC low pulse<br />
-- after newline reload<br />
A: MSC_reload:=’1’;<br />
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 />
Anhang C.2<br />
Seite 95