LED汉字滚动显示器设计Word文档下载推荐.docx
- 文档编号:22363419
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:14
- 大小:75.71KB
LED汉字滚动显示器设计Word文档下载推荐.docx
《LED汉字滚动显示器设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《LED汉字滚动显示器设计Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
尽管这种方案有单片机软件的支持较为灵活,但是由于受硬件资源的限制,未来对设计的变更和升级,总是难以避免要付出较多研发经费和较长投放市场周期的代价。
随着电子设计自动化(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
仿真波形如下:
课程设计体会
通过这次课程设计,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LED 汉字 滚动 显示器 设计