基于MCU+FPGA的LED大屏幕控制系统的设计

发布者:温雅如风最新更新时间:2021-05-17 来源: eefocus关键字:MCU  FPGA  LED 手机看文章 扫描二维码
随时随地手机看文章

引言


只要在现在的市场上走一圈就会发现,大部分的中小规模 LED显示系统,采用的是传统的单片机作为主控芯片。但是内部资源较少、运行速度较慢的单片机,很难满足LED大屏幕的显示屏,因为系统要求数据传输量大,扫描速度要快。以FPGA作为控制器,一方面,FPGA采用软件编程实现硬件功能,可以有效提高运行速度;另一方面,它的引脚资源丰富,可扩展性强。因此,用单片FPGA和简单的外围电路就可以实现大屏幕LED显示屏的控制,具有集成度高、稳定性好、设计灵活和效率高等优点。


1 系统总体结构


LED大屏幕显示系统由上位机(PC机)、单片机系统、FPGA控制器、LED显示屏的行列驱动电路等模块组成,如图1所示。上位机负责汉字、字符等数据的采集与发送。单片机系统与上位机之间以异步串行通信工作方式,通过串行端口从上位机获得已完成格式转换的待显示的图形点阵数据,并将其存入EEPROM存储器。之后通过FPGA控制器,将存储器的显示数据还原到LED显示屏。扫描控制电路采用可编程逻辑芯片Cyclone EP1C6,利用VHDL语言编程实现,采用1/16扫描方式,刷新频率在60 Hz以上。本文着重介绍256×1024的单色图文显示屏的FPGA控制模块。


图1 系统总体结构框图


2 LED显示屏基本工作原理


对大屏幕LED显示屏来说,列显示数据通常采用的是串行传输方式,行采用1/16的扫描方式。图2为16×32点阵屏单元模块的基本结构,列驱动电路采用4个74HC595级联而成。在移位脉冲SRCLK的作用下,串行数据从74HC595的数据端口SER一位一位地输入,当一行的所有32列数据传送完后,输出锁存信号RCLK并选通行信号Y0,则第1行的各列数据就可按要求显示。按同样的方法显示其余各行,当16行数据扫描一遍(即完成一个周期)后,再从第1行开始下一个周期的扫描。只要扫描的周期小于20 ms,显示屏就不闪烁。


图2 16×32点阵屏基本结构


256×1024大屏幕显示屏由16×32个的16×32点阵屏级联而成。为了缩短控制系统到屏体的信号传输时间,将显示数据分为16个区,每个区由16×1024点阵组成,每行数据为1024/8=128字节,显示屏的像素信号由LED显示屏的右侧向左侧传输移位,把16个分区的数据存在同一块存储器。一屏的显示数据为32 KB,要准确读出16个分区的数据,其存储器的读地址由16位组成,由于数据只有32 KB,因此最高可置为0。其余15位地址从高到低依次为:行地址(4位)、列地址(7位)、分区地址(4位)。4位分区地址的译码信号(Y0~Y15)作为锁存器的锁存脉冲,在16个读地址发生周期内,依次将第1~16分区的第1字节数据锁存到相应的锁存器,然后在移位锁存信号上升沿将该16字节数据同时锁存入16个8位并转串移位寄存器组中。在下一个16个读地址发生时钟周期,一方面,并转串移位寄存器将8位数据移位串行输出,移位时钟为读地址发生时钟的二分频;另一方面,依次将16个分区的第2字节数据读出并锁入相应的锁存器,按照这种规律将所有分区的第一行数据依次全部读出后,在数据有效脉冲信号的上升沿将所有串行移位数据输出,驱动LED显示。接下来,移位输出第2行的数据,在此期间第1行保持显示;第2行全部移入后,驱动第2行显示,同时移入第3行……按照这种各分区分行扫描的方式完成整个LED大屏幕的扫描显示。


3 基于FPGA显示屏控制器的设计


3.1 FPGA控制模块总体方案


如图3所示,FPGA控制模块主要由单片机与FPGA接口及数据读写模块、读地址发生器、译码器、行地址发生器、数据锁存器组、移位寄存器组、脉冲发生器等模块组成。


图3 FPGA控制模块总体结构框图


读地址发生器主要产生读地址信号,地址信号送往MCU接口及数据读写模块,读取外部SRAM1或SRAM2中已处理好的LED显示屏数据,并把数据按分区方式送到数据锁存器组锁存。锁存器输出16分区数据,通过移位寄存器组实现并串转换得到显示屏所需要的串行数据,并送往LED显示屏列驱动电路。脉冲发生器为各模块提供相应的同步时钟,行地址发生器产生相应的行信号送往显示屏的行驱动电路。


