基于FPGA的点阵汉字显示摘要:本课程设计主要研究基于FPGA的点阵汉字动态显示。首先介绍了LED点阵显示汉字的原理,然后通过编程控制可以显示中英文字符、图形及视频动态图形。LED显示以其组构方式灵活、亮度高、技术成熟、成本低廉等特点在证券、运动场馆及各种室内外显示场合得到广泛的应用。本实验结合实例运用基于FPGA的VHDL语言编程使其循环显示“武汉理工大学信息工程学院庞锦”这几个字。论文描述了基于现场可编程门阵(FPGA)的硬件电路,以及点阵显示汉字的原理;然后介绍在单个16X16LED点阵上滚动汉字的原理;最后给出了描述其功能的VHDL语言程序设计方法。通过编程、调试、仿真、下载正确地实现了汉字滚动显示扫描结果,其硬件系统的实验验证也获得了与软件模拟仿真结论相吻合的结果。关键词:FPGAVHDL语言点阵汉字显示ThedotmatrixcharactersdisplaybasedonFPGAAbstract:ThiscoursedesignisprimaryresearchbasedonVHDLofthedot-matrixcharactersdisplayed.FirstlyintroducestheprincipleofLEDdot-matrixdisplaycharacters,ThenthroughtheprogrammingcontrolcanshowChineseandEnglishcharacters,graphicsandvideodynamicgraphics.LEDdisplaywithitsgroupstructureflexible,highbrightness,maturetechnologyandlowcostcharacteristicswidelyusedinthesecurities,sportsvenuesandavarietyofindoorandoutdoorshowoccasion.Inthisstudy,withexamplesusingVHDLlanguageprogrammingofFPGA-basedmakethecyclicdisplaywuhanuniversityofscienceandtechnologyinformationengineeringcollegePangJin”thewords.Thepapersfirstdescribedbasedonfieldprogrammablegatearray(FPGA)hardwarecircuit,aswellastheprinciplecharacterdotmatrixdisplay;andtheninasingle16X16LEDscrollingLEDdotmatrixontheprinciplesofChinesecharacters;Finally,theVHDLdescriptionlanguageprogramofitsfunctionsdesign.Throughprogramming,debugging,simulation,downloadthecorrectcharacterscrollachievedscanresults,theexperimentalverificationofitshardwareandsoftwarearealsoobtainedfindingsconsistentwithsimulationresults.Keywords:FPGA;VHDLlanguage;Dotmatrixcharactersdisplay;一、引言随着世界和我国经济的高速发展,在公共场所动态显示信息已相当显眼,利用LED点阵滚动显示汉字的出现正好适应了这一市场需求,已经成为信息传播的一种重要手段。采用传统方法设计的汉字滚动显示器尽管有单片机软件的支持较为灵活,但是由于受硬件资源的限制,未来对设计的变更和升级,总是难以避免要付出较多研发经费和较长投放市场周期的代价。随着电子设计自动化技术的进展,可编程FPGA器件进行系统芯片集成的新设计方法,也正在快速地取代基于PCB板的传统设计方式。因此,本文主要阐述VHDL语言实现在16*16点阵上的汉字滚动显示问题。目前,国内从事LED显示屏生产的企业众多,同时,受到外资企业LED显示屏价格过高的影响,在中国LED显示屏市场上多以本土企业为主。目前,本土LED显示屏生产企业除供应国内需求外,还不断把产品出口到国外市场。因此,本设计的研究是很有必要的,之所以基于FPGA设计是因为现场可编程门阵列(FPGA)设计周期小,灵活度高,适合用于小批量系统,提高系统的可靠性和集成度,并且采用编写灵活的VHDL语言编写主程序。二、FPGA与QuartusⅡ软件的简介1、可编程门阵列FPGAFPGA是现场可编程门阵列(FieldProgrammableGateArray)的简称,与之相应的CPLD是复杂可编程逻辑器件(ComplexProgrammableLogicDevice)的简称,两者的功能基本相同,只是实现原理略有不同,有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/PGFA。FPGA具有掩膜可编程门阵列的通用结构,它由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块来实现不同的设计。FPGA一般由3种可编程电路和一个用于存放编程数据的静态存储器SRAM组成。这3种可编程电路是:可编程逻辑模块(CLB--ConfigurableLogicBlock)、输入/输出模块(IOB--I/OBlock)和互连资源(IR—InterconnectResource)。FPGA的主要特点是:寄存器数目多,采用查找表计数,适合时序逻辑设计。但是互连复杂,由于互连采用开关矩阵,因而使得延时估计往往不十分准确。FPGA也有其自身的局限性,其一就是器件规模的限制,其二就是单元延迟比较大。所以,在设计者选定某一FPGA器件后,要求设计者对器件的结构、性能作深入的了解,在体系结构设计时,就必须考虑到器件本身的结构及性能,尽可能使设计的结构满足器件本身的要求.这样就增加了设计的难度。2、QuartusⅡ软件的简介QuartusII是Altera公司的第四代可编程逻辑器件开发软件,它除承接原来MAX+PLUSII软件的全部设计功能和器件对象外,还增加了许多新功能和新的FPGA器件系列。QuartusII软件提供了一种与结构无关的全集成化环境,将设计、综合、布局和布线、系统的验证都整合到一个无缝的环境中,使设计者能方便地对Altera公司的PLD系列产品进行设计输入、快速处理和器件编程。QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。三、点阵汉字显示的设计1、系统设计思路根据系统设计的要求,设计主要由:时钟模块、分频器模块、计数器模块、并置模块、存储器模块等构成(如图3.1所示)。其中时钟模块主要用于提供时钟信号,让电路工作。分频器主要将时钟进行分频,产生比原来时钟小得多的另一信号。计数器模块主要在时钟的驱动下为存储器提供扫描地址,实现对点阵模块的控制。并置模块主要用于将两个时钟信号并置,从而实现汉字间的循环显示。存储器模块主要用存储汉字的字型码,可通过改变字型码实现不同汉字的显示。图3.1系统模块图2、点阵汉字的存储和显示模块用动态分时扫描技术使LED点阵模块显示图像,需要进行两步工作。第一步是获得数据并保存,即在存贮器中建立汉字数据库。第二步是在扫描模块的控制下,配合行扫描的次序正确地输出这些数据。获得图像数据的步骤是,先将要显示的每一幅图像画在一个如图3-2所示的被分成16×16共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布,再将此分布关系以32×16的数据结构组成64个字节的数据,并保存在只读存贮器ROM中。以这种方式将若干个汉字的数据贮存在存贮器内,就完成了图像数据库的建立工作。如on_offclkon_off1on_off2sel[0..3]line0_15[0..15]dianzhenxin1inst图3.2所示为点阵模块的实例,3.3所示为整体的点阵显示模块。图3.2点阵仿真模块实例图3.3整体的点阵显示模块3、分频电路模块因为本试验箱使用的时钟频率20MHZ,而我们的设计显示汉字时需要分频,这样才能完整的把所需要的汉字显示出来,也就是将20MHz时钟信号分频出1KHz,1Hz的二种时钟信号;(1)1Hz的时钟信号主要作为所有汉字显示的扫描调变频率。(2)1KHz主要用作于每一个汉字所显示的扫描频率。1Hz的分频模块如图3.4所示,1KHz的分频模块如图3.5所示:图3.41Hz分频模块图3.51KHz分频模块4、VHDL语言程序软件设计4.1扫描频率控制的部分关键程序p1:process(clk)--分频器variablecount1:integerrange0to10000;variablecount2:integerrange0to20000000;beginif(clk'eventandclk='1')thenif(count1=10000)thencount1:=00000;smclk=notsmclk;elsecount1:=count1+1;endif;if(count2=20000000)thencount2:=00000000;if(on_off2='1')thennumber=number;elsif(on_off1='1')thennumber=0000;elsenumber=number+1;endif;elsecount2:=count2+1;endif;endif;endprocessp1;sel=a;line0_15=dout;4.2单个汉字扫描的部分关键程序本环节是建立一个数据库,使之能在扫描的同时读取所需要的信息,从而完成汉字的显示。本次设计“武汉理工大学信息工程学院庞锦”点阵汉字显示,“理工庞锦”这几个字的程序样式设计程序如下:p3:process(a,number)beginif(number=0010)thencaseaiswhen0000=dout=x0000;--理when0001=dout=x0ffe;when0010=dout=x0040;when0011=dout=xc040;when0100=dout=x3840;when0101=dout=x23fc;when0110=dout=x2040;when0111=dout=x2244;when1000=dout=x23fc;when1001=dout=xfa44;when1010=dout=x2244;when1011=dout=x23fc;when1100=dout=x2244;when1101=dout=xfa44;when1110=dout=x03fc;whenothers=dout=x0000;endcase;elsif(number=0011)thencaseaiswhen0000=dout=x0000;--工when0001=dout=x0000;when0010=dout=xfffe;when0011=dout=x0100;when0100=dout=x0100;when0101=dout=x0100;when0110=dout=x0100;when0111=dout=x0100;when1000=dout=x0100;when1001=dout=x0100;when1010=dout=x0100;when1011=d