朱燕萍,程朋飞,王福斌,潘金燕
(华北理工大学电气工程学院,河北唐山 063210)
目前,发光二极管(light emitting diode,LED)显示屏具有色彩鲜艳、图像清晰、亮度高、驱动电压低、功耗小、耐震动、价格低廉和使用寿命长等优势[1]。LED显示图像的非均匀度是衡量LED显示屏显示质量的指标,非均匀度过高,会导致LED显示图像出现明暗不均的情况,影响显示效果,降低LED显示屏的显示质量[2-4]。因此,对于LED模块的亮度和灰度不一致问题,已提出很多的非均匀度校正方法,普遍使用的是基于CCD(charge-coupled device)的校正技术[5]。根据CCD采集到的亮度信息,通过一系列算法,得到用于校正的系数矩阵,然后把校正系数和显示图像的灰度信息在LED显示屏上表现出来,从而实现非均匀度的校正。
由模块拼接而成的LED显示屏,在拼接过程中模块的位置在垂直或者水平方向会发生偏离理想位置的情况形成位置畸变[6]。由于此时LED显示屏是一个畸变的光学系统,所以显示图像会产生失真和灰度畸变,而原因就是非均匀度过高。因此必须对LED显示屏进行适当的灰度校正,消除畸变[7]。本文在FPGA中进行非均匀度的校正处理,基于Cyclone Ⅱ系列的芯片EP2C8Q208C来实现由于灰度畸变而进行的LED屏显示图像非均匀度校正,并对整个系统进行了仿真。
LED显示屏创建的图像在特定条件下工作于不同环境中时,显示画面时常会出现太亮或太暗的极端情况,因此需要对LED显示系统灵活地进行灰度畸变调节[8]。首先,需定义一个用于表征显示像素点灰度值的灰度矩阵G,如式(1)所示。
(1)
(2)
式中:Mij表示LED显示屏的第i行第j列个模块;k为一个模块内所包含的像素点数。
如果一个模块内只有一个像素点时,灰度矩阵就可以表示为
(3)
同样也适用于各像素点的灰度的非均匀度校正,因而可以得到校正后的灰度矩阵,如式(4)所示:
(4)
该方法是以模块为单位对像素点灰度的非均匀度进行校正的,即以相同的校正方式对同一模块内的像素点进行校正,此方法并未真正实现对灰度值的逐点校正。当模块内只有一个像素点的时候,如式(5)所示的校正后得到的灰度校正公式,此时才是真正意义上实现了对灰度值的逐点校正,因此,仅当模块内只有一个像素点时,才能实现逐点校正。
(5)
在对像素点的灰度值进行校正时,为能更好地反映像素点间的亮度差异,一般取像素点的最高灰度值作为修正对象,此时的灰度矩阵如式(6)所示:
(6)
将式(6)代入式(5)即可得到各像素点的灰度值修正结果,如式(7)所示:
G′相当于一张对LED显示屏做灰度畸变校正的系数表,LED显示屏将该矩阵中的信息和显示图像的灰度信息同时显现出来。具体的灰度校正过程为:将各像素点的灰度校正结果G′和显示图像各像素点的灰度信息对应元素相乘,即可完成灰度校正。
LED显示屏的数据来源是计算机显示卡的DVI接口,它有红、绿、蓝各8位共24位彩色图像数据,包括使能数据、同步和混合数据,这些数据与显示屏是完全同步的[9]。本文介绍的基于FPGA的Look-Up Table技术,具有高速精准的优点,例如系统使用EP2C8Q208C的访问时间为10 ns,理论上可以实现100M的查表速度,在2个时钟周期以后,查找表便可输出查找到的结果[10]。
本设计是LED显示系统的一部分,系统框图见图1。该系统从计算机显示卡的DVI接口输出图像信号,包括3路的RGB信号,经过DVI解码电路变成3路8位数字信号。然后在FPGA中进行非均匀度的校正处理,之后将校正后的图像数字信号输入到驱动控制电路,最后由驱动控制LED显示屏,使其更好地显示图像。
图1 校正系统的框图
在FPGA中的具体实现过程为:首先使用Altera自带的IP核,实例化3个数据宽度为8 bit,数据深度为256的双端口RAM作为查找表。系统启动时,初始化模块首先从外部EEPROM中读出256个配置数据,初始化RAM查找表。初始化完成后,灰度变换模块将24 bit RGB数据分离成3个8 bit数据作为RAM地址,读出数据作为转换后的灰度值。当需要修改值时,通过PC机软件生成新的校正表,然后通过串口发送到FPGA,在灰度变换模块的控制下将数据写入RAM。
将整个系统包括校正模块构成的顶层文件经过Quartus Ⅰ全编绎,并得到SignalTap Ⅱ中对灰度校正模块调试的时序图,如图2所示,从时序图中看出初始化模块从RAM中读出数据写入EEPROM中。3个RAM中存放的是相同的校正数据,所以初始化模块可以同时对3个RAM初始化,在从RAM中读出配置数据时也只需要其中一个RAM中的值。通过本方法结合PC机软件可以实现上述的灰度畸变的非均匀度校正。
图2 灰度校正模块时序
本论文设计使用的是CycloneⅡ系列的芯片EP2C8Q208C,QuartusⅡ是综合性的可编程逻辑器件的开发软件,内嵌有综合器及仿真器,能够实现从开发输入到配置硬件内部逻辑元素的整个开发流程[11]。图3为FPGA控制系统内部结构,当图像数据传送到FPGA内部,需进行一系列的数据处理才能输出给LED显示,主要有:图像数据的获取、对获取的数据进行格式转换、实现三基色256灰度级的调节、灰度畸变校正和输出LED显示的控制信号。
图3 FPGA控制系统内部结构
采用双端口RAM形式的图像数据获取模块,在获取图像数据后对其进行暂时的存储。双端口RAM每个端口能够独立地采用时钟信号边沿触发方式读取图像数据。图4为图像数据获取模块的原理图,当DE和HSYNC同时有效时,RAN计数器开始工作,此时RAM将保持与从解码电路输出的像素频率相同的频率读入数据。在双端口读写下一行图像存储数据之前需保证本次读写已完成。在将图像数据输出给驱动LED显示屏之前需将从解码电路输出的并行24位图像数据信号转换为红、蓝、绿3路并行数据信号。在数据转换完成后还需要用横向写入、纵向读取的方式实现图像数据权值的读写,将图像中8位数据按其不同的权值对应不同占空比,确保实现红、蓝、绿三基色256灰度级。
图4 图像数据获取原理图
读SRAM模块是通过灰度级的存储实现模块数据的输出,RAM按从低位到高位的顺序输出内部数据,因此,SARM按行存储每个像素点的三基色信号,按列读取输出给LED显示屏的驱动信号。在场同步信号上升沿到来时,各计数器进行变量初始化,SRAM时钟上升沿到来时,开始读取数据,输出高电平,计数器的输出值作为地址输出。当SRAM内部数据读取完之后,将输出低电平的使能信号给下级并将计数器清零。
在导通时间的控制中,若将图像的数据周期256等分,LED的点亮时间就是每份最低权值对应的导通时间,从而得到最低导通时间。当图像数据从SRAM中读出后开始启动计数器,在时钟信号的控制下,图像数据通过移位寄存器输出给LED驱动信号,在输出过程中移位信号需要比使能信号延迟一个周期,以确保能够读取出全部的图像信号,并且为了避免信号的覆盖,需要暂存输出的数据。当读出图像数据到锁存器中时,本模块会输出一个使能,使得锁存器中的数据按特定权值驱动LED,移位信号延迟一个周期后,回到稳定状态输出下一帧图像,循环执行下去。
时钟控制模块主要功能是利用锁相环(PLL)为系统各模块提供时钟信号,时钟信号由锁相环内部的自振荡器产生,该信号作为反馈传送到相频检测电路,该电路会通过比较器确定时钟信号大小,从而调节输出的时钟周期。
对一块分辨率为128 pixel×128 pixel的LED显示屏进行显示图像的非均匀度校正,该显示屏每个显示模块对应一个像素点。依据LED显示屏的亮度分布情况,同时根据《LED显示屏测试方法》SJ/T 11281—2003中提供的计算LED显示图像的非均匀度的方法,通过式(8)可以得出校正前和采用本文所述非均匀度校正后亮度分布图,两者对比即可验证本文设计方法的有效性[12]:
(8)
式中:Iadv为LED显示屏的平均亮度;Iij为第i行第j列的像素点的亮度[13]。
校正前、校正后LED显示屏亮度分布如图5、图6所示。图5中,由于LED显示图像的非均匀度过高,显示图像产生了失真和一定的灰度畸变。图6中,经过非均匀度校正后的图像畸变消失。计算结果如表1所示。由表1可知,经过校正,显示图像的非均匀度由原来的67.9%降低到0.96%,因此该非均匀度校正方法是有效的。
本文所采用的FPGA开发板是EP2C8Q208C芯片,由于条件限制,仅将灰度级实现模块、导通时间控制模块和SRAM模块下载到开发板进行验证,将已有的计算机中的图像经数据转换后存储到FPGA内部存
图5 校正前LED显示屏亮度分布
图6 校正后LED显示屏亮度分布
表1 2种情况下LED显示图像的非均匀度 %
储单元,经过模块的数据处理将结果显示在开发板的液晶屏上。
图7为验证FPGA开发板的有效性设计显示的图案,将程序输入QuartusⅡ软件进行编译后无错误,可见模块设计的逻辑是无错误的,将程序下载到开发板后,如图8所示,可见开发板液晶显示器依次显示图7所示的图片,即基于FPGA非均匀度校正方法是可行的。
图7 显示的图片
图8 开发板的显示结果
本文提出了一种基于FPGA的LED显示图像的非均匀度校正方法。首先,解决了由于LED显示屏在拼接过程中出现的LED显示图像灰度畸变而造成的非均匀度过高的问题,通过分析得到了校正LED显示屏的灰度校正矩阵,其次,给出了一种基于FPGA的Look-Up Table技术的非均匀度校正的设计方法及系统构成,实现了在FPGA内部进行非均匀度校正的功能。采用Cyclone Ⅱ系列的芯片EP2C8Q208C来实现,并对整个系统进行了仿真。结果表明,基于FPGA的Look-Up Table技术的非均匀度校正方法能够有效地消除图像的灰度畸变。