LED1616点阵汉字显示设计VHDL版.docx

上传人:b****6 文档编号:5952227 上传时间:2023-01-02 格式:DOCX 页数:20 大小:704.62KB
下载 相关 举报
LED1616点阵汉字显示设计VHDL版.docx_第1页
第1页 / 共20页
LED1616点阵汉字显示设计VHDL版.docx_第2页
第2页 / 共20页
LED1616点阵汉字显示设计VHDL版.docx_第3页
第3页 / 共20页
LED1616点阵汉字显示设计VHDL版.docx_第4页
第4页 / 共20页
LED1616点阵汉字显示设计VHDL版.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

LED1616点阵汉字显示设计VHDL版.docx

《LED1616点阵汉字显示设计VHDL版.docx》由会员分享,可在线阅读,更多相关《LED1616点阵汉字显示设计VHDL版.docx(20页珍藏版)》请在冰豆网上搜索。

LED1616点阵汉字显示设计VHDL版.docx

LED1616点阵汉字显示设计VHDL版

毕业设计(论文)开题报告

设计(论文)题目

基于FPGA的LED16×16点阵汉字显示设计

一、选题的背景和意义:

LED点阵显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。

它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。

受到体育场馆用LED显示屏需求快速增长的带动,近年来,中国LED显示屏应用逐步增多。

目前,LED已经广泛应用在银行、火车站、广告、体育场馆之中。

而随着奥运会、世博会的临近,LED显示屏将广泛的应用在体育场馆以及道路交通指示中,LED显示屏在体育广场中的应用将出现快速增长。

因此,本设计是很有必要的,之所以基于FPGA设计是因为现场可编程门阵列(FPGA)设计周期小,灵活度高,适合用于小批量系统,提高系统的可靠性和集成度。

并且采用编写灵活的VHDL语言编写主程序。

本设计可以方便的应用到各类广告宣传中。

二、课题研究的主要内容:

1.实现16×16点阵的汉字显示;

2.实现有限汉字显示;

4.实现汉字的滚动显示;

5.完成方案论证。

三、主要研究(设计)方法论述:

通过去图书馆查阅书籍收集资料,同时在搜索引擎上检索资料,分析借鉴已有类似产品、设计方案与成功经验,选择几种可行方案比对,最后确定最切实可行的方案展开设计。

通过Multisim或Quartus软件对系统进行模拟仿真,对电路功能进行改进与完善。

在EDA试验箱上进行调试。

 

四、设计(论文)进度安排:

时间(迄止日期)

工作内容

2010.5.17-5.23

(第1周)

理解并确认毕业设计任务书,撰写完成毕业设计开题报告

2010.5.24-5.30

(第2周)

完成调研与资料收集、整理

2010.5.31-6.6

(第3周)

设计方案及原理框图确定

2010.6.7-7.4

(第4、5、6、7周)

电路资料收集,单元电路设计

2010.7.5-7.18

(第8、9周)

电路仿真与改进、完善

2010.19-8.1

(第10、11周)

资料整理

2010..8.2-8.8

(第12周)

书写毕业设计报告

2010.8.9-8.16

(第13周)

修改毕业设计报告并整理装订

五、指导教师意见:

 

           

指导教师签名:

年月日

六、系部意见:

 

           系主任签名:

年月日

摘要

Abstract

摘要

主要研究基于VHDL的Led点阵汉字滚动显示。

首先描述了基于现场可编程门阵(FPGA)的硬件电路,以及点阵显示汉字的原理;然后在单个16X16LED发光二极管点阵上滚动汉字的原理;最后给出了描述其功能的VHDL语言程序设计方法。

通过编程、调试、仿真、下载正确地实现了汉字滚动显示扫描结果,其硬件系统的实验验证也获得了与软件模拟仿真结论相吻合的结果。

关键词:

LED点阵;FPGA;VHDL语言;汉字滚动显示

 

