基于ARM+FPGA的大屏幕显示器控制系统设计
扫描二维码
随时随地手机看文章
0 前言
随着计算机和半导体技术的发展,LED大屏幕显示系统成为集计算机控制、视频、光电子、微电子、通信、数字图像处理技术为一体的显示设备。目前LED大屏幕显示器向更高亮度、更高耐气候性、更高的发光均匀性、更大屏幕化、更高的可靠性方向发展。LED显示屏产业正成为我国电子信息产业的重要组成部分。大屏幕显示技术的发展进步,需要处理的数据量大大增加,系统的频率越来越高,系统的规模越来越大,对显示控制系统的要求不断提高。以往的LED大屏幕显示系统用中小规模集成电路实现,系统体积较大、调试困难、不易修改。随着半导体技术的进一步发展及大规模集成电路的广泛应用,ARM具有体积小、功耗低、数据处理能力强等特性,PLD能够满足LED大屏幕系统高速图像数据传输对速度的要求且设计灵活。鉴于此,本设计采用ARM+RAM+FPGA方案,解决了系统的运行速度、寻址能力和功耗等问题,从而支持更大可视区域的稳定显示,存储更多的显示内容。
1 系统组成及原理
该系统主要由PC机、显示控制电路和LED显示屏3部分构成,如图1所示。
PC机在控制中作为上位机,用于后级下位机ARM的控制和管理。上位计算机主要用于人机交互,完成对显示控制电路的显示数据发送以及设置LED显示屏的显示效果。用户在上位机上通过控制软件将编辑好的文字图片信息和相应的控制命令通过串行通信传输至系统的控制电路部分,LED显示屏即可根据用户选择的方式循环显示用户编辑好的文字和图片,该系统还具有脱机显示的功能,用户将显示的内容传送至显示控制电路部分后,上位计算机就可以不再介入显示的过程,显示系统可以根据用户设定的模式显示所要显示的信息内容。数据转换信号控制部分采用ARM实现,LED显示屏的扫描驱动电路采用FPGA来完成。上位机与下位机之间的通信采用标准的RS232/RS485计算机数据串行通信方式,它们相对独立,但相互间协调工作。显示屏以LED为像素,由LED点阵显示单元拼接而成的,本设计的显示屏为16行×256列,采用640×480点阵结构。
2 系统硬件设计
2.1显示控制电路
显示控制电路系统的重要部分,主要由输入接口电路、数据转换及信号控制电路、扫描驱动电路组成,如图2所示。 [!--empirenews.page--]
当显示屏做得越大,即屏幕的点阵越多,向显示屏发送的数据就越多,数据传输与控制的时间也会增加,完成一屏扫描的时间会越长。因此,在设计中必须考虑这个因素。满足这一要求,关键在于提高程序的执行速度,可以选择更快的CPU或数字信号处理芯片ARM。本设计采用基于ARM的32位嵌入式RISC为处理器,S3C4510B是完全可以胜任的,该微处理器的速度较高,而且存储容量较大。
上位机通过串口经过RS232/RS485转换器将指令集发送给ARM微处理器,ARM微处理器把接收到的指令集放入外部的FLASH中保存,断电后内容不丢失,同时ARM外部扩展两片SRAM用于存放快速运算的数据,光传感器和温度传感器用来测量外界的光和温度,以便随着光线的强弱改变显示屏的亮度,在显示屏上显示出外界温度。FPGA完成对LED屏的扫描驱动过程,其内部固化的数字逻辑负责产生屏幕显示控制信号(串行移位时钟、行锁存信号、行选信号等),其外部配置的两片SRAM用于分时读取灰度数据。同时,FPGA从SRAM中读取灰度数据信号,并将其转换成上屏数据后串行输出到相应的颜色的信号数据总线上。FPGA外部扩展的两片SRAM组成了数据缓冲、切换区,采用乒乓逻辑,某一时刻向一片存储器写入数据,另一片被FPGA逻辑读取数据转换后送人显示屏,二者轮流切换,保证了数据的高速上屏和显示的连续性。ARM外部配置大容量的SRAM和FLASH存储器,与传统的显示屏控制电路相比较,可以支持更大的显示区域、存储更多的显示内容、获得更好的显示效果。
2.2扫描驱动电路设计
LED显示屏的扫描驱动电路部分是由FPGA来实现的,如图3所示。
扫描驱动电路主要完成灰度数据的读取和发送、上屏灰度数据的产生、移位时钟的产生、亮度信号的控制、4个分区锁存信号的产生、通知ARM发送数据等功能。这些功能均在一片FPGA中完成,这样使显示控制电路板的体积减小,而且由于FPGA功能用硬件描述语言VHDL编程实现,即可以通过使用VHDL语言编程,来验证系统方案的可行性及正确性,然后再用FPGA硬件来实现,从而可以大大缩短开发周期,使设计灵活、修改方便,同时FPGA由于高集成度、高速高可靠性、开发周期短的特点,从而大大改善电路性能。
这种设计的实现需要FPGA提供大量的I/O引脚,其中I/O引脚包括(1)系统总线接口:数据总线8根,控制信号线5根,亮度信号线3根,输入线1根,复位信号线1根,共18根;(2)双体SRAM总线接口:地址总线15根,数据总线8根,读写控制信号2根,共50根;(3)显示控制信号输出接口:移位时钟信号1根,行锁存信号1根,行选4根;(4)显示像素数据输出接口:红、绿、蓝共3根。共计18+50+6+3=77个I/O口。为了可以使LED显示屏的尺寸增加1倍,即所需的I/O口增多,同时考用VHDL语言描述的内部功能逻辑所需的宏单元数量,需要选择256个宏单芯片,在此FPGA选用32位的PolarPro QLlP300芯片。[!--empirenews.page--]
2.3静态存储器SRAM的选择
外部扩展的两片SRAM,要求能满足上屏数据读取速度的要求,考虑到存储数据的宽度和容量,本设计选用ISSI(Integrated Silicon Solution Inc.)公司的IS61C1024芯片。该芯片存储容量为128 kB,8位数据宽度,最高读写速度为25 ns,电源电压为5 V,具有最高40 MHz的读写频率,可进行高速异步读写操作,无须等待时间,其容量满足一屏文字和图像数据信息的存储要求,两片SRAM采用双体切换技术来完成数据的存储和读取过程。
3 系统软件设计
3.1 ARM软件设计
根据该系统的设计需求,将软件划分如下几个模块分别形成独立的程序文件:启动代码模块、串口模块、时钟模块、温度和亮度传感器模块、FLASH管理模块、下载管理模块和显示模块。启动代码用于初始化系统配置、初始化各个处理器模式下的栈空间,初始化目标板,引导C程序运行,用汇编语言编写;串口模块实现串口的发送、接收等基本功能;时钟模块实现RTC时间的设置与读取等基本功能;温度和亮度传感器模块实现温度和亮度控制;Flash管理模块实现外部FLASH擦除、存储、分配的管理,将显示指令和显示信息进行存储;下载管理模块负责与上位机通讯,下载显示指令和信息;显示模块负责显示指令的解析以及显示信息的提取,显示效果的处理,包括出场模式和表演模式以及各种字体字形的产生,同时负责送灰度数据给FPGA,本设计以启动代码为例阐述源代码的编写。
通常将启动代码划分为5个文件:startup.s、IRQ.s、stack.s、heap.s和target.c。startup.s包含中断向量表和系统初始化代码;IRQ.s包含中断服务程序与C程序的接口代码;stack.s和heap.s保存C语言使用的堆和栈的开始位置;target.c包含目标板特殊的代码,包括异常处理程序和目标板初始化程序。下面给出几个关键的初始化程序段供参考。
1.中断向量表
2.系统初始化代码
ResetInit
BL Initstack;初始化芯片各种模式的堆栈
BL TargetResetInit:目标板基本初始化
B Main;跳转到ADS提供的_ain函数处,它初始化函数库并最终引导CPU进入main()函数[!--empirenews.page--]
3.初始化CPU堆栈Initstack(源代码略)
3.2 FPGA内部的功能模块
图4为FPGA内部的功能模块图。FPGA将ARM传送过来的信号包括灰度数据(DATA)、系统时钟(CLK)、帧同步信号(VSYNC)、行同步信号(HSYNC)、片选信号(CS2)和写信号(WRITE)送入存储器切换电路,存储器切换电路将图像数据(DAIA)分时送到静态存储器SRAM1和静态存储器SKAM2进行存储。SRAM1和SRAM2工作在交替读写状态,即向一片SRAM写人数据的同时,从另一片SRAM中读出数据;静态存储器的读写状态由系统时钟、帧同步、行同步以及片选信号来控制。读地址发生器用于计算所需数据信息在存储器中存储的地址,以便保证LED大屏幕的正确显示,它是由移位时钟来控制产生15位读地址信号,移位时钟信号的工作频率为4 MHz。读地址发生器产生的读地址信号在移位时钟的作用下,产生4个分区锁存信号,4个分区的显示数据同时送人屏体,只有当锁存信号有效时,才点亮显示屏。从SRAM读出的灰度数据DAIA送入灰度值发生器,并根据屏体显示结构进行数据重组,转化成LED显示屏要求的上屏数据信号(红、绿、蓝灰度数据)。三色的上屏数据送入串行发送数据寄存器,并在移位时钟的作用下串行发送至屏体。在将一片SRAM中的数据转换后上屏的同时,通知微处理器发送下一屏数据。此外,ARM还发送两位亮度控制信号COMM0、COMM1和亮度数据信号COMM2。串行发送的亮度数据信号进入8位串并转换电路,在COMM0、COMM1的控制下,产生亮度信号。
4 仿真及系统验证
使用ModelSim仿真用VHDL编写的扫描驱动电路波形如图5。从图5可知,从ARM接收到的数据data(01010101)存入到外部扩展的存储器SRAM2,m2ma是存储器2的地址线,它根据控制信号(tp1,tp2,cs2,swite)的控制作用连续增加;cm2d是存储器2的数据线,将data数据存入,则cm2d为01010101,同时从存储器1中读出数据,转换后送给red0、ged0、bed0,从而验证驱动电路的正确性。
经硬件设计和软件编码与调试后,将ARM软件源代码通过ISP下载到ARM中的FLASH后复位运行,系统验证了该设计的可靠性和正确性。
5 结论
本设计采用32位ARM嵌入式微处理器S3C4510B和32位FPGA扫描驱动电路芯片PolarProQLlP300,选用IS61C1024静态RAM作为缓存器,组成由多块大屏幕LED显示器构成的显示系统,选用ARM+RAM+FPGA设计方案,从而解决了系统的运行速度、寻址能力和功耗等问题,从而支持更大可视区域的稳定显示,存储更多的显示内容。