3.2 单片机与FPGA接口及数据读写模块


单片机与FPGA接口及数据读写模块结构如图4所示。单片机从EEPROM中读取数据并根据显示要求进行处理后,通过接口及数据读写模块把数据送往数据缓冲器SRAM1或SRAM2。为提高数据的传输速度,保证显示效果的连续性,在系统中采用双体切换技术来完成数据存储过程。也就是说,采用双SRAM存储结构,两套完全独立的读、写地址线和数据线轮流切换进行读写。工作时,FPGA在一个特定的时间只从两块SRAM中的一块读取显示的数据进行显示,同时另外一块SRAM与MCU进行数据交换。MCU会写入新的数据,依次交替工作,可实现左移、上移、双屏等显示模式。如果显示的内容不改变,即一块SRAM里的数据不变时,MCU不需要给另外一块SRAM写数据。


图4 单片机与FPGA接口及数据读写模块结构框图


图5 数据读写状态转换图


该模块采用VHDL有限状态机来实现,整个控制分为4个状态,其状态转换图如图5所示。其工作过程如下:系统开机进入初始状态ST0,单片机的写入使能端E为低电平,单片机从EEPROM中读取数据并把数据写入到SRAM1,同时FPGA读取SRAM2中的数据;当单片机数据写完一屏数据后E变为高电平,当FPGA从SRAM2中读完数据、结束信号READ_END为低电平时,进入ST1状态。


在ST1状态下,若没有新的数据写入则E保持高电平,FPGA读取SRAM1的数据,为静态显示;只有当单片机的读入控制信号E为低电平且READ_END为低电平时,进入ST2状态。在ST2状态下,单片机把数据写入SRAM2,同时FPGA读取SRAM1的数据,单片机数据写完后E变为高电平,当FPGA一屏数据读完后READ_END为低电平,进入ST3状态。在ST3状态下,如果没有新数据写入E为高电平,FPGA读取SRAM2中的数据。当单片机有新的数据写入时E变为低电平,当FPGA一屏数据读完后READ_END为低电平时,重新进入ST0状态。通过这种周而复始的交替工作完成数据的写入与读取,其端口程序如下:


ENTITY WRITEREAD_SEL IS


PORT(


REST:IN STD_LOGIC;


CLK:IN STD_LOGIC;


E:IN STD_LOGIC; 单片机写入标记


WR:IN STD_LOGIC;单片机写控制信号


ADDR_WR:IN STD_LOGIC_VECTOR(15 DOWNTO 0);单片机写地址信号


ADDR_RD:IN STD_LOGIC_VECTOR(15 DOWNTO 0);读地址信号


DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);单片机写入数据


READ_END:IN STD_LOGIC;读一屏数据结束标记


D1,D2:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);SRAM数据


AD1,AD2:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);SRAM地址


WR1,WR2:OUT STD_LOGIC;SRAM的写控制信号


OE1,OE2:OUT STD_LOGIC; SRAM的读控制信号


DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));输出数据


END ENTITY WRITEREAD_SEL;


3.3 读地址发生器


读地址发生器主要产生外部缓存器SRAM1(SRAM2)的读地址信号,使系统能正确地从存储器中读取相应的显示数据。其地址最高位为0,其余地址分别为行地址(hang[30])、列地址(lie[60])、分区地址(qu[30])15位有效地址信号。在16个脉冲周期内读出在SRAM1(SRAM2)中的16字节数据,其部分VHDL源程序如下:


ENTITY addressIS


PORT(


RDCLK:IN STD_LOGIC;读地址时钟信号


CLR,ADDR_EN:IN STD_LOGIC;清零及使能控制信号


READ_END:OUT STD_LOGIC;一屏数据读完信号


ADDR_RD:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));产生的读地址信号


END ENTITY address;


3.4 译码器


译码器模块主要是产生16路的分区信号(低电平有效)分别控制16个锁存器,把16个分区的显示数据分别锁存在相应的锁存器中。


3.5 数据锁存器组及移位寄存器组模块


数据锁存器组模块由16个8位锁存器组成锁存器组,锁存16个分区的数据。移位寄存器组模块由16个8位移位寄存器组成,把各路锁存器中8位并行数据转换成同时输出的16路串行数据,驱动LED显示屏,实现数据的并串转换。


