微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于μC/OS2II的LED显示屏控制器

基于μC/OS2II的LED显示屏控制器

时间:08-14 来源:21ic 点击:

引言

  目前,LED大屏幕显示系统按数据传输方式分为两类:一是同步实时显示,即计算机显示系统的内容同时在LED视频显示屏上显示;二是异步通信更新数据显示,计算机通过USB、通用串行接口、以太网等通信方式将数据传送给独立视频源显示屏。通常,异步通信控制方式只能将屏幕作为一个完整的区域显示,对于较大屏幕的显示系统,有时需要将整屏分为若干个窗口分别显示不同的内容,且内容的更新只是某一个或几个窗口。针对这种情况,本文提出了一种基于NiosII32位处理器的设计方案,能有效地实现单屏幕多窗口的任意位置显示,使得显示方式更加灵活方便。

  1 系统总体设计

  1.1 系统硬件结构

  LED显示系统主要由计算机系统、数据通信传输模块、数据处理模块、扫描控制模块、显示驱动模块和LED屏构成,如图1所示。计算机系统将要显示的点阵信息通过RS485串行接口送往存储设备,数据处理模块读取存储设备的数据并进行各种特技显示处理,将处理好的数据送往扫描控制模块,显示驱动模块接收到扫描控制模块的数据后送往LED屏上显示。数据通信传输模块、数据处理模块、扫描控制模块3部分均在FPGA上实现,即构成LED异步控制器。


1.2 系统软件方案

  软件基于NiosIIIDE开发完成,应用程序基于μC/OS2II实时操作系统实现。软件程序主要由2个任务和1个定时器中断服务程序组成,任务间采用信号量的方式进行通信。任务1将上位机传送到CF卡存储设备的数据写入内存中;任务2从内存中读取数据并进行分析处理,把分析处理完的数据送往扫描控制模块。为了充分利用μC/OS2II的实时性和多任务的特点,采用嵌入式文件系统进行数据管理。

  2 控制系统硬件部分设计

  数据处理模块由NiosII软核CPU、1片SDRAM和1片Flash存储器组成。NiosII软核CPU是整个控制器的核心,负责数据的处理;SDRAM作为CPU处理数据时的缓存使用;Flash存储器用于存储点阵信息数据和LED屏显示控制参数。

  扫描控制模块由用户自定义的PWMIP核和显存组成。显存采用1片SRAM实现,用来保存当前显示的一帧点阵信息数据。PWM模块通过Avalon总线和NiosIICPU连接,将从CPU接收到的数据按指定地址写入显存,然后再按一定的寻址方式从显存中读取点阵信息数据进行扫描。

  串口控制器、定时器、存储器控制器、CF卡控制器通过SOPCBuilder软件定制集成IP核自动生成。本控制器的硬件结构如图2所示。


  3 控制系统软件部分设计

  控制系统软件是基于实时操作系统μC/OS2II进行设计的。该操作系统利用高效任务调度算法调度每个任务,而每个窗口的显示由单个任务完成。主函数创建了2个任务:一个用于读取CF卡数据;另一个用于接收来自不同显示模块的场景数据和播放显示文件。

  3.1 数据结构

  数据在存储器中的存储形式直接影响数据的存取速度和控制的复杂度。本系统对显存中的数据和缓存中的数据均重新组织,降低了数据处理和扫描控制的复杂度。

  3.1.1 显存数据的组织

  LED显示屏的每个像素点都包括红、绿、蓝3种基色,每种颜色的灰度级均为256级(即由8位数据对像素点灰度级进行编码),故每个像素点需要占用3字节的存储空间。显示时,每个像素的红管、绿管、蓝管是同时点亮的,也就是说,3种颜色的数据是并行上屏的。

  可将红、绿、蓝3种颜色对应的数据分开存储,以方便操作。数据存储方式如图3所示。同一种颜色的数据集中存放在某个区域中,区域的首地址作为该颜色的基址。在进行数据存放时,每个像素点只需给出相对变化地址(变址),加上不同颜色的基址就可以在3个区域中找到对应点的视频数据。

LED显示屏灰度的实现方法是分权重扫描的。这样就需要对颜色数据进行位分离,然后同权重的位重新组合。为了方便操作,存储时把图3所示的每个区再分为8个权重区,所有同权重的数值集中放于对应的权重区中。

所谓位分离,就是把数据的高低位按权重分开,然后重新组织。位分离在可编程逻辑器件中比较容易实现,可以划出一块逻辑矩阵,操作时横向存入,纵向读出即可。位分离示意图如图4所示。



3.1.2 缓存数据的组织

若要进行特技效果显示,则当前显示的数据帧和下一个数据帧存在着某种变换关系。由于CPU只能对显存进行写操作,所以需在缓存中划分出一块大小和显存相等、地址一一对应的区域screen,用于存储当前显示的数据帧信息。如果各窗口之间存在重叠现象,且特技数据处理运算直接在screen区域进行,则窗口重叠部分信息可能发生混乱。故在缓存中再为每一个窗口划分出一块存取空间(part1,part2,partn),用于存储本窗口显示的前一帧数据信息。在特技数据处理运算时,先在part区域处

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top