DSP在LED大屏显示中的应用
扫描二维码
随时随地手机看文章
目前采用的LED大屏幕显示系统的控制电路,大多由单个或多个CPU及复杂的外围电路组成,这种电路设计,单片机编程比较复杂,整个电路的调试比较麻烦,可靠性和实时性很难得到保证。针对这种情况,提出一种SD卡存储显示文件,由TMS320LF2407A和EPM240配合完成的大屏幕设计方案,使得动画的变换和处理与屏幕的显示控制完全分离,各模块任务分明,功能完善,充分发挥了DSP以及CPLD各自的优点,实现高性能的无闪烁显示。
1、总体设计
系统结构如图1所示,核心处理器采用TMS320LF2407A,外部扩展了网络接口芯片RTL8019AS、SD卡和双口RAM芯片。本系统中,DSP主要发挥其逻辑运算处理能力;网络通信接收文件功能、图形文字变换功能以及文件的读取保存功能都由TMS320LF2407A完成;而CPLD芯片EPM240的功能较单一,只负责从双口RAM中获得将要显示的数据,批量读取并送入由多个74LS595驱动的LED点阵阵列。换言之,EPM240负责实时动态刷新屏幕显示,保证刷新速度而不产生闪烁感觉(即刷新频率要达到100Hz以上)。
本系统主要分为3个功能模块:
(1)以太网数据传送部分。PC机通过以太网将需显示的数据(可能是屏幕截图数据,也可能是文本文件等)以UDP数据报的形式发往本系统,RTL8019AS会自动将不是发往本地IP地址的数据包丢弃,主程序中查询RTL8019AS接收到新的数据包并读取入SD卡文件缓冲区,缓冲区填满时以文件形式写入SD卡FAT32文件系统中。
(2)DSP动画变换算法实现部分。TMS320LF2407A具有32KB的外部RAM空间,图1中所示的双口RAM被扩展至此空间。首先DSP将这32KB空间划分成2个区域(各16KB),分别用作逻辑运算区和显示内存区(都在双口RAM中)。DSP读取SD卡中将要显示的文件数据并将其送入逻辑运算区,根据画面所需的动画要求做相应变换,变换后的点阵直接填充显示内存区,以便CPLD从该区读取显示数据。
(3)CPLD显示图形的刷新。利用CPLD速度快的特点,将显示内存区中的数据快速读入并发送给74LS595驱动扩展的LED阵列,由于功能的单一性,使显示具有很高的刷新速度,无闪烁等现象。
2EPM240的主要任务
EPM240需从双口RAM的显示内存区中读入数据,所以在硬件电路上必须将双口RAM的一个端口与EPM240连接,在用VHDL语言描述电路时,采用状态机实现EPM240对双口RAM的控制与数据的读取。由于双口RAM的2个端口都可能同时对同一个单元操作,因此必须将双口RAM的BUSY引脚分别接至DSP和EPM240上,一边操作时,另一边必须等待操作结束,否则可能会造成数据错误。DSP在操作显示内存区时,采用逆序地址方向(地址从大到小),而EPM240采用正序地址方向操作,这样做的好处是修改一幅图像时,最大可能地避免发生同时操作同一单元的现象。
除了完成与双口RAM接口的工作外,EPM240还必须将读入的字节不断地发送给74LS595刷新硬件显示,只要采用VHDL语言描述出SPI总线接口协议即可。简而言之,CPLD在本系统中起数据的搬运作用(显示内存区—>EPM240—>LED显示)。
3DSP实现图像的动画变换
常见的动画处理包括左右平移、上下平移、连续拉幕、扇入扇出等。基于上面提出的双缓冲区的设计模式,使得动画的实现变得清晰易行。动画变化原理如图2所示。
图2中假设用户采用的实际屏幕宽度为Width点,高度为Height点。算法的基本思想是假想有个和实际屏幕大小一致的视窗存在,并可根据需要按一定规律在逻辑运算区内移动。即落在视窗内的部分才能被实际屏幕显示(被送入显示内存区)。
例如,要实现图像的左右平移操作,实现算法前,需将显示文件的原始数据载入逻辑运算区,然后复位视窗的偏移坐标(OffX,OffY)为(0,0),每隔用户设定的时间间隔后,调整左右偏移量OffX累加SpeedDot(动画速度,用户设定),再将落入视窗内的数据部分映射到显示内存区中,由EPM240负责刷新显示。当OffX累加到达到Width时动画结束,此时可以将下一幅图像文件原始数据载入逻辑运算区进行类似的动画操作。再例如实现图像从右下角逐渐飞入屏幕,可将(OffX,OffY)初始设置成(-Width,-Height),显然此时无数据落入视窗,之后每隔时间间隔后,再进行如下映射操作即可:
OffX+=SpeedDot;
OffY+=SpeedDot*((float)Height/Width);
4网络传输的实现
RTL8019AS和TMS320LF2407A间的连接如图3所示。采用以太网进行数据传输可以提高通信质量,具有通信速度快、传输数据量大等特点,而且接入简单,只需将RJ45连接头接入集线器即实现了网络的物理连接。
以太网主要有2种通信协议:TCP与UDP协议。TCP协议提供的是可靠的传输服务,可以确保数据不丢失,但它的实现较为复杂,任务也比较繁重,系统RAM的消耗也较大;UDP协议提供的是不可靠传输服务,最大可能地将数据传输到目的地。可靠的数据传输只能由高层(一般是应用层)负责校验和发起,传输快、运算量小、算法简单易行。
对于本系统而言,大屏幕点阵的变换与文件系统的操作等任务已较为繁重,而且一般只是在设置显示图像和动画时才进行以太网传输,丢包的可能性并不大,所以采用UDP协议。发送时,只需将要传输的数据逐层地向低层发送,经过每层时都在前面加上本层的头部(有的还加有尾部),在头部中包含有相关的传输信息,最后通过物理层(RTL8019AS的驱动层)将最终封装好的数据帧发送到网络中。接收正好是发送的逆过程,只需将头部逐层剥离(剥离时要校验是否正确,否则丢弃),最后获得被封装的数据。DSP在收到正确的数据后,将其以文件形式保存到SD卡中。本模块应用层流程图如4所示。
5大屏阵列的构成
显示面板由32×16点阵构成最小单位,JP1是输入信号,当有多个单位级连成大屏时,只需将前个单位的JP2口与后一单位的JP1口连接即可。第一块单位板的JP1口连接到控制板,由CPLD扫描显示。采用1/16扫描方式,行信号由74HC154译码后输出,并经过APM4953(内部是2个P沟道的MOS管)增强驱动能力;列信号由74HC595级连构成,提供列线的灌入电流。由于级连时消耗电流较大,因此为每块单位板设置电源模块等,限于篇幅,这些图并未给出。控制时,CPLD先通过列数据端口串行地发送当前行的数据,然后选中当前行进行显示,暂留时间后对下一行进行同样操作。本电路接口十分简单,扩展大屏也十分方便。
本方案采用以太网通信,大大提高了数据传输速度和传输的可靠性;充分利用DSP的运算优势,进行动画的实时变换处理,将变换与显示控制完全分离;CPLD的运用可以大大提高硬件的控制速度,快速刷新屏幕,稳定可靠,扫描频率高。