首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 基于FPGA的LED大屏幕控制系统设计
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于FPGA的LED大屏幕控制系统设计
发短消息
加为好友
porereading
当前离线
UID
863084
帖子
7183
精华
0
积分
3592
阅读权限
90
在线时间
209 小时
注册时间
2011-11-30
最后登录
2019-8-28
论坛元老
UID
863084
1
#
打印
字体大小:
t
T
porereading
发表于 2013-2-18 19:19
|
只看该作者
基于FPGA的LED大屏幕控制系统设计
大屏幕
,
LED显示屏
,
可扩展性
,
稳定性
引言
目前,市场上的中小规模 LED 显示系统,一般采用传统的单片机作为主控芯片[1]。对LED大屏幕显示屏来说,由于数据传输量大,要求扫描速度快,而单片机内部的资源较少、运行速度较慢,难于满足系统要求[2]。以FPGA[3]作为控制器,一方面,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的扫描方式[4]。图2为16×32点阵屏单元模块的基本结构,列驱动电路采用4个74HC595级联而成 [5]。在移位脉冲SRCLK的作用下,串行数据从74HC595的数据端描。只要扫描的周期小于20 ms,显示屏就不闪烁。口SER一位一位地输入,当一行的所有32列数据传送完后,输出锁存信号RCLK并选通行信号Y0,则第1行的各列数据就可按要求显示。按同样的方法显示其余各行,当16行数据扫描一遍(即完成一个周期)后,再从第1行开始下一个周期的扫描。
图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[3..0])、列地址(lie[6..0])、分区地址(qu[3..0])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[7..0]为每个分区的8位并行数据输入,SCLK为移位时钟,CLR为清零信号,LOAD为数据锁存信号,CS[15..0]为16分区的输入信号(接译码器的输出),DATA_OUT[15..0]为16路的串行数据输出。
图6 并串转换元件符号图
3.6 脉冲发生器
系统采用1/16的扫描方式,把数据分为16分区,16分区数据同时传送。假设刷新的频率为60 Hz(即周期为16.67 ms),每一行显示的时间约为16.67 ms/16=1.04 ms。每行有1024位,则移位脉冲周期为1.04/1024=102 μs,即移位频率为0.983 MHz以上才能满足要求。由于移位脉冲是数据读取模块时钟的2分频,因此系统的时钟至少1.97 MHz以上,本系统采用50 MHz时钟源。其时序图如图7所示。
图7 时钟产生时序图
其中,RDCLK为FPGA读取数据时钟;SCLK是串行输出的移位时钟,是RDCLK的2分频;LOAD是数据锁存信号,每次读完16个分区中的某个字节数据DATA后产生锁存信号,数据锁存在数据锁存器组中,其时钟是RDCLK的16分频。
4 FPGA控制模块的仿真测试
在QuartusII 5.1中建立一个工程,并建立原理图文件,把单片机与FPGA接口及数据读写模块、读地址发生器、译码器、行地址发生器、数据锁存器、移位寄存器、脉冲发生器等单元模块所生的模块元件符号连接起来,构成总控制模块逻辑图并对其功能仿真。仿真结果如图8所示,从存储器中读取16字节数据,经并串转换输出16路的串行数据。从波形图分析,功能正确,且各输出端口信号均符合时序要求。
[url=http://upload.semidata.info/article/image/2013/01/24/5100f26c77636.gif]
[/url]
图 8FPGA控制模块仿真图
结语
FPGA是在线可编程芯片,可以根据不同的用户要求进行不同的编程, 缩短了系统的开发周期并节约了硬件的开发成本。本文以FPGA为主芯片,较完整地设计了大屏幕LED单色图文显示屏控制系统。随着LED显示屏技术的发展,FPGA与ARM或DSP等芯片的组合,必将在双色显示屏和彩色显示屏领域获得广泛的应用。
收藏
分享
评分
回复
引用
订阅
TOP
发短消息
加为好友
TLP291
当前离线
UID
894560
帖子
1981
精华
0
积分
991
阅读权限
0
在线时间
75 小时
注册时间
2012-8-1
最后登录
2013-4-2
禁止发言
UID
894560
性别
女
2
#
TLP291
发表于 2013-3-2 10:44
|
只看该作者
深圳潮光光耦網——光耦(隔離器)應用服務商
原裝、正品、現貨
潮光光耦网-全球光耦资源整合者
回复
引用
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议