基于双口RAM双CPU的高速旋转LED的显示系统
2020-11-27刘念,张弛
刘 念,张 弛
(武汉纺织大学机械工程与自动化学院,武汉 430200)
0 引言
现有高速旋转LED 显示系统为了提高显示分辨率,往往采用处理速度较快ARM+FPGA的结构形式[1-2],此种模式数据处理将ARM 模块的大部分时间用在视频文件的处理转换上,大大降低了视频文件数据的传输和读取速度。现有的高速旋转LED 显示系统往往采用机械式的供电系统[3-8],由于电机与电刷不断的摩擦,电刷会产生磨损,因此需要定时更换电刷,机械式的供电系统结构往往比较复杂,给产品制作增加了难度。
为了解决上述问题,本文提供一种基于双口RAM双CPU的高速旋转LED 显示方法,将视频图片文件在上位机的时候就转化为LED 格式的可直接用于显示的数据,无需再将数据在控制板的ARM 模块中转化,加快数据的传输与读取速度。采用2个CPU加1个双口RAM以及1个CPLD实现更高的分辨率。采用无线供电的方式简化了机械式复杂的机械结构,并且无需定时更换电刷,解决了现有技术中的问题。使用自己设计的文件管理系统,以数据流的形式存放在NANDFLASH之中,相较于FAT32 格式的文件,程序执行效率跟高,克服了文件数据读取慢的问题。
1 基于双口RAM双CPU的高速旋转LED方法
基于双口RAM双CPU的高速旋转LED显示方法如图1所示,具体按照以下步骤进行。
(1)上位机将所需要的视频及图像文件通过物联网模块的串口传送到第1 处理器(CPU),第1 处理器根据接收的数据信息将相应数据保存在Nand Flash读写模块指定的地址。
图1 高速旋转LED显示系统的数据传递流程图
(2)第1 处理器通过数据线和控制线将视频及图像文件信息从Nand Flash 读写模块指定的地址中读出,通过数据线送入双口RAM单元指定地址;双口RAM单元指定地址是通过第1处理器的数据地址复用线送出锁存在CPLD单元中,和另一端口的低四位组成13位的地址线来确定的。双口RAM中的数据是由处理器1 写入,处理器2 读出。处理器2 每次读出256 字节。双口RAM 的大小为8 k,故将双口RAM 分为32 个空间,每个空间256字节。当系统刚通电的时候,处理器1会先将双口RAM 8k的数据写满,之后处理器2每隔一个固定的时间会来读取一次256字节数据,读完之后会向处理器1发送一个信号,处理器1接收到信号之后会将接下来的数据写入刚读取完的数据空间中,由于处理器1的写入速度要快于处理器2的读取速度,所以数据总是能在处理器2读取之前更新。
(3)第2 处理器通过数据线将双口RAM 单元指定地址中的数据读出,双口RAM 单元指定的地址是通过第2 处理器的数据地址复用线送出锁存在CPLD单元之中,和另一端口的低四位组成13位的地址线来确定的。
(4)第2 处理器将从双口RAM 单元指定地址中读出的数据通过数据线传输到CPLD单元之中锁存,再通过CPLD单元将数据传输到LED驱动模块。
2 高速旋转LED显示系统的模块关系
基于双口RAM双CPU的高速旋转LED显示系统如图2所示,包括物联网模块、Nand Flash 读写模块、双口RAM 模块、CPLD单元、霍尔传感器模块、基于Nand Flash读写模块的LED文件管理系统、无线供电发射模块和无线供电接受模块。
图2 高速旋转LED显示系统的模块框图
(1)双口RAM模块,包括双口RAM单元、第1处理器和第2 处理器。第1 处理器与第2 处理器通过双口RAM 单元、CPLD 单元建立联系,利用双口RAM 单元和双核处理器(CPU)提高系统读写速度。
(2)CPLD 单元,通过连接第1 处理器和第2 处理器的数据线和锁存控制线,达到第1处理器和第2处理器的数据地址线分时复用的效果,拓展了LED驱动模块8所需的数据线。
(3)霍尔传感器模块,外接于第1处理器,用于检测LED棒的位置和旋转一圈所花费的时间。
(4)基于Nand Flash 读写模块的LED 文件管理系统,包括两个部分,一个是文件索引部分,另外一个是文件存储部分。文件索引部分主要包括文件名、文件大小、文件存储地址。文件存储部分是用来存储LED 文件。当有文件从客户端传入设备时,LED 文件管理系统会根据发过来的头文件信息将文件名、文件大小存入指定的文件索引区域。并根据文件系统的存储情况分配文件存储的地址,将此地址保存在相应的文件索引区域。然后对接收到的数据包进行校验,校验无误后将数据包存入指定地址,如此循环,直到将整个文件传输完毕。
(5)无线供电发射模块,与PWM波发生模块在同一块电路板上,PWM波发生模块为直流无刷电机提供可变占空比的PWM波来改变电机旋转的速度。无线供电发射模块外接12 V的直流电源。
(6)无线供电接受模块,与双口RAM 单元5、CPLD 单元、Nand Flash 读写模块、物联网模块、霍尔传感器模块、LED驱动模块8在同一块电路板上。
无线供电接受模块与双口RAM 单元、CPLD 单元、Nand Flash读写模块、物联网模块、霍尔传感器模块、LED驱动模块在同一块电路板上,接受来自于无线供电发射模块的能量产生稳定的5.0 V 的电压,5.0 V 直流电源在通过3.3 V 稳压器模块产生稳定3.3 V 电源,从而为双口RAM 单元、CPLD 单元、Nand Flash读写模块、物联网模块、霍尔传感器模块提供稳定的3.3 V电源。
关于静态图像显示不稳定的解决方法:由于图像显示的稳定性是依赖于电机转动的稳定性决定的,当电机带动LED叶片旋转时,电机的速度受到空气阻力和其他因素的影响,旋转速度会产生波动,进而影响图像显示的稳定性。为了解决这一问题,在控制系统板上实时监测LED 叶片旋转速度,根据监测到的速度来调整控制板的定时时间,以达到定时时间与叶片旋转速度相匹配。
3 双口RAM双CPU的高速旋转LED显示系统的数据传递流程
如图1所示,首先上位机1(PC端)会根据播放的视频生成裸眼3D 设备能够识别的LED 文件,PC 端的客户端通过连接物联网模块2发出的WIFI信号使得设备与PC端处于同一局域网之中,然后PC端将LED文件分成一个个数据包,并将数据包发给物联网模块2,物联网模块2接受到数据包之后,将数据包再转发给第1 处理器3。第1 处理器3 对数据包进行校验,看在传输的过程中是否有数据出错。校验无误后,第1处理器3 将数据包存入Nand Flash 读写模块4。当设备要显示图像的时候,第1 处理器3 从Nand Flash 读写模块4 中读出LED文件的数据包并将数据包传递到双口RAM 单元5。与此同时,第2 处理器6 将双口RAM 单元5 中的数据读出传递给CPLD单元7,CPLD单元7再将数据包传输给LED驱动模块8。
4 双口RAM双CPU高速旋转LED显示系统程序控制流程
如图3 所示,主程序在进入消息循环状态之前初始化Nand Flash读写模块、定时器和外部中断。初始化Nand Flash读写模块的作用有两个:一个是读取文件的播放地址,使系统进入播放状态;另一个就是读取文件存储的状态。初始化定时器和外部中断的作用是为显示图像做准备。当裸眼3D叶片旋转起来的时候,控制板上的霍尔传感器感应到固定在电机上的零位磁铁后会产生一个外部中断,进入外部中断,执行外部中断程序。首先外部中断程序会重置定时器,再开启定时器。然后再根据初始化的文件地址读取第一个分度的数据并显示。在过了定时器定的时间之后,程序会进入定时器中断,执行定时器中断程序。定时器中断程序首先会根据上一次读取数据的位置更新文件读取地址,然后读取一个分度数据(256字节)并显示。如此循环直到霍尔传感器再次感应到零位后进行下一帧的数据读取。
图3 高速旋转LED显示系统的程序流程图
5 结束语
实现高分辨率的实质是在一定的时间之内,处理器能够读取足够多的数据来生成一帧的画面。这就要求处理器的速度足够快。所以大多数技术人员都采用速度较快的STM32 单片机。而本文使用两个成本较低的单片机加上用汇编写的驱动程序同样能够达到较高的分辨率。实现的难度体现在要协调好两个处理器之间的数据写入与数据读取。其次使用汇编语言来实现更高效的代码。本文在视频图像文件传输之前就将视频图像文件通过软件转化为裸眼3D设备可以执行的LED文件。通过使用双处理器以达到更快的数据读取写入速度。使用自己设计的文件管理系统,以数据流的形式存放在NANDFLASH 之中,相较于FAT32 格式的文件,程序执行效率更高,克服了文件数据读取慢的问题。采用4个传感器监测裸眼3D设备转速,使设备显示的图像更加稳定,克服了裸眼3D设备显示不稳定的问题。