LED汉字滚动显示器设计Word文档下载推荐.docx

上传人:b****6 文档编号:22363419 上传时间:2023-02-03 格式:DOCX 页数:14 大小:75.71KB
下载 相关 举报
LED汉字滚动显示器设计Word文档下载推荐.docx_第1页
第1页 / 共14页
LED汉字滚动显示器设计Word文档下载推荐.docx_第2页
第2页 / 共14页
LED汉字滚动显示器设计Word文档下载推荐.docx_第3页
第3页 / 共14页
LED汉字滚动显示器设计Word文档下载推荐.docx_第4页
第4页 / 共14页
LED汉字滚动显示器设计Word文档下载推荐.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

LED汉字滚动显示器设计Word文档下载推荐.docx

《LED汉字滚动显示器设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《LED汉字滚动显示器设计Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。

LED汉字滚动显示器设计Word文档下载推荐.docx

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

随着电子设计自动化(EDA)技术的进展,基于可编程ASIC器件的数字电子系统设计的完整方案越来越受到人们的重视,并且以EDA技术为核心、的能在可编程ASIC器件上进行系统芯片集成的新设计方法,也正在快速地取代基于PCB板的传统设计方式。

一.FPGA设计的特点

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语言描写出高效的电路描述实现性能优化的电路。

二.系统设计原理

16×

16的扫描LED点阵只要其对应的X、Y轴顺向偏压,即可使LED发亮。

例如如果想使左上角LED点亮,则Y0=1,X0=0即可。

应用时限流电阻可以放在X轴或Y轴。

16个共阴极输出端口,每个端口对应16个共阴极。

本实验就是要通过CPLD芯片产生读时序,将字形从寄存器中读出,然后产生写时序,写入16×

16的点阵,使其扫描显示输出。

为了显示整个汉字,首先分布好汉字的排列,以行给汉字信息;

然后以128HZ的时序逐个点亮每一行,即每行逐一加高电平,根据人眼的视觉残留特性,使之形成整个汉字的显示。

LED点阵每个点都有一个红色的发光二极管。

点阵内的二极管间的连接都是行共阳,列共阴。

本实验采用共阴,当二极管的共阳极为高电平,共阴极为低电平时,所接点发光;

反之处于截止状态,不放光。

本实验采取行扫描方式,用列给文字信息,利用周期为1s的脉冲来控制所显示的字。

本设计由32进制计数器(COUNT32),16进制计数器(COUNT16),行驱动(LYH)和列驱动(BBLK)组成。

图2-516×

16点阵原理图

三.总体设计方案

方案一:

本设计所使用的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显示屏上,再利用另一个进程对这个数组按一定频率进行数据更新,更新的方式可以有多种。

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

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

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

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

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

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

所以最终选择方案一。

汉字的存储

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

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

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

获得图像数据的步骤是,先将要显示的每一幅图像画在一个如图3.3所示的被分成16×

16共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布,再将此分布关系以32×

16的数据结构组成64个字节的数据,并保存在只读存贮器ROM中。

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

汉字显示

汉字显示使用的是16×

四.下面是各个部分的程序设计及仿真波形图:

列循环扫描

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

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

Libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

Entitydzxsis

Port(enable,clk:

instd_logic;

--端口定义输入信号

Sel:

outstd_logic_vector(3downto0));

--端口定义输出信号

Enddzxs;

Architecturecountofdzxsis

Signallie:

std_logic_vector(3downto0);

Begin

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

begin

Ifclk'

eventandclk='

1'

then

Ifenable='

then

Iflie>

"

0000"

Lie<

=lie-"

0001"

;

Else

="

1111"

Endif;

Endif;

Sel<

=lie;

Endprocess;

Endconut;

仿真图如下:

字符样式设计

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

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

Entityaais

--端口定义输入信号

h0,h8:

outstd_logic_vector(7downto0));

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

Endaa;

Architecturecountofaais

--信号标志

Signalpast1:

std_logic_vector(1downto0);

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

Caselieis

When"

00"

=>

Caselieis--“王”字设计

0011"

h0<

00010001"

h8<

00010000"

0100"

0101"

0110"

0111"

1000"

00011111"

11110000"

1001"

1010"

1011"

1100"

1101"

Whenothers=>

00000000"

Endcase;

01"

Caselieis--“日”字设计

When"

10"

Caselieis--“田”字设计

Endcase;

11"

Caselieis--“口”字设计

11100000"

00100000"

Endif;

Endcount;

仿真波形图:

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

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

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

其程序如下:

Entitybbis

outstd_logic_vector;

Endbb;

Architecturecountofbbis

std_logic_vector;

process(clk)

variableint:

integerrange0to10000;

ifclk’eventandclk=’1’then

ifint<

10000then

int:

=int+1;

else

int:

=0;

ifnext1=”11”then

next1<

=”00”;

else

=next1+’1’;

endif;

endif;

endprocess;

endcount;

整个完整的程序

libraryieee;

entityyzis

port(enable,clk:

sel:

outstd_logic_vector(3downto0);

h0,h8:

endyz;

architecturecountofyzis

signallie:

signalnext1:

std_logic_vector(1downto0);

process(clk,enable)

process(enable,clk)

Casenext1is

Caselieis

仿真波形如下:

课程设计体会

通过这次课程设计,

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

当前位置:首页 > 高等教育 > 教育学

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

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