Abstract

PrimaryresearchisbasedonVHDL,LedScrollingdotmatrixcharacters.Firstdescribedbasedonfieldprogrammablegatearray(FPGA)hardwarecircuit,aswellastheprinciplecharacterdotmatrixdisplay;andtheninasingle16X16LEDscrollingLEDdotmatrixontheprinciplesofChinesecharacters;Finally,theVHDLdescriptionlanguageprogramofitsfunctionsdesign.Throughprogramming,debugging,simulation,downloadthecorrectcharacterscrollachievedscanresults,theexperimentalverificationofitshardwareandsoftwarearealsoobtainedfindingsconsistentwithsimulationresults.

Keywords:

LEDdot-matrix;FPGA;VHDLlanguage;characterscrollingdispla

 

第一章前言

1.1本设计的研究背景和研究目的

受到体育场馆用LED显示屏需求快速增长的带动,近年来,中国LED显示屏应用逐步增多。

目前,LED已经广泛应用在银行、火车站、广告、体育场馆之中。

而随着世博会的临近,LED显示屏将广泛的应用在体育场馆以及道路交通指示中,LED显示屏在体育广场中的应用将出现快速增长。

目前,国内从事LED显示屏生产的企业众多,同时,受到外资企业LED显示屏价格过高的影响,在中国LED显示屏市场上多以本土企业为主。

目前,本土LED显示屏生产企业除供应国内需求外,还不断把产品出口到国外市场。

而近年来,受到成本压力的影响,国际上一些知名的LED显示屏企业也逐步把生产基地移到了中国,如巴可在北京设立了显示屏生产基地,Lighthouse在惠州也拥有生产基地,Daktronics、莱茵堡都在国内设立了生产工厂。

随着国际LED显示屏生产大厂不断把生产基地转移至国内,加之国内众多的LED显示屏本土企业,中国正在成为全球LED显示屏的主要生产基地。

因此研究LED汉字滚动显示屏的设计方法具有重要的理论和现实意义。

随着我国经济的高速发展,对公共场合发布信息的需求日益增长,利用LED点阵滚动显示汉字的出现正好适应了这一市场需求,已经成为信息传播的一种重要手段。

采用传统方法设计的汉字滚动显示器,通常需要使用单片机、存储器和制约逻辑电路来进行PCB板级的系统集成。

尽管这种方案有单片机软件的支持较为灵活,但是由于受硬件资源的限制,未来对设计的变更和升级,总是难以避免要付出较多研发经费和较长投放市场周期的代价。

随着电子设计自动化(EDA)技术的进展,基于可编程FPGA器件进行系统芯片集成的新设计方法,也正在快速地到代基于PCB板的传统设计方式。

因此,本设计的研究是很有必要的,之所以基于FPGA设计是因为现场可编程门阵列(FPGA)设计周期小,灵活度高,适合用于小批量系统,提高系统的可靠性和集成度。

并且采用编写灵活的VHDL语言编写主程序。

1.2LED点阵显示特点

(1)可以显示各种数字、文字、图表、曲线、图形;

(2)采用纯红、高绿作双基色发光器件,发光亮度高,色彩鲜艳、丰富;

(3)显示效果清晰、稳定、功耗低、寿命长;

(4)优质铝合金结构,磨沙、银镜或钛金不锈钢包边。

尺寸和规格可根据需要灵活组合;

(5)支持各种计算机网络,编辑软件丰富、易用;

(6)适用于室内、外所有信息发布及广告宣传场所。

如:

银行、证券交易所、商场、市场、宾馆、洒楼、电信、邮政、医院、车站、机场等。

1.3FPGA设计的特点

FPGA通常被认为是ASIC实现的一种替代手段.一般ASIC包括三种,既全定制、半定制(含标准单元和门阵列)以及可编程器件。

对于前两种,需要支付不可重复使用的工程费用NRE(NonrecurringEngineering),主要用于芯片的流片、中测、分析的工程开销,一次费用一般在1万至数万美元以上。

如果一次不成功、返工、甚至多次返工,NRE费用将要上升。

成本高、风险大,而通常对每个ASIC品种的需求量往往不大,NRE费用分摊到每个产品上价太高,用户无法接受。

而对于可编程器件PLD(ProgrammableLogicDevice)正是可以解决上述问题的新型ASIC,PLD以其操作灵活、使用方便、开发迅速、投资风险小等突出优点,特别适合于产品开发初期、科研样品研制或小批量的产品.FPGA是一种新型的PLD,其除了具有PLD的优点外,其规模比一般的PLD的规模大。

目前,Xilinx推出的XC4025可以达到25000门的规模,Altera公司的FLEX10K100系列芯片可达到十万门的规模,完全可以满足用户的一般设计需要。

   FPGA的主要特点是:

寄存器数目多,采用查找表计数,适合时序逻辑设计。

但是互连复杂,由于互连采用开关矩阵,因而使得延时估计往往不十分准确。

   FPGA也有其自身的局限性,其一就是器件规模的限制,其二就是单元延迟比较大。

所以,在设计者选定某一FPGA器件后,要求设计者对器件的结构、性能作深入的了解,在体系结构设计时,就必须考虑到器件本身的结构及性能,尽可能使设计的结构满足器件本身的要求.这样就增加了设计的难度。

   离开对FPGA结构的详细了解,设计人员就不可能优化设计。

因而设计人员必须了解FPGA器件的特性和限制,熟悉FPGA的结构。

   在了解FPGA结构特点的基础上,就可以利用VHDL语言描写出高效的电路描述实现性能优化的电路。

第二章系统设计

2.1设计任务与要求

2.1.1设计任务

(1)设计一个16×16的LED点阵显示器;

(2)在设计过程中,EDA试验箱进行仿真调试。

2.1.2设计要求

(1)输出预定义“王、日、田、口”四个汉字;

(2)输出汉字循环显示;

(3)操作方便、可维护性高;

(4)程序简捷,便于修改。

2.2设计原理

2.2.1总体设计方案

方案一:

本设计所使用的16×16的点阵,EDA实验箱上有其接口电路,列选信号为SEL0,SEL1,SEL2,SEL3,经4线16线译码器输出16列,从左起为第一列,列选信号是由一个4位向量SEL[3..0]控制;行选信号为H0~H15,是由16个行信号组成的,每一行由一个单独的位来控制,高电平有效。

例如“0000”表示第0列,“0000000000000001”表示第一行的点亮。

由于列是由一个向量决定,而每一时刻的值只能有一个固定的值,因而只能使某一列的若干个点亮,因此就决定了只能用逐列扫描的方法。

例如要使第一列的2,4,6,8,行亮,则列为“0001”、行为“0000000010101010”就可以实现了。

方案二:

VHDL程序设计的是硬件,他和编程语言的最大区别是它可以“并发执行”。

本设计可以将LED显示屏要的显示内容抽象成一个二维数组(数组中的‘1’对映点阵显示屏上面的亮点),用VHDL语言设计一个进程将这个数组动态显示在LED显示屏上,再利用另一个进程对这个数组按一定频率进行数据更新,更新的方式可以有多种。

因为两个进程是同时进行的(并发执行),如果对数组中的汉字数据按滚动的方式更新,则可实现汉字的滚动显示。

如图2-1为该方案原理图。

 

图2-1方案二原理图

2.2.2方案的比较

方案一很容易实现,而且占用FPGA的资源较少。

但是由于其实现方式的局限性,该方案只能实现汉字的滚动显示。

方案二中将LED点阵抽象成了一个二维数组。

可以设计一些比较复杂的算法来控制这个数组,使设计的系统不但可以滚动显示汉字,还可以扩展一些其它的显示效果。

但是方案二中对数组的处理部分对FPGA芯片的资源消耗太大学校实验室里的EPF10K10LC84-4芯片只有576个逻辑单元远远不够设计要求。

所以最终选择方案一。

2.3扫描控制模块

2.3.1LED的显示原理

16×16扫描LED点阵的工作原理同8位扫描数码管类似。

它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯,所以其扫描译码地址需4位信号线(SEL0-SEL3),其汉字扫描码由16位段地址(0-15)输入。

通过时钟的每列扫描显示完整汉字。

 

图2-2LED灯红绿信号图2-316×16点阵LED等效电路

点阵LED一般采用扫描式显示,实际运用分为三种方式:

(1)点扫描

(2)行扫描

(3)列扫描

若使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即可。

若使用第二和第三种方式,则频率必须大于16×8=128Hz,周期小于7.8ms即可符合视觉暂留要求。

此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。

2.3.2汉字的存储

用动态分时扫描技术使LED点阵模块显示图像,需要进行两步工作。

第一步是获得数据并保存,即在存贮器中建立汉字数据库。

第二步是在扫描模块的控制下,配合行扫描的次序正确地输出这些数据。

获得图像数据的步骤是,先将要显示的每一幅图像画在一个如图3.3所示的被分成16×16共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布,再将此分布关系以32×16的数据结构组成64个字节的数据,并保存在只读存贮器ROM中。

以这种方式将若干个汉字的数据贮存在存贮器内,就完成了图像数据库的建立工作。

 

2.4汉字显示

汉字显示使用的是16×16的点阵,EDA实验箱上有其接口电路,列选信号为SEL0,SEL1,SEL2,SEL3,经4线16线译码器输出16列,从左起为第一列,列选信号是由一个4位向量SEL[3..0]控制;行选信号为H0~H15,是由16个行信号组成的,每一行由一个单独的位来控制,高电平有效。

例如“0000”表示第0列,“0000000000000001”表示第一行的点亮。

由于列是由一个向量决定,而每一时刻的值只能有一个固定的值,因而只能使某一列的若干个点亮,因此就决定了只能用逐列扫描的方法。

例如要使第一列的2,4,6,8,行亮,则列为“0001”、行为“0000000010101010”就可以实现了。

下面是各个部分的程序设计:

2.4.1列循环扫描

列循环扫描

通过对每一列的扫描来完成对字母的现实,只要扫描的频率足够快,就能给人以连续的感觉。

因此要控制扫描的频率,不能太低,否则,就会造成视觉上的不连续,本设计的扫描频率不得低于50Hz,扫描程序如下:

Libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

Entitydz_xsis

Port(enable,clk:

instd_logic;--端口定义输入信号

Sel:

outstd_logic_vector(3downto0));--端口定义输出信号

Enddz_xs;

Architecturecountofdz_xsis

Signallie:

std_logic_vector(3downto0);

Begin

Process(clk,enable)--脉冲、使能信号

begin

Ifclk'eventandclk='1'then

Ifenable='1'then

Iflie>"0000"then

Lie<=lie-"0001";

Else

Lie<="1111";

Endif;

Endif;

Endif;

Sel<=lie;

Endprocess;

2.4.2字符样式设计

字符样式设计

本环节是建立一个数据库,使之能在扫描的同时读取所需要的信息,从而完成汉字的显示。

本次设计“王、日、田、口”汉字样式设计程序如下:

Libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

Entitydz_xsis

Port(enable,clk:

instd_logic;--端口定义输入信号

h0,h8:

outstd_logic_vector(7downto0));--端口定义输出信号(h0-列数据输出,h8-代表行数据输出)

Enddz_xs;

Architecturecountofdz_xsis

Signallie:

std_logic_vector(3downto0);--信号标志

Signalpast1:

std_logic_vector(1downto0);

Begin

Process(enable,clk)--脉冲、使能信号

Begin

Ifclk'eventandclk='1'then

Ifenable='1'then

Caselieis

When"00"=>

Caselieis--“王”字设计

When"0011"=>h0<="00010001";h8<="00010000";

When"0100"=>h0<="00010001";h8<="00010000";

When"0101"=>h0<="00010001";h8<="00010000";

When"0110"=>h0<="00010001";h8<="00010000";

When"0111"=>h0<="00010001";h8<="00010000";

When"1000"=>h0<="00011111";h8<="11110000";

When"1001"=>h0<="00010001";h8<="00010000";

When"1010"=>h0<="00010001";h8<="00010000";

When"1011"=>h0<="00010001";h8<="00010000";

When"1100"=>h0<="00010001";h8<="00010000";

When"1101"=>h0<="00010001";h8<="00010000";

Whenothers=>h0<="00000000";h8<="00000000";

Endcase;

When"01"=>

Caselieis--“日”字设计

When"0101"=>h0<="00011111";h8<="11110000";

When"0110"=>h0<="00010001";h8<="00010000";

When"0111"=>h0<="00010001";h8<="00010000";

When"1000"=>h0<="00010001";h8<="00010000";

When"1001"=>h0<="00010001";h8<="00010000";

When"1010"=>h0<="00010001";h8<="00010000";

When"1011"=>h0<="00011111";h8<="11110000";

Whenothers=>h0<="00000000";h8<="00000000";

Endcase;

When"10"=>

Caselieis--“田”字设计

When"0100"=>h0<="00011111";h8<="11110000";

When"0101"=>h0<="00010001";h8<="00010000";

When"0110"=>h0<="00010001";h8<="00010000";

When"0111"=>h0<="00010001";h8<="00010000";

When"1000"=>h0<="00011111";h8<="11110000";

When"1001"=>h0<="00010001";h8<="00010000";

When"1010"=>h0<="00010001";h8<="00010000";

When"1011"=>h0<="00010001";h8<="00010000";

When"1100"=>h0<="00011111";h8<="11110000";

Whenothers=>h0<="00000000";h8<="00000000";

Endcase;

When"11"=>

Caselieis--“口”字设计

When"0101"=>h0<="00011111";h8<="11100000";

When"0110"=>h0<="00010000";h8<="00100000";

When"0111"=>h0<="00010000";h8<="00100000";

When"1000"=>h0<="00010000";h8<="00100000";

When"1001"=>h0<="00010000";h8<="00100000";

When"1010"=>h0<="00010000";h8<="00100000";

When"1011"=>h0<="00011111";h8<="11100000";

Whenothers=>h0<="00000000";h8<="00000000";

Endcase;

Whenothers=>h0<="00000000";h8<="00000000";

Endcase;

Endif;

Endif;

Endprocess;

2.4.3字母循环扫描及期间的延时环节

为使字母不断地循环显示,并且使每个字母之间有停顿,就需要在中间加一定的延时和循环环节。

在这一环节中,可以通过修改其数值来控制每个字母的显示时间。

其程序如下:

process(clk)

variableint:

integerrange0to10000;

begin

ifclk’eventandclk=’1’then

ifint<10000then

int:

=int+1;

else

int:

=0;

ifnext1=”11”then

next1<=”00”;

else

next1<=next1+’1’;

endif;

endif;

endif;

endprocess;

2.5整个完整的程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityyz_okis

port(enable,clk:

instd_logic;

sel:

outstd_logic_vector(3downto0);

h0,h8:

outstd_logic_vector(7downto0));

endyz_ok;

architecturecountofyz_okis

signallie:

std_logic_vector(3downto0);

signalnext1:

std_logic_vector(1downto0);

begin

a1:

process(clk,enable)

begin

Ifclk'eventandclk='1'then

Ifenable='1'then

Iflie>"0000"then

Lie<=lie-"0001";

Else

Lie<="1111";

Endif;

E

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1