其生成的元件符号如图6所示。其中,DATA_IN[70]为每个分区的8位并行数据输入,SCLK为移位时钟,CLR为清零信号,LOAD为数据锁存信号,CS[150]为16分区的输入信号(接译码器的输出),DATA_OUT[150]为16路的串行数据输出。


图6 并串转换元件符号图


3.6 脉冲发生器


系统采用1/16的扫描方式,把数据分为16分区,16分区数据同时传送。假设刷新的频率为60 Hz(即周期为16.67 ms),每一行显示的时间约为16.67 ms/16=1.04 ms。每行有1024位,则移位脉冲周期为1.04/1024=102 μs,即移位频率为0.983 MHz以上才能满足要求。由于移位脉冲是数据读取模块时钟的2分频,因此系统的时钟至少1.97 MHz以上,本系统采用50 MHz时钟源。其时序图如图7所示。


其中,RDCLK为FPGA读取数据时钟;SCLK是串行输出的移位时钟,是RDCLK的2分频;LOAD是数据锁存信号,每次读完16个分区中的某个字节数据DATA后产生锁存信号,数据锁存在数据锁存器组中,其时钟是RDCLK的16分频。


4 FPGA控制模块的仿真测试


在QuartusII 5.1中建立一个工程,并建立原理图文件,把单片机与FPGA接口及数据读写模块、读地址发生器、译码器、行地址发生器、数据锁存器、移位寄存器、脉冲发生器等单元模块所生的模块元件符号连接起来,构成总控制模块逻辑图并对其功能仿真。仿真结果如图8所示,从存储器中读取16字节数据,经并串转换输出16路的串行数据。从波形图分析,功能正确,且各输出端口信号均符合时序要求。


图8 FPGA控制模块仿真图


5 结语


FPGA是在线可编程芯片,可以根据不同的用户要求进行不同的编程, 缩短了系统的开发周期并节约了硬件的开发成本。本文以FPGA为主芯片,较完整地设计了大屏幕LED单色图文显示屏控制系统。随着LED显示屏技术的发展,FPGA与ARM或DSP等芯片的组合,必将在双色显示屏和彩色显示屏领域获得广泛的应用。


关键字:MCU  FPGA  LED 引用地址:基于MCU+FPGA的LED大屏幕控制系统的设计

上一篇:uC/OS-II在ARM系统上的移植和实现
下一篇:基于ARM的双频RFID读写设计

推荐阅读最新更新时间:2024-11-13 08:57

采用FPGA低成本虚拟测试系统实现
本文选用FPGA实现数据处理、逻辑控制,充分利用PC机,结合Labwindows图形化上层应用软件界面生成的虚拟测试系统具有较强的竞争力。本系统在FPGA单板单片主控器件控制下,实现两路独立、幅值可控的信号发生器,一路虚拟存储示波器,具有外部触发信号和采样时钟的16路高速逻辑分析仪。 硬件设计 2.1硬件系统框图 硬件系统设计是以并行处理能力强、可重配置的低端FPGA单片EP1C6为主控器件。图1所示为硬件系统框图,是由参考电压及选择模块、USB2.0接口模块、电源设计模块、高速存储模块、示波器调理输入A/D转换模块、逻辑分析仪匹配输入比较模块和信号源输出滤波模块组成。 USB
[测试测量]
采用<font color='red'>FPGA</font>低成本虚拟测试系统实现
51单片机的i2c多字节的读写24c02
使用Keil的编译环境下载,确实能够下载,但是入口的地址是如下黄色的那行显示所示,如果单步执行(F11)或全速运行(F5),程序始终在原位置不动(0x1FFF4252),如果强制的将PC指针的值和SP的值修改为0x8000000与0x2000000,然后在点击运行,则能够跑到main()函数,再全速运行,能够看到客户板子上的LED灯的闪烁。 但是如果不强制修改PC和SP指针的值,则程序不执行。 所以问题就变成为什么程序下载进去后的地址是0x1FFF4252?0x1FFF4252又是什么地址呢?查阅相应的手册,发现0x1FFF4252是处在了Systemmemory区域。 用万用表测量了客户板上的Boot0引脚的电平,发现电平
[单片机]
51<font color='red'>单片机</font>的i2c多字节的读写24c02
TI最新推出汽车LED照明控制器,助设计人员轻松掌控功率
德州仪器 (TI)(NASDAQ: TXN) 近日推出首款无内部MOSFET的三通道高侧线性汽车发光二极管(LED)控制器,为设计人员的照明设计工作提供了更大的灵活性。与传统的LED控制器相比,TPS92830-Q1的新型架构能够提供更高的功率和更佳的散热性能,特别适用于对性能及可靠性具有高要求的汽车LED照明应用。 传统的LED驱动器集成了MOSFET,这限制了设计人员定制功能的能力。通常在使用这类驱动器时,设计人员必须进行大规模的设计修改才能达到理想的系统性能。TPS92830-Q1 LED控制器灵活的板载特性使设计人员能够基于自己的系统要求自由选择最合适的MOSFET。通过这种新的方式,设计人员可以更快、更高效地优化照明功率
[嵌入式]
网友的类8051的MCU_EBI接口
1 /********************************************************************************************************* 2 ** All right reserve 2008-2009(C) 3 ** Created & maintained by http://www.edaok.net 4 **=======================================================================================
[单片机]
车用MCU芯片订单持续饱满
目前,全球芯片供应紧张问题已经持续了一年多,MCU作为芯片供应短缺的主角之一,热度依旧不减,供不应求态势并没有得到缓解。尽管全球多家MCU厂商开始扩产,但疫情反复、原材料短缺、电脑、手机等数码产品抢占产能等众多因素,进一步加剧了车用MCU芯片供需紧张。大众、戴姆勒、福特、日产、特斯拉等近20家国际知名汽车企业、100多家汽车工厂相继减产、停产。 MCU的价格仍在不断攀升,随着更多国内玩家的进入MCU市场,我国MCU厂商不仅要摆脱赚快钱思维,还要积极开拓新赛道。 全球龙头纷纷涨价 国际厂商在车用MCU领域的头部集中效应显著。TrendForce集邦咨询分析师曾冠玮向《中国电子报》记者表示,目前全球车用MCU市场主要被意法
[汽车电子]
一款用于视频监控摄像头的简单高效的LED驱动器
视频监视安防监控需求正旺,而且该技术也在个人和商业应用方面变得更加经济。受对更高标准的安保需求的驱动,在全球已经有数以百万计的监控摄像头被安装。 由于许多监控摄像头一直处于打开状态,因此监控摄像头制造商已经转向使用节能发光二极管(LED)照明。与以前使用的白炽灯/荧光灯相比,LED的效率提高了80-90%,且散热较低。同时,LED还具有更长的使用寿命,在视频监控摄像头的应用中占据更小的空间。 随着生产数量的增加,摄像头制造商要求LED驱动板的设计更简单、更紧凑、成本更低。但同时,他们需要的LED驱动器能满足更高的效率、更低的功耗、更高的精度、更好的图像分辨率的要求。面对这些挑战,硬件工程师需要一个可以满足以上所有要求
[电源管理]
一款用于视频监控摄像头的简单高效的<font color='red'>LED</font>驱动器
LED照明几大难题
1 核心难题:散热 我研究了某光源封装厂家提供的大功率集成模组光源的光效问题,20w-200w不同功率的模组所用的芯片都是相同的,但20W的模组的光效高达94lm/w(热光效),50W的模组的光效为82lm/w(热),100W的模组的光效高达70lm/w(热光效)200W的模组的光效高达57lm/w(热),这其实是热量在作祟,我测试过,同样的模组,在良好的散热前提下,20W的模组的光效高达105lm/w(冷光效),也就是说,如果散热设计的非常好的话,那么200W的模组的光效高达105lm/w,那么,做成B级能效(90lm/w)的LED照明灯具的成本应该是在12RMB/w以下,你想卖多少钱一瓦,就看用户的开心程度了。采用什么样的
[电源管理]
51单片机学习之路(四)-定时器
写在前面:以下涉及到的程序及电路图不保证为最优方案,会存在很多不足之处,望谅解。另外,C51的内容是在整理很久之前所学的知识,可能会存在错误,欢迎指正。 正文 学习目标:学会使用51单片机中的定时器0。 学习内容: 用定时器0控制LED灯的亮灭 用定时器在数码管上实现计时 程序一:控制LED灯 功能要求:运行程序后连接在单片机上的LED灯以1s的频率闪烁。 定时器寄存器简单介绍 在本次内容中将使用定时器0,定时器1的使用方式与定时器0大体相同,以下简单介绍一下将要使用到的几个中断寄存器,具体介绍请以官方数据手册为准: TMOD:定时器模式寄存器,大致分为4个模式: 00:定时器0或1选择13位定时/计数器模式,该模式下TL
[单片机]
51<font color='red'>单片机</font>学习之路(四)-定时器
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved