分辨率的Clock和屏的Clock

之前对点屏,加Timing时,对于这两个Clock做了下总结,也就是输入Clock和输出Clock:
1.输入的Clock,通常是PixelClock,即该Timing的Clock
Timing的Clock是指每个分辨率的Clock,即每一个分辨率都有一个Clock,从VESA表可以看到。
PClock=HTotalVTotalVFrequnce;
如一个屏,主频为25601080@60Hz,那么PClock=183.60MHz。
如果我们要送1920
1080@60Hz的分辨率到这个屏上,就需要经过放大,这样才可以全屏显示
分辨率的Clock和屏的Clock_第1张图片
2.输出Clock,通常指要显示的屏的Clock,即Dclock
DClock=HTotalVTotalVFreq*Q;其中, Q是缩放系数, Q=PanelHeight/InputHeight,即输出/输入

这是缩放的原理,1024768/60Hz的分辨率显示在16801050/60Hz的屏上,我们scaler的作用就是缩放。
分辨率的Clock和屏的Clock_第2张图片
(1)假如我们的Panel的分辨率是1680X1050/60HZ,那么输入1024X768的时候,也就是输入的信号宽度只有1024个点,而实际Panel的宽度却有1680个点。为了让画面满屏显示,我们就要把宽度放大为1680个点,高度放大为1050个点。
(2)此时画面是显示在panel上了。也就是说,输入进来的是1024X768,输出给Panel却变化了,为1650X1050。
(3)相应的,由于画面的宽度是包含在HTotal 里,高度在VTotal 里,所以,既然输出的高度和宽度变了,那么,输出的Htotal和Vtotal肯定也变了,Pixel Clock也变了。但是,有一点,行频和场频,输入进来是多少,输出也是多少。因为目前的Scaler和Panel的做法基本上是:输入的刷新频率是60HZ,输出也是60HZ。
上面有个Pixel Clock这个参数,这个表示每秒有多少点,对于输入信号,比如1024X768/60HZ,它输入是65MHZ,对于Native解释度为非1024X768的Panel,根据上面解释,输出Pixel Clock肯定变了。其实,这时候输出的Pixel Clock,我们就叫他Dclk,今天,我们要计算也就是这个东西。对于输入的Pixel Clock,在Mstar Code里,我们一般称之为Sclk,这个可以去Code里查一查。
从屏规格书上可以看到DClock
分辨率的Clock和屏的Clock_第3张图片
软件里屏参就这样写:
在这里插入图片描述

3.DCLock和PClock之间的关系
从上面可以看出,DClock是指屏的Clock,而PClock是指某个分辨率的Clock,按照正常逻辑是某个分辨率要显示在某张屏上,所以应该是PClock小于或等于PanelMaxDClock.
在Mstar的code里,是有压Clock的步骤的,如果软件上压不住,那就没得办法了,就显示"输入不支持"或者其他提示。以TSUM58CDT9的芯片为例,这个函数Bool appmStar_SetPanelTiming( void )就是重新压Clock的!

如1024*768/60Hz的分辨率DClock算出来是138,屏最大Clock为180,没有超屏最大Clock,所以正常显示,不闪屏
分辨率的Clock和屏的Clock_第4张图片

你可能感兴趣的:(Monitor)