基于FPGA的LED点阵显示屏的设计学士论文.docx
《基于FPGA的LED点阵显示屏的设计学士论文.docx》由会员分享,可在线阅读,更多相关《基于FPGA的LED点阵显示屏的设计学士论文.docx(108页珍藏版)》请在冰豆网上搜索。
基于FPGA的LED点阵显示屏的设计学士论文
绪论
1.1研究意义
作为大型平板显示设备的一种,LED显示屏以其使用寿命长、维护费用低、功耗低等特点在显示领域占有重要的位置。
特别在近年,带有红、绿、蓝三基色以及灰度显示效果的全彩LED显示屏,以其丰富多彩的显示效果而倍受业界关注,成为LED显示屏市场近年增长幅度比较大的产品。
寿命、单位面积亮度、三基色的偏差程度、点距、对比度、灰度等级(包括灰度级数和线性度)、扫描频率等指标性能是衡量或横向比较大型显示设备好坏的标准。
而这些指标性能的优劣,很大程度上决定于扫描控制器的性能。
因此对大屏幕全彩LED显示扫描控制方法的研究有着重要的意义。
随着显示屏尺寸的扩大、亮度要求的增加,数据传输和控制的时间也会增加,如果仍然采用单片机作为控制器,将会影响显示效果,严重时可能无法正常工作,然而,这时若采用可编程逻辑器件作为控制器,则可解决这一难题。
一方面,随着微电子技术的发展和生产工艺的提高,器件的性能大有很大的提高,出现了高性能的现场可编程逻辑器件(FPGA),FPGA具有处理速度高、可靠性高、高容量和集成度高等特点,在大屏幕显示系统设计中使用FPGA可以满足现在的LED大屏幕系统对于处理视频数据的高速要求,同时改善电路的性能,缩小系统的体积。
设计中使用硬件描述语言进行电路设计,可以随时根据设计需要进行修改,而不必对硬件进行修改,它使系统的设计和调试非常方便,大大的缩短了产品的开发周期,降低了开发成本,也方便以后的系统升级。
1.2研究现状
LED照明发展非常迅速,年增长率超过60%,随着LED发光效率的不断提升,封装技术不断改进,驱动陆能和寿命的增加,LED照明技术在未来5年内会逐渐进入千家万户。
在世界各国环保议题日渐重视的趋势下,LED照明产业将扮演极重要的角色,其主要应用在于室内、室外照明以及街灯等高功率产品。
据悉,2009年全球照明市场约1219亿美元,LED仅占0.5%,显见其未来潜力之可观。
其中,以亚太地区的市场规模为最大、约占全球33.7%之比例,居次为北美的30.1%和欧洲之27.4%。
以应用产品来讨论,户外照明约占12%,则具有相当大的成长空间,尤其以占有全球38%户外照明的中国市场为最。
此外,值得关注的部分是受政府政策及推广影响较为直接且快速的街灯应用可望成为照明产业中快速成长的第一棒。
预估在欧美优先领起的趋势中,2010年全球可达到450万盏LED街灯的水平,并且承于国际加紧节能减碳的脚步,一但路灯标准规格普及,中国市场可望占有世界50%以上的规模。
LED驱动器技术的发展体现在两个方面:
第一,离线式高功率因数校正可调光LED驱动器可替代卤素灯、白炽灯和荧光灯;第二,LED驱动器能高效替代低压卤素灯。
以上两种应用需要为LED提供电能及热能保护,以增加其耐用性。
其他发展趋势还包括优化驱动器以提供最佳功效,并非将电流最大化。
基于FPGA芯片控制全彩LED大屏幕图像显示系统系统设计随着数字技术的飞速发展,各种数字显示屏也随即涌现出来有LED、LCD、DLP等,各种数字大屏幕的控制系统多种多样,有用ARM+FPGA脱机控制系统,也有用PC+DVI接口解码芯片+FPGA芯片联机控制系统。
尽管大尺寸液晶显示在未来的几年还有相当大的市场份额,但针对大尺寸直下式背光源的驱动和控制芯片的开发才刚刚有几年的历史。
针对LED背光源的特点,可以将复杂的控制技术和信号处理技术融合到背光源技术中,目前的做法是采用FPGA,各家均有不同的算法和控制方法。
随着背光技术和数字电视技术的发展,背光的控制算法及驱动方法的规范化,为了降低成本,将背光控制单元、屏显控制和电视的机芯微处理器由一个微处理器统一实现将是一种技术趋势[13][14]。
目前,美国和中国台湾地区逻辑电路设计和制造厂家大都以VerilogHDL为主,中国大陆地区目前学习使用VerilogHDL已经超过VHDL。
从使用的角度看,对于集成电路(ASIC)设计人员来说,多是掌握verilog,因为在IC设计领域,90%以上的公司都是采用verilog进行IC设计。
而对于PLD/FPGA设计者而言,两种语言没有太大差别。
1.3研究内容
本课题为基于Altera公司FPGA芯片的电子显示屏的研究,配备相应的PC机软件,可实现合拢、开帘、上下左右移动等显示形式,并可显示时钟。
具体内容:
1.FPGA系统设计;2.显示接口电路的设计;3.时钟接口电路的设计;4.FPGA系统与PC机通讯接口(RS232)的设计。
第二章系统组成及工作原理
2.1系统组成
本设计要求使用Altera公司的FPGA芯片完成32*16点阵式LED点阵显示屏的显示,配备相应的PC机软件,实现上位机与下位机的通信,下位机实现合拢、开帘、上下左右移动等显示形式,并可显示时钟。
基于FPGA的LED点阵显示屏的系统
框图如图2-1所示:
时钟模块
串口通信
点阵显示模块
FPGA
控制系统
上位机
图2.1系统总体框图
图2-1系统总体框图
FPGA控制模块控制时钟模块、点阵显示模块、上位机通信模块的协同工作,并分析、处理接收的数据。
时钟模块完成对时钟芯片的读写,包括时钟初始化和时钟信息读取,最终用数码管显示时钟。
点阵显示模块实现LED点阵的驱动和显示功能。
驱动部分使用移位寄存器74HC595和移位寄存器74HC164组成,74HC595负责列扫描数据,74HC164负责行扫描数据。
行扫描采用三极管放大电流,加大扫描强度,提高点阵屏亮度。
LED点阵是由8个大小为32mm*32mm的8*8共阳点阵组成32*16点阵,可以显示两个汉字,点阵屏可拆装,采用圆孔铜排针,连接性能非常好。
串口通信部分通过RS232串口实现。
用户可以通过上位机软件发送待显示的数据给FPGA控制系统。
2.2工作原理
本设计的工作原理为:
采用FPGA为核心控制模块,通过接收上位机数据控制LED点阵显示信息。
同时通过键盘来控制显示方式,并且在数码管上显示实时时钟。
软件部分根据各芯片的时序图进行模块编程,消除了竞争和冒险。
第三章基于FPGA的LED点阵硬件设计
3.1方案论证与比较
3.1.1FPGA芯片选择
当今主要设计和生产厂家有Xilinx、Altera、Lattice、Atmel等公司。
其中Xilinx、Altera规模最大,市场占有率也最高。
其中Altera更适合教学使用,对于初学者来说入门门槛比较低。
同时,Altera公司给学习者提供很好的服务和支持。
工艺方面,Xilinx和Altera生产的FPGA都是基于SRAM的工艺的,需要在使用时外接一个片外存储以保存程序。
上电时,FPGA将外部存储器中的数据读入片内RAM,完成配置后,进入工作状态;掉电后恢复为白片,内部逻辑消失。
这样不仅能反复使用,还无需专门的FPGA编程器,只需通用的EPROM、PROM编程器即可。
本设计采用较为普遍的Altera公司的EP2C8Q208C芯片。
这块芯片不仅内部资源丰富,而且支持NIOS,无论在性价比还是将来进行功能拓展上都占据优势。
3.1.2串行通信模块
输入接口模块提供PC上位机到FPGA核心板传输数据的接口。
输入接口是通过串口即RS232以及JTAG下载线来实现从PC上位机传输数据至下位机。
上位机使用字模提取工具将待显示的数据发送至下位机,JTAG下载线实现PC和NiosⅡ系统间的通信。
FPGA核心板与LED显示模块之间的通信也是通过RS232串口实现的。
3.1.3LED点阵屏及驱动电路
本设计采用32×16LED点阵屏由8块8×8LED点阵拼接而成,每一块点阵都有8行8列,因此总共有16根行控制线和32根列控制线。
方案一:
在LED点阵驱动电路中,采用1片4线/16线译码器74HC154作为行驱动,选用2片74HC154占用15个FPGA的I/O口(包括两个enable端)。
方案二:
使用两个移位寄存器74HC595(带存储器)和两个移位寄存器74HC164驱动16*16的点阵,74HC595负责列扫描数据,74HC164负责行扫描数据。
行扫描采用三极管放大电流,加大扫描强度,提高点阵屏亮度。
最终只需要制作两块同样的板子拼凑成32*16LED点阵。
方案比较及确定:
首先,考虑占用I/O口数量,方案一使用了15个I/O口,而方案二只使用了5个。
其次,考虑制作成本,一片74HC154大约四元,而74HC595和74HC164只需0.7元。
再次,考虑软件编程,采用译码方式(方案一)驱动可以简化代码,而采用移位方式(方案二)驱动可拓展性更强。
最后,考虑功耗,两种方案使用的是coms芯片功耗已经非常小。
综合以上分析,本设计采用方案二,不仅大大的减少了I/O资源的占用,而且缩减了制作成本。
3.1.4时钟芯片
DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM。
同时,可以提供秒分时、日期、年月信息,每月的天数和闰年的天数可自动调整。
时钟操作可通过AM/PM指示决定采用24或12小时格式。
3.2FPGA控制模块
该部分电路是系统控制和数据处理的核心,主要由电源接口及开关及相应的时钟振荡电路和复位电路组成。
3.2.1电源接口及开关电路
图3-1电源接口及开关电路
如图3-1所示,其中F1为限流1.1A的F110保险管,在电源的保护上起到了很大的作用。
3.2.2复位电路
如图3-2所示,该复位电路可以实现对系统的初始化作用。
当没有按下时,KEY读取到高电平。
按下键时,KEY拉低。
一次复位后产生一脉冲信号,下降沿时触发芯片复位。
3.2.3时钟振荡电路
如图3-3所示,X1为20MHz的有源晶振。
3.3串行通信电路
串行通信电路由RS232串口电路和JTAG接口电路组成。
RS232串口用于上位机与下位机的数据传输,JTAG接口用于程序下载与调试。
3.3.1RS232串口电路
FPGA的电平为TTL电平(即:
高电平—+3.3V,低电平—0V),而计算机串口电平为RS232电平(即:
高电平—-12V,低电平—+12V),所以,计算机与单片机之间进行通讯时需要加电平转换芯片。
RS232串口电路如图3-4所示:
图3-4中,RS232串口电路使用MAX232CPE作为电平转换芯片,通过串口线连接到计算机的COM口(9针D形口),用于FPGA与上位机通信以及和其他串口设备的数据交互。
3.3.2JTAG下载接口
JTAG下载接口电路如图3-5所示,用于调试FPGA。
JTAG下载不仅下载速度快,而且支持SignalTAP,但是,不能编程EPCS芯片,掉电后数据丢失。
使用JTAG时需要配合USBBlaster进行下载调试。
图3-5JTAG下载接口电路
图3-5JTAG下载接口电路
3.4LED点阵及驱动电路
3.4.1LED点阵
点阵屏分为共阳和共阴两种,本设计使用共阳型,如下图3-6所示。
8*8点阵屏显示原理是利用行列导通其中的LED来控制64个LED的亮灭。
使用4块8*8LED点阵屏就可以组成16*16的点阵屏,可以显示一个汉字。
图3-68*8点阵原理
3.4.2LED点阵驱动电路
驱动部分使用两个带存储器的移位寄存器74HC595和两个移位寄存器74HC164组成,74HC595负责列扫描数据,74HC164负责行扫描数据。
列扫描采用三极管放大电流,加大扫描强度,提高点阵屏亮度。
主要IC
(1)74HC595:
硅结构的CMOS集成电路,兼容低电压TTL电路。
74HC595是具有8位移位寄存器和一个存储器,三态输出功能。
如图3-7所示,移位寄存器和存储器是不同的时钟输入。
数据在SRCLK的上升沿移位,在RCLK的上升沿进入存储寄存器;异步复位端/SRCLK,低电平有效,电路中不使用复位端所以将此脚接VCC。
如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲,电路中,将两个时钟分开图3-7引脚图控制,目的是先移好位,再存储数据,这样在移位的过程中,可以保持输出的数据。
移位寄存器有一个串行移位输入(SER),和一个串行输出(QH’),电路将其接入下一个IC的输入(SER)组成16位移位存储。
移位寄存器有一个具备三态的总线并行8位输出,当给/G端送低电平时,存储寄存器的数据输出到总线,电路中直接将此脚接GND,表示直接输出。
(2)74HC164:
74HC164是简单的8位移位寄存器。
如图3-8所示:
输入A、B在SCK时钟脉冲作用下移入寄存器。
A、B是两个输入端,电路将其合并成一个输入,移位寄存器的最后一位输出QH接入下一个74HC164的输入AB,组成16位移位寄存器,每一位的输出经过三极管放大电流加到点阵共阳端,即作为点阵的行控制。
图3-874HC164引脚图
(3)三极管8550
8550三极管是PNP型三极管,如图3-9所示,当74HC164发出低电平时,三极管Q导通,LED_H输出高电平。
此时I/O口只需要提供几毫安的灌电流即可控制其通断。
图3-9放大电路
3.5时钟模块
时钟模块包括时钟芯片和时钟显示模块。
3.5.1时钟芯片电路
DS1302实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。
DS1302的外部引脚分配如图3-10所示及内部结构如图3-11所示。
DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。
图3-10 DS1302的外部引脚分配
图3-11 DS1302的内部结构
1.各引脚的功能为:
Vcc1:
主电源;Vcc2:
备份电源。
当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2 SCLK:
串行时钟,输入;
I/O:
三线接口时的双向数据线;
CE:
输入信号,在读、写数据期间,必须为高。
该引脚有两个功能:
第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。
DS1302有下列几组寄存器:
(1)DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h~8Dh,写时80h~8Ch),存放的数据格式为BCD码形式,如图3-12所示。
图3-12 DS1302有关日历、时间的寄存器
小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。
当为高时,选择12小时模式。
在12小时模式时,位5是,当为1时,表示PM。
在24小时模式时,位5是第二个10小时位。
秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。
当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。
控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。
在任何的对时钟和RAM的写操作之前,WP位必须为0。
当WP位为1时,写保护位防止对任一寄存器的写操作。
(2)DS1302有关RAM的地址
DS1302中附加31字节静态RAM的地址如图3-13所示。
图3-13静态RAM
2.读写时序说明
DS1302是SPI总线驱动方式。
它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。
要想与DS1302通信,首先要先了解DS1302的控制字。
DS1302的控制字如图3-14。
图3-14控制字(即地址及命令字节)
控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。
位6:
如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;
位5至位1(A4~A0):
指示操作单元的地址;
位0(最低有效位):
如为0,表示要进行写操作,为1表示进行读操作。
控制字总是从最低位开始输出。
在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。
同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。
数据读写时序如图3-15所示。
图3-15 数据读写时序
图3-15 数据读写时序
3 .RTC时钟电路
图3-16时钟电路
3.5.2时钟显示电路
本设计主要采用六位独立的数码管分别显示时钟。
电路如图3-16所示。
数码管可分为共阳和共阴。
本设计采用共阳数码管。
每一个数码管通过一个9012三极管放大电流。
9012为PNP型三极管,当SEL端出现低电平时,数码管被选通。
反之,当SEL拉高时,数码管不显示。
第四章基于FPGA的LED点阵显示的软件设计
4.1VerilogHDL编程语言及编译器概述
4.1.1VerilogHDL语言综述
FPGA的编程语言常用的有二种,一种是VHDL,一种是VerilogHDL。
VerilogHDL是一种非常容易掌握的硬件描述语言,而VHDL语言是一个规模庞大的语言,在使用它之前完全学会它是很难的。
Verilog是专门为复杂数字系统的设计仿真而开发的,本身就非常适合复杂数字逻辑电路和系统的仿真和综合。
由于Verilog在其门级描述的底层,也就是在晶体管开关的描述方面比VHDL有更强的功能,所以,即使是VHDL的设计环境,在底层实质上也是由VerilogHDL描述的器件库所支持的[1]。
Verilog适合系统级(system)、算法级(alogrithem)、寄存器传输级(RTL)、逻辑级(logic)、门级(gata)、电路开关级(switch)设计,而SystemVerilog是Verilog语言的扩展和延伸,更适用于可重用的可综合IP和可重用的验证用IP设计,以及特大型(千万门级以上)基于IP的系统级设计和验证。
VerilogHDL作为一种高级的硬件描述编程语言,与C语言的风格有许多类似之处。
其中有许多语句,如if语句、case语句和C语言中的对应语句十分相似。
4.1.2QuartusII软件综述
Altera公司的QuartusII设计软件提供了完整的多平台设计环境,能够直接满足特定设计需要,为可编程芯片系统(SOPC)提供全面的设计环境。
QuartusII软件含有FPGA和CPLD设计所有阶段的解决方案,如图4-1所示。
QuartusII设计工具支持基于VHDL、VerilogHDL和图形的设计,其内部嵌有VHDL、VerilogHDL逻辑综合器。
QuartusII可以利用第三方的综合工具进行逻辑综合,也可以利用第三方的仿真工具(如Modelsim)进行仿真。
此外QuartusII与MATLAB和DSPBuilder结合,可以进行基于FPGA的DSP系统开发。
使用QuartusII内嵌的SOPCBuilder,配合NiosIIIDE集成开发环境,可以开发NiosII嵌入式软核处理器[2]。
4.3.2行数据控制模块
行数据控制模块主要实现控制显示的上下移位功能。
以下程序为此模块的例化程序:
modulerow_control(
inputclk,
inputrst,
inputkey_up,
inputkey_down,
inputkey_stop,
output[15:
0]row_data
);
其中,key_up表示上键标志信号,key_down表示下键标志信号,key_stop为停止移位标志信号,row_data为行数据输出。
静态显示时,只要进行逐行扫描,第i位出现‘0’时,则选通第i行。
所以当按下停止键时,则直接输出16'b1111_1111_1111_1110。
当有其他键按下时则触发移位。
移位时,首先启动计数器,当每计满9,999,999(即0.5s)时,行数据移位一次。
如图4-4所示,仿真key_up键按下时,row_data每0.5s循环右移一次。
图4-4行数据控制仿真波形
4.3.3列数据控制模块
列数据控制模块主要实现左右移动、开帘、合拢四种显示方式的控制。
以下为模块的例化程序:
modulecolumn_control(
inputclk,
inputrst,
inputkey_left,
inputkey_right,
inputkey_stop,
input[31:
0]rdata,
output[31:
0]data
);
其中,key_left表示左键标志信号,key_right表示右键标志信号,key_stop为停止移位标志信号,在没有读取到按键时显示方式为循环开帘和合拢。
rdata为原列数据,data为移动后的列数据。
移位速度为1/20s,如图4-5所示,当key_left键按下时,rdata=32'h05_05_A0_A0,每0.05s循环移位一次。
图4-5列数据左移仿真波形
4.4按键模块
一位按键模块debounce如图4-6所示,模块包括电平检查模块和延迟模块。
图4-6一位按键模块
设计思路:
(1)一旦检测到有按键按下(高电平到低电平变化),电平检查模块就会拉高
H2L_Sig电平,然后拉低。
(2)10ms延迟模块检测到H2L_Sig为高电平时,就会利用10ms过滤H2L_Sig,拉高
输出。
(3)当按键被释放时,电平检测模块会拉高L2H_Sig,然后拉低。
(4)10ms延迟模块检查到L2H_Sig为高电平时,就会利用10ms过滤H2L_Sig,然后拉低输出。
组合按键则是组合五个独立按键模块,如图4-7所示。
图4-7组合按键模块
以下为五位组合按键模块的实例化程序:
modulekey_interface
(
inputCLK,
inputRSTn,
input[4:
0]Key_In,
output[4:
0]Key_Out
);
其中,五位Key_In输入连接至I/O端口,五位Key_Out主要传输给行列控制模块。
4.5串口通信模块
4.5.1串口接收模块
图4-8串口接收模块
如图4-8所示,串口接收模块由电平检测模块、波特率定时模块和接收控制模块组成。
其中,detect_module模块的输入是连接至引脚rx,它主要检测一帧数据的第0位,也就是起始位,然后产生一个高脉冲经H2L_Sig给rx_control_module模块,以表示一帧数据接收工作已经开始。
rx_bps_module模块是产生波特率定时的功能模块。
它是