终于知道显示领域的Scaler了--惭愧
也许我孤陋寡闻,也许我阅历太浅,直到前几天才知道这个技术,传说中的Scanle,大家不要笑话……
几年了,一直在做显示,关于VGA,LCD的各种分辨率的显示,有过疑问,为啥LCD只能是一种分辨率,而VGA可以实现那么多种的分辨率……,看过各种教科书,未曾得到过答案,解不了心中的谜团,我一直在寻找
……
1. ULC的设计
直到Cyclone III/IV面世,由于其内部强大的动态PLL,让我萌动了设计一个“任意分辨率的显示控制器”的冲动。当然,功夫不负有心人,ULC(“万能显示控制器”Universal LCD Controller,姑且自称为ULC)展示在了我的眼前,实现了任意分辨率的VGA Timing的时序,时钟以及分辨率,可通过8080接口动态配置,并且在设计上添加了SDRAM缓存,能实现低速→高速的异步处理,让51驱动液晶显示器成为了一种可能。不免有一丝欣慰。
但是,我还是不知道,他们所谓能实现“任意分辨率”的显示产品,是如何实现的,因为以前还没有Cyclone III/IV,更别说是时钟动态配置,我还是不理解下面这个东西:
2. Scaler的探索
Scale,显示处理芯片,完成图像的拉伸或者压缩,比如4:3的图像在16:9的显示器上显示(充满全屏,但看起来几何形变不是太大),每个显示器都带着个功能。现在显示器里面用的芯片是复合了Scale功能他,自带PLL,实现任意分辨率,任意时钟。
Scale,有道词典这样解释:按比例缩小,放大!顾名思义!因此,在我们输入小分辨率,或者大分辨率的图像的时候,Scaler能通过对图像的才采样,处理,缩放成LCD终端能适应的分辨率的图像。
3. Scaler的实现
对于以固定的LCD终端,比如我们的液晶显示器,其实分辨率已经固定了的,但是我却能输入多种不同的分辨率,这到底是为什么呢?
一切都归功于Scaler。其实缩放功能我们FPGA也能实现,正如黄老师说的那样,因为商用的控制器,要支持太多的格式和OSD,因此一般这个IC里面都有CPU,用Verilog设计比较复杂。
那液晶显示器能实现如上那么多中分辨率,而最终能输出标注的LCD物理设计上需要的分辨率,到底是怎么实现的呢??
经过激烈的讨论,综上猜想,对于液晶显示器多种分辨率的实现,结论如下:
(1)液晶显示器内部对帧、行列信号检测
(2)对行采样,可以使显示器物理Timing要求的像素
(3)采样的时候,也许是通过HS去计算的,因为VGA-Timing是一个标准,可以计算固定时间
(4)对列采样,进行插值运算,拉伸成显示器物理Timing要求的像素
注:也许行业是通过差值来实现的
总的来说,就是实现横向,以及纵向的一个画面拉伸,而这个功能,应该归功于Scaler芯片,正是由于他强大的拉伸功能,我们的液晶显示器才能适应多种不同分辨率的输入。
找到了2个相关的产品,如下图
分别是VGA to HDMI Scale up,HDMI to VGA (LCD, CRT)Adapter,即VGA到HDMI的分辨率放大,以及HDMI到VGA的分辨率缩小。这些产品内部都是用了一块具有scalle功能的芯片。产品链接如下:
/business_12198932.htm
/business_12191069.htm
貌似PAD,手机也具有这个功能,为了适应不同分辨率的视频,进行的缩放吧。才知道存在这个东东,了解这方面内容,对于LCD底层设计有很大的帮助。今天算是见识了。。。
如果觉得《显示器的scaler(转斌哥)》对你有帮助,请点赞、收藏,并留下你的观点哦!