FPGA点阵显示论文.docx

上传人:b****6 文档编号:7803991 上传时间:2023-01-26 格式:DOCX 页数:9 大小:34.47KB
下载 相关 举报
FPGA点阵显示论文.docx_第1页
第1页 / 共9页
FPGA点阵显示论文.docx_第2页
第2页 / 共9页
FPGA点阵显示论文.docx_第3页
第3页 / 共9页
FPGA点阵显示论文.docx_第4页
第4页 / 共9页
FPGA点阵显示论文.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

FPGA点阵显示论文.docx

《FPGA点阵显示论文.docx》由会员分享,可在线阅读,更多相关《FPGA点阵显示论文.docx(9页珍藏版)》请在冰豆网上搜索。

FPGA点阵显示论文.docx

FPGA点阵显示论文

桂林电子科技大学

点阵显示器

学院(系):

专业:

学号:

学生姓名:

指导教师:

 

摘要

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

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

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

 

关键词:

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

 

Abstract

PrimaryresearchisbasedonVHDL,LedScrollingdotmatrixnumbers.Firstdescribedbasedonfieldprogrammablegatearray(FPGA)hardwarecircuit,aswellastheprinciplenumbersdotmatrixdisplay;andtheninasingle8X8LEDscrollingLEDdotmatrixontheprinciplesofnumbers;Finally,theVHDLdescriptionlanguageprogramofitsfunctionsdesign.Throughprogramming,debugging,simulation,downloadthecorrectcharacterscrollachievedscanresults,theexperimentalverificationofitshardwareandsoftwarearealsoobtainedfindingsconsistentwithsimulationresults.

Keywords:

LEDdot-matrix;FPGA;VHDLlanguage;numberscrollingdispla

 

目录

 

第一章前言

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)设计一个8×8的LED点阵显示器;

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

2.1.2设计要求

(1)输出预定义“091222333”九个数字;

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

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

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

2.2设计原理

2.2.1总体设计方案

方案一:

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

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

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

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

方案二:

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

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

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

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

 

图2-1方案二原理图

2.2.2方案的比较

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

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

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

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

但是方案二中对数组的处理部分对FPGA芯片的资源消耗太大。

所以最终选择方案一。

2.2.3点阵模块

数字显示的原理

数字0-9点阵显示代码的形成

如下图所示,假设显示数字“0”因此,形成的列代码为 00H,00H,3EH,41H,3EH,00H,00H;只要把这些代码分别送到相应的列线上面,即可实现“0”的数字显示。

送显示代码过程如下所示

先送列扫描码然后再送行扫描数据

 

 

00003E41413E0000

图2-2点阵显字

2.2.4程序调试

modulekk(out,sbit,res,clk);

outputreg[7:

0]out;

outputreg[7:

0]sbit;

inputres;

inputclk;

regclk1;

reg[9:

0]i;

reg[9:

0]state;

reg[29:

0]counter0;

reg[29:

0]counter1;

initialbegini=0;out=8'b0000_0000;sbit=8'b1111_1111;end

always@(posedgeclk)

begin

if(!

res)begincounter0=0;counter1=0;state=0;end

else

begin

if(counter0>=40000000)

begincounter0=0;state=state+1;if(state>=9)state=0;end

elsecounter0=counter0+1;

if(counter1>=10000)

begincounter1=0;clk1=~clk1;end

elsecounter1=counter1+1;

end

end

always@(posedgeclk1)

begin

casex(state)

0:

begini=i+1;if(i==1)beginout=8'b1111_1111;sbit=8'b1111_1110;end//0

if(i==2)beginout=8'b1100_0011;sbit=8'b1111_1101;end

if(i==3)beginout=8'b1101_1011;sbit=8'b1111_1011;end

if(i==4)beginout=8'b1101_1011;sbit=8'b1111_0111;end

if(i==5)beginout=8'b1101_1011;sbit=8'b1110_1111;end

if(i==6)beginout=8'b1101_1011;sbit=8'b1101_1111;end

if(i==7)beginout=8'b1101_1011;sbit=8'b1011_1111;end

if(i==8)beginout=8'b1100_0011;sbit=8'b0111_1111;end

if(i>=9)i=0;

end

1:

begini=i+1;if(i==1)beginout=8'b1111_1111;sbit=8'b1111_1110;end//9

if(i==2)beginout=8'b1100_0011;sbit=8'b1111_1101;end

if(i==3)beginout=8'b1101_1011;sbit=8'b1111_1011;end

if(i==4)beginout=8'b1101_1011;sbit=8'b1111_0111;end

if(i==5)beginout=8'b1100_0011;sbit=8'b1110_1111;end

if(i==6)beginout=8'b1101_1111;sbit=8'b1101_1111;end

if(i==7)beginout=8'b1101_1011;sbit=8'b1011_1111;end

if(i==8)beginout=8'b1100_0011;sbit=8'b0111_1111;end

if(i>=9)i=0;

end

2:

begini=i+1;if(i==1)beginout=8'b1111_1111;sbit=8'b1111_1110;end//1

if(i==2)beginout=8'b1110_0111;sbit=8'b1111_1101;end

if(i==3)beginout=8'b1110_0011;sbit=8'b1111_1011;end

if(i==4)beginout=8'b1110_0111;sbit=8'b1111_0111;end

if(i==5)beginout=8'b1110_0111;sbit=8'b1110_1111;end

if(i==6)beginout=8'b1110_0111;sbit=8'b1101_1111;end

if(i==7)beginout=8'b1110_0111;sbit=8'b1011_1111;end

if(i==8)beginout=8'b1100_0011;sbit=8'b0111_1111;end

if(i>=9)i=0;

end

3:

begini=i+1;if(i==1)beginout=8'b1111_1111;sbit=8'b1111_1110;end//2

if(i==2)beginout=8'b1110_0001;sbit=8'b1111_1101;end

if(i==3)beginout=8'b1110_1101;sbit=8'b1111_1011;end

if(i==4)beginout=8'b1110_1111;sbit=8'b1111_0111;end

if(i==5)beginout=8'b1110_0001;sbit=8'b1110_1111;end

if(i==6)beginout=8'b1111_1101;sbit=8'b1101_1111;end

if(i==7)beginout=8'b1110_1101;sbit=8'b1011_1111;end

if(i==8)beginout=8'b1110_0001;sbit=8'b0111_1111;end

if(i>=9)i=0;

end

4:

begini=i+1;if(i==1)beginout=8'b1110_0001;sbit=8'b1111_1110;end//2

if(i==2)beginout=8'b1110_1101;sbit=8'b1111_1101;end

if(i==3)beginout=8'b1110_1111;sbit=8'b1111_1011;end

if(i==4)beginout=8'b1110_0001;sbit=8'b1111_0111;end

if(i==5)beginout=8'b1111_1101;sbit=8'b1110_1111;end

if(i==6)beginout=8'b1110_1101;sbit=8'b1101_1111;end

if(i==7)beginout=8'b1110_0001;sbit=8'b1011_1111;end

if(i==8)beginout=8'b1111_1111;sbit=8'b0111_1111;end

if(i>=9)i=0;

end

5:

begini=i+1;if(i==1)beginout=8'b1111_1111;sbit=8'b1111_1110;end//2

if(i==2)beginout=8'b1110_0001;sbit=8'b1111_1101;end

if(i==3)beginout=8'b1110_1101;sbit=8'b1111_1011;end

if(i==4)beginout=8'b1110_1111;sbit=8'b1111_0111;end

if(i==5)beginout=8'b1110_0001;sbit=8'b1110_1111;end

if(i==6)beginout=8'b1111_1101;sbit=8'b1101_1111;end

if(i==7)beginout=8'b1110_1101;sbit=8'b1011_1111;end

if(i==8)beginout=8'b1110_0001;sbit=8'b0111_1111;end

if(i>=9)i=0;

end

6:

begini=i+1;if(i==1)beginout=8'b1111_1111;sbit=8'b1111_1110;end//3

if(i==2)beginout=8'b1100_1111;sbit=8'b1111_1101;end

if(i==3)beginout=8'b1011_0111;sbit=8'b1111_1011;end

if(i==4)beginout=8'b1011_1111;sbit=8'b1111_0111;end

if(i==5)beginout=8'b1000_1111;sbit=8'b1110_1111;end

if(i==6)beginout=8'b1011_1111;sbit=8'b1101_1111;end

if(i==7)beginout=8'b1011_0111;sbit=8'b1011_1111;end

if(i==8)beginout=8'b1100_1111;sbit=8'b0111_1111;end

if(i>=9)i=0;

end

7:

begini=i+1;if(i==1)beginout=8'b1100_1111;sbit=8'b1111_1110;end//3

if(i==2)beginout=8'b1011_0111;sbit=8'b1111_1101;end

if(i==3)beginout=8'b1011_1111;sbit=8'b1111_1011;end

if(i==4)beginout=8'b1000_1111;sbit=8'b1111_0111;end

if(i==5)beginout=8'b1011_1111;sbit=8'b1110_1111;end

if(i==6)beginout=8'b1011_0111;sbit=8'b1101_1111;end

if(i==7)beginout=8'b1100_1111;sbit=8'b1011_1111;end

if(i==8)beginout=8'b1111_1111;sbit=8'b0111_1111;end

if(i>=9)i=0;

end

8:

begini=i+1;if(i==1)beginout=8'b1111_1111;sbit=8'b1111_1110;end//3

if(i==2)beginout=8'b1100_1111;sbit=8'b1111_1101;end

if(i==3)beginout=8'b1011_0111;sbit=8'b1111_1011;end

if(i==4)beginout=8'b1011_1111;sbit=8'b1111_0111;end

if(i==5)beginout=8'b1000_1111;sbit=8'b1110_1111;end

if(i==6)beginout=8'b1011_1111;sbit=8'b1101_1111;end

if(i==7)beginout=8'b1011_0111;sbit=8'b1011_1111;end

if(i==8)beginout=8'b1100_1111;sbit=8'b0111_1111;end

if(i>=9)i=0;

end

default:

beginout=8'bz;sbit=8'bz;end

endcase

end

endmodule

 

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

当前位置:首页 > 农林牧渔 > 水产渔业

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

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