Scaler Equations
7 Scaler Equations
ADE3800
Dclk _ PR = FSYN _ PR _ OTCLK ⋅ (3 − NumPPC )
dest _ hpos = HPout − dest _ hpixel
2
WinTop = 10
WinLeft = max(48, HTout − min HBout − 8)
ScaleFactorH = HPin << 16
dest _ hpixel
fSclk = 140 MHz, and Sclk_PR = 18AF
dest _ vpos = VPout − dest _ vpixel
2
WinBot
=
⎧DE _ panels ⇒ 2,
⎩⎨WinTop + VPout −1,
_
otherwise
WinRight = WinLeft + HPout
ScaleFactorV = VPin << 16
dest _ vpixel
pipe _ rate = Sclk _ PR ⋅ ScaleFactorH
Dclk _ PR >> 2
origin _ hpos = −(((WinLeft + dest _ hpos) ⋅ 2 − 23) ⋅ ScaleFactorH + 24) >> 13
origin _ vpos = −(((WinTop + dest _ vpos) ⋅ 2 −1) ⋅ ScaleFactorV ) >> 13
LineStart
=
⎝⎛⎜⎜ (WinLeft
+ dest _ hpos)
<<
4−
(43 << 9) ⋅ Sclk _
Dclk _ PR
PR
−
1 << 21
ScaleFactorH
−136⎟⎟⎠⎞
>>
4
InitTrigDelay = (((HPin > 1024)?5 : 9) + SMUX _VTRIG << 2) ⋅ xclks _ per _ hsync −
SMEAS _ H _ NUM _ LINES << 2
((WinTop + dest _ vpos) ⋅ HTout ⋅ (Dclk _ PR >> 6)) >> 15
SCL_TRIGGER_DLY = InitTrigDelay;// wait 3 frames
wPtrMinPost = SCL_PTR_POST;
// feedback loop to tune trigger delay:
while ( !(8 < wPtrMinPost < 16) ) {// landing zone is (8, 16) & mid point is 12
wDiff = wPtrMinPost > (512 + 12) ? wPtrMinPost – (1024 + 12): wPtrMinPost - 12;
dwTriggerDelay = dwTriggerDelay + ((((xclk_freq / inclk_freq) * 3) * wDiff) / 2);
SCL_TRIGGER_DLY = max (dwTriggerDelay, 1);
// wait 2 frames for new trigger delay to take effect
wPtrMinPost = SCL_PTR_POST;
}
132/138