基于FPGA的LED大屏幕控制系统的设计与实现
扫描二维码
随时随地手机看文章
相比于液晶显示、投影显示等其他大屏幕显示技术,LED显示技术有其独特的优越性:高亮度、宽可视角度、丰富的色彩以及可定制的屏幕形状。这些特点使得LED显示屏被广泛应用于工业、交通、商业广告、信息发布、体育比赛等各个领域。
LED大屏幕控制系统是一个融合计算机控制技术、视频技术、光电子技术、通信技术的综合系统。当前主流的LED大屏幕控制系统多以FPGA或FPGA结合其他芯片为主控芯片。目前LED大屏幕正朝着显示面积更大、显示亮度更高、颜色更鲜艳的方向发展。这些都给LED大屏幕控制系统提出了新的挑战。
本文基于Altera公司的低成本Cyclone II系列芯片EP2CQ208C设计了LED大屏幕控制系统,在传统的SDRAM缓存技术上,提出了优化的SDRAM乒乓式缓存技术并详细阐述了反γ校正、颜色调节、灰度级调节等在FPGA中的实现。本系统最终实现了最大1 280×1 024分辨率、最低240 Hz刷新率的超大LED屏幕显示。同时可以通过PC机上软件对LED屏幕进行亮度、对比度、灰度级等参数的灵活调节,得到更加细腻的显示画面。
1 系统结构
本文所设计的LED大屏幕控制系统结构如图1所示,整个系统分为发送卡和接收卡两部分。以Altera公司的EP2CQ208C作为主控芯片,DVI数据解码选用了TI公司的TFP201A(最高支持SXGA),数据缓存选用了Samsung的K4S643232C,千兆以太网芯片选用了Realtek公司的RTL8212(双端口千兆物理层芯片)。
本系统的数据流分为控制数据和显示数据。控制数据由PC机上的软件发出,发送卡的FPGA接收控制数据,判定是控制发送卡还是控制接收卡的数据,如果是控制接收卡,则通过千兆网络将数据发送至接收卡。TFP201A从DVI接口解码出显示数据后由FPGA缓存入SDRAM,然后在读出数据时按照显示屏要求对数据块结构作一定调整后再由RTL8212打包发送至接收卡,接收卡接收显示数据,然后驱动LED显示屏。
本文主要讨论系统中的FPGA部分,包括以下三点:
(1)对SDRAM乒乓式缓存的优化;
(2)基于FPGA内部RAM与PC机软件的反γ校正与灰度级变换;
(3)LED显示屏的亮度、对比度等颜色调节在FPGA中的实现。
2 SDRAM乒乓式缓存的优化
传统的基于SDRAM的乒乓式缓存方案[1,2]都存在着数据读写操作复杂或者数据结构调整局限性大的缺点。结合现有方案的优点,本文提出了图2所示的SDRAM数据缓存方案。
本系统的发送卡设计目标是最大支持1 280×1 024分辨率、60 Hz刷新率的全彩数据发送,此时的像素频率为:
即本方案满足系统数据吞吐量的要求。由于两个SDRAM中存储相同数据,具有相同格式,所以SDRAM读写模块可以同时向两个SDRAM中写入或读出显示数据,这样两块SDRAM可以共用地址线,从而节省数十个FPGA IO端口,这是本方案的一大优点。同时每块SDRAM中划分了两个区,用以存放连续的两帧图像,可以根据LED显示屏的具体要求,从SDRAM中读出显示数据,满足系统灵活性的要求。
3 反γ校正与灰度级调节
特定条件下创建的图像在不同环境下工作时,往往会出现图像看起来显得太亮或者太暗的现象,所以LED大屏幕显示系统需要进行灵活的反γ值调节。当前反γ校正多采用基于FPGA内部ROM的查找表技术[3]。式(1)为反γ校正公式,式中默认输入图像灰度级为256,输出灰度级为G,x为输入灰度值,y为输出灰度值,γ为校正系数。要在FPGA中实现指数运算需要消耗大量逻辑单元,对于低成本要求来说是不现实的。本文提出了如图3所示的基于FPGA片内RAM、片外EEPROM和PC机软件的反γ校正技术。
在FPGA中的具体实现为:首先使用Altera自带的IP核,将3个数据宽度为16 bit、数据深度为256的双端口RAM实例化作为查找表。系统起动时,初始化模块首先从外部EEPROM中读出256个配置数据,初始化RAM查找表。初始化完成后,灰度变换模块将24 bit RGB数据分离成3个8 bit数据作为RAM地址,读出数据作为转换后的灰度值。当需要修改γ值时,通过PC机软件生成新的γ校正表,然后通过串口发送到发送卡,发送卡将数据发送至接收卡,在灰度变换模块的控制下将数据写入RAM。如果需要保存校正数据,初始化模块从RAM中读出数据写入EEPROM中。3个RAM中存放的是相同的校正数据,所以初始化模块可以同时对3个RAM进行初始化,从RAM中读出配置数据时也只需要其中一个RAM中的值。本方法结合PC机软件可以实现1~5的γ值连续调节和1~16的灰度级连续调节。
4 对比度、亮度调节在FPGA中的实现
(1)对比度调节
增强对比度实际上是增强原图各部分的反差,通过增加原图里某两个灰度值间的动态范围来实现[4]。这样压缩较亮和较暗区域的灰度级,扩展中间区域的灰度级,从而使细节部分更加清晰。假设输入灰度级为f(x,y),输出灰度级为g(x,y),则对比度增强的计算如式(6)所示。由式(6)可以看出,通过这种方法调节对比度后会压缩图像的灰度级,使变换后的图像丢失亮区和暗区的细节,所以此种方法不适合大范围调节。根据人眼对高亮度区域的灰度级变化不敏感,而对低灰度级区域灰度级变化十分敏感的视觉特点,本系统选择不压缩低灰度级区域。式中n为调节系数,最终当0<n<100时比较合适。
(2)亮度调节
本文在现有脉宽调制亮度调节技术[5]上提出了改进的亮度调节方案。本系统选用120 MHz的时钟作为脉宽计数器的驱动时钟,所以可以产生至少9 ns宽的脉冲。根据LED屏幕的驱动理论,选用9 ns作为最低亮度的最低灰度级的脉冲宽度,选用12灰度级时最高灰度级的脉冲宽度为9×211 ns。设竖直串行需要移2 560个数据,本系统选用12 MHz的屏幕数据移位时钟,则2 560个数据移入屏幕需要213 μs,在灰度级脉冲宽度时间小于213 μs时,就需要等待数据移入屏幕,而在灰度级脉冲宽度时间大于213 μs时,数据移位则需要等待脉冲宽度计数完成。调节亮度是对每一个灰度级的脉冲宽度乘上一个相同的系数。以64级亮度控制为例,最高亮度时最低灰度级的脉冲宽度为9×64 ns,最高灰度级的脉冲宽度为9×211×64 ns。采用脉冲宽度调制方式实现灰度控制,则扫描完一帧图像所需要时间由式(7)计算得出:
213 μs×9+294.912μs+0.589 824 ms+1.1796 48 ms
=3.981 384 ms (7)
本系统接收的视频源的刷新率为60 Hz,为了避免帧间图像撕裂的现象出现,LED显示屏的刷新率是视频源刷新率的整数倍。视频源的换帧时间为16.6 ms,LED显示可以在这个时间内读取同一帧数据进行屏幕刷新,根据上面的计算结果有 3.981 384×4<16.6 ms,即可得出LED显示屏的刷新率为60 Hz×4=240 Hz。
本文基于Altera的低成本Cyclone II 系列FPGA EP2CQ208C设计了一种高性能、低成本的LED大屏幕控制系统。通过改进SDRAM乒乓式缓存方案既节省了FPGA的IO口,又提高了系统的灵活性。设计了一种基于FPGA的片内RAM和PC机软件的反γ校正与灰度级设置方案,同时设计了在FPGA中实现的图像对比度、亮度调节模块。本系统最大可驱动1 280×1 024分辨率LED屏幕,刷新率不低于240 Hz,且灰度级、反γ校正系数、亮度、对比度等均可通过PC机软件灵活调节。为了实现屏幕驱动面积、LED屏幕刷新率的灵活设置,今后的工作将深入讨论这几方面之间的关系以及各种设置在FPGA中的实现。
参考文献
[1] 王臣凯.LED大屏幕同步显示系统硬件设计及实现[D].大连理工大学硕士学位论文,2008.
[2] 黄家善,张平均,陈建顺.基于千兆以太网的LED显示屏关键技术分析与实现[J].福建师范大学学报,2006(3).
[3] 续天翔.LED图象显示屏Gamma校正及在FPGA中的实现[J].机械管理开发,2008(12).
[4] 孟丽莹,成亮,闫国梁,等.基于CPLD的视频对比度调节硬件实现[J].科技情报开发与经济,2008.
[5] 王丽莉,董金明.LED全彩屏脉冲打散显示方案[J].电子测量与技术,2006(8).