在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中的值。

4 对比度、亮度调节在FPGA中的实现

(1)对比度调节

增强对比度实际上是增强原图各部分的反差,通过增加原图里某两个灰度值间的动态范围来实现。这样压缩较亮和较暗区域的灰度级,扩展中间区域的灰度级,从而使细节部分更加清晰。假设输入灰度级为f(x,y),输出灰度级为g(x,y),则对比度增强的计算如式(6)所示。由式(6)可以看出,通过这种方法调节对比度后会压缩图像的灰度级,使变换后的图像丢失亮区和暗区的细节,所以此种方法不适合大范围调节。根据人眼对高亮度区域的灰度级变化不敏感,而对低灰度级区域灰度级变化十分敏感的视觉特点,本系统选择不压缩低灰度级区域。式中n为调节系数,最终当0《n《100时比较合适。

LED大屏幕控制系统是怎样设计实现的

(2)亮度调节

本文在现有脉宽调制亮度调节技术上提出了改进的亮度调节方案。本系统选用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)计算得出: