毕业设计 基于VHDL的汉字点阵动态显示系统的设计.doc_第1页
毕业设计 基于VHDL的汉字点阵动态显示系统的设计.doc_第2页
毕业设计 基于VHDL的汉字点阵动态显示系统的设计.doc_第3页
毕业设计 基于VHDL的汉字点阵动态显示系统的设计.doc_第4页
毕业设计 基于VHDL的汉字点阵动态显示系统的设计.doc_第5页
免费预览已结束,剩余11页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录摘要1关键词1Abstract1Key words 1引言11 设计方案1.1 方案一21.2 方案二21.3 方案比较32 扫描控制模块2.1 LED点阵原理32.2 汉字的存储42.3 汉字的显示52.4 滚动速度的控制63 VHDL语言程序设计3.1扫描频率控制的部分关键程序 63.2单个汉字扫描的部分关键程序 73.3汉字滚动速度控制的部分关键程序 84 系统调试4.1开发环境介绍 94.2调试、仿真与体会 105系统功能、指标参数 146 设计结论 14致谢 14 参考文献 14基于VHDL的汉字点阵动态显示系统的设计摘 要:主要研究基于VHDL的 Led点阵汉字滚动显示。首先描述了基于现场可编程门阵列(FPGA)的硬件电路,以及点阵显示汉字的原理;然后在单个16X16 LED发光二极管点阵上滚动汉字的原理;最后给出了描述其功能的VHDL语言程序设计方法。通过编程、调试、仿真、下载正确地实现了汉字滚动显示扫描结果,其硬件系统的实验验证也获得了与软件模拟仿真结论相吻合的结果。关键词:LED点阵;FPGA;VHDL语言;汉字滚动显示Design of Chinese characters scrolling display on LED dot matrix based on VHDLAbstract:The design of this subject mainly researches Chinese characters scrolling display on LED dot matrix screen based on FPGA and VHDL . This article firstly describes the hardware circuit based on logic cell array,as well as the principle of Chinese characters display on LED dot matrix .Finally,the article gives the method of VHDL design which describes the function.This design realizes the results of Chinese characters scrolling and scanning correctly by programming ,debugging ,sinulation and download ,Also the experimintal verificattion of hardware systerns has received the conclusions in accordance with the results of software simulation .Key words:LED dot matrix;FPGA;VHDL;Chinese characters scrolling display引言随着我国经济的高速发展,对公共场合发布信息的需求日益增长,利用LED点阵滚动显示汉字的出现正好适应了这一市场需求,已经成为信息传播的一种重要手段。采用传统方法设计的汉字滚动显示器,通常需要使用单片机、存储器和制约逻辑电路来进行PCB板级的系统集成。尽管这种方案有单片机软件的支持较为灵活,但是由于受硬件资源的限制,未来对设计的变更和升级,总是难以避免要付出较多研发经费和较长投放市场周期的代价。随着电子设计自动化(EDA)技术的进展,基于可编程FPGA器件进行系统芯片集成的新设计方法,也正在快速地到代基于PCB板的传统设计方式。因此,本文主要阐述基于FPGA和VHDL语言实现在16*16点阵上的汉字滚动显示问题。1 设计方案1.1 方案一本文系统的LED点阵模块,共由1616=256个LED发光二极管组成。如何在该点阵模块上显示汉字是本文设计的关键技术。本文系统设计是采用一种16路动态分时扫描技术来实现的。具体方法是,将1616数组的显示模块的行输入端与FPGA内的只读存储器ROM的16位数据输出端口相连;16个列控制端与一个4-16译码器A的输出相连;而译码器A的输入端和片选信号又与FPGA内的列扫描控制模块的输出端口scan4-scan0相连。图1.1为方案的结构框图。1.2 方案二VHDL程序设计的是硬件,他和编程语言的最大区别是它可以“并发执行”。本设计可以将LED显示屏要的显示内容抽象成一个二维数组(数组中的1对映点阵显示屏上面的亮点),用VHDL语言设计一个进程将这个数组动态显示在LED显示屏上,再利用另一个进程对这个数组按一定频率进行数据更新,更新的方式可以有多种。因为两个进程是同时进行的(并发执行),如果对数组中的汉字数据按滚动的方二维数组动态显示图1.2 方案二的原理框图更新数组数据式更新,则可实现汉字的滚动显示。图1.2为该方案的原理图。1.3 方案比较方案一很容易实现,而且占用FPGA的资源较少。但是由于其实现方式的局限性,该方案只能实现汉字的滚动显示。方案二中将LED点阵抽象成了一个二维数组。可以设计一些比较复杂的算法来控制这个数组,使设计的系统不但可以滚动显示汉字,还可以扩展一些其它的显示效果。但是方案二中对数组的处理部分对FPGA芯片的资源消耗太大学校实验室里的EPF10K10LC84-4芯片只有576个逻辑单元远远不够设计要求。所以最终选择方案一。2 扫描控制模块2.1 LED点阵原理以下为1616点阵LED外观及引脚图及其等效电路,只要其对应的X、Y轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则Y0=1,X0=0即可。应用时限流电阻可以放在X轴或Y轴。图2.1 1616点阵LED外观图图2.2 1616点阵LED等效图点阵LED扫描法介绍:点阵LED一般采用扫描式显示,实际运用分为三种方式: (1)点扫描(2)行扫描(3)列扫描若使用第一种方式,其扫描频率必须大于1664=1024Hz,周期小于1ms即可。若使用第二和第三种方式,则频率必须大于168=128Hz,周期小于7.8ms即可符合视觉暂留要求。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。2.2 汉字的存储用动态分时扫描技术使LED点阵模块显示图像,需要进行两步工作。第一步是获得数据并保存,即在存贮器中建立汉字数据库。第二步是在扫描模块的控制下,配合行扫描的次序正确地输出这些数据。获得图像数据的步骤是,先将要显示的每一幅图像画在一个如图3.3所示的被分成1616共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布,再将此分布关系以3216的数据结构组成64个字节的数据,并保存在只读存贮器ROM中。以这种方式将若干个汉字的数据贮存在存贮器内,就完成了图像数据库的建立工作。图3.3 1616LED点阵模块然后,依次对多汉字抽取像素信息,并按序排队存放起来,便可得到一个待显示数据序列。将这个序列存到ROM中进一步通过寻址的方法来控制该数据序列的释放过程,就可实现在LED 发光二极管点阵上滚动显示多汉字信息的目的。由图2.3可知,某一时刻能在显示数据序列中定位待显示数据的地址指针可用下式计算: addr=n+m (式2.2.1)图2.3 滚动显示多汉字信息的原理示意图2.3 汉字的显示第二步工作的步骤是:先在扫描模块的控制下,由地址线确定每次由ROM送出某一列的16个LED所要显示的汉字的控制字节数据,同时由扫描模块输出的5位扫描码经两个4-16译码器解码后决定相应的某一列可以被点亮,而另外31列都不能被点亮。该状态持续约0.4毫秒后,就接着进行下一行的扫描。当完成了一次32行的扫描后,也就完成了一帧画面的显示。重复上述过程不断修改ROM的地址区间的起始地址,转向下一幅画面的数据传送和显示。如此进行,就可以在LED点阵模块上滚动显示ROM中存储的汉字。2.4 滚动速度的控制将LED点阵看成一个滑窗。通过这个“滑窗”每次能“看到”32个存储单元(2个汉字长度)的信息。只读存储器ROM中链式的存放了若干个汉字的点阵信息,“滑窗”在这若干个汉字点阵信息上面滑动,我们通过“滑窗”看到的就是汉字的滚动显示。在用VHDL编程的时候,可以定义一个变量x作为“滑窗”在ROM上的起始地址,设计一个进程按一定的频率对x进行累加,再设计一个进程将以x为起始地址的长度为32的ROM中的区域动态显示在LED点阵中。显然x累加的速度决定了汉字的滚动速度。此进程根据定义的信号n来控制x递增的速度,n由外部的按键控制。n的范围为07代表了汉字的不同的滚动速度。当n为0时汉字滚动的速度最快,n为7时LED点阵上显示的汉字静止。3 VHDL语言程序设计3.1扫描频率控制的部分关键程序process(clk) -显示时序控制 begin if clkevent and clk=1 then -上升沿 dount=dount+1;-计数累加 if dount=255 then if S=15 then S=0000;-S控制单个汉字扫描周期 else S=S+1; end if; S=S+1; else S=S; end if; if cdount15 then -控制列扫描频率 cdount=cdount+1; else cdountkeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyr=1111111111111111; end case; end if; end process;-结束进程,各个进程之间是并发执行的3.3 汉字滚动速度控制的部分关键程序process(reset_n,clk_scan,flag_scan) -x的控制进程variable cntx:integer range 0 to 50;beginif(reset_n=0)thencntx:=0;x=0;elsif(rising_edge(clk_scan)thenif(flag_scan=1)thenif(cntx=n8 or cntx=cntxhigh)then - n由外部的按键控制,通过n来控制cntx的计数范围cntx:=0;elsecntx:=cntx+1;end if;if(cntx=n8)then -通过n来控制x的增加if(x=xhigh)thenx=0;elsex=x+1;end if;end if;end if;end if;end process;此进程根据定义的信号n来控制x递增的速度,n由外部的按键控制。n的范围为07代表了汉字的不同的滚动速度。当n为0时汉字滚动的速度最快,n为7时LED点阵上显示的汉字静止。4 系统调试与仿真4.1 开发环境介绍Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、Veril-ogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。 Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。支持MAX7000/MAX3000等乘积项器件4.2 调试、仿真与体会4.2.1 创建工程在Quartus II 中新建一个VHDL File文件,将vhdl代码输入这个文件,并保存到工作目录,名为ledarray.vhd。利用new preject wizard 工具创建一个工程,工程名为ledarray,顶层文件实体名为ledarray,并将上面创建的ledarray.vhd文件加入到工程中。G4.2.2 编译前设置(1)选择目标芯片。用assignmemts-settings命令,弹出settings对话框,选择目标芯片为EP2C5T144C8。图1 选择目标器件(2)选择工作方式,编程方式,及闲置引脚状态单击上图中的device&pin options按钮,弹出device&pin options窗口。 在General项中选中auto-restart configuration after error,使对FPGA的配置失败后能自动重新配置,并加入JTAG用户编码。 图2 选择配置器件工作方式在configuration项中,其下方的Generate compressed bitstreams处打勾,这样就能产生用于EPCS的POF压缩配置文件。在Configuration 选项页,选择配置器件为EPCS1,其配置模式选择为active serial。图3选择编程方式在Unused pins项,将目标器件闲置引脚状态设置高阻态,即选择As input,tri-stated。图4 设置闲置引脚状态4.2.3 全程编译设置好前面的内容之后,就可以进行编译了。选择Processing菜单中start compilation,在窗口的下方processing栏中显示编译信息。图5 全程编译成功完成完成后在工程管理窗口左是角显示了工程ledarray 的层次结构和其中结构模块耗用的逻辑宏单元数。此栏的右边是编译处理流程,包括数据网表建立、逻辑综合、适配、配置文件装配和时序分析等。4.2.4时序仿真(1)新建一个矢量波形文件,同时打开波形编辑器。设置仿真时间为50us,保存波形文件为ledarray.vwf。(2)将工程ledarray的端口信号名选入波形编辑器中,所选的端口有clk,及总线keyc和keyr。设置clk的时钟周期为2us,占空比为50%。图6 选择仿真控制仿真器参数设置。选择菜单Assignment中的Settings,在Settings窗口下选择Simulator,在右侧的simulation mode项下选择timing,即选择时序仿真,并选择仿真激励文件名ledarray.vwf。选择simulation options栏,确认选定simulation coverage reporting; 毛刺检测Glitch detection 为1ns 宽度;选中Run simulation until all vector stimuli 全程仿真。现在所有设置进行完毕,在菜单processing项下选择start simulation,直到出现simulation was successful,仿真结束 。仿真文件simulation report 通常会自动弹出,否则选择processingsimulation report 。图7 仿真波形输出Quartus II可以实现硬件描述语言或网表文件对应的RTL电路图的生成。选中Tools菜单中的Netlist 项,在出现的下拉菜单中有三个选项:RTL viewer,即HDL的RTL级图形观察器;Technology Map Viewer,即HDL对应的FPGA底层门级布局观察器;State Machine viewer,即HDL对应的状态机观察器。选择第一项可以打开ledarray工程的RT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论