版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 本科毕业设计(论文)题目用 VHDL 设计LED 汉字滚动显示器学生姓名任雪宾学号04066230教学院系电子信息工程学院专业年级通信工程2004级指导教师王章瑞职称副教授单位电子信息工程学院辅导教师职 称单位完成日期2008年6月日Southwest Petroleum University Graduation ThesisDesign a LED Chinese Character RollingDisplay with VHDLGrade: 2004Name: Ren XuebinSpecialty: Telecommunications EngineeringInstructor:
2、 Wang Zhangrui School of Electronic and Information Engineering2008-6摘 要本文对基于FPGA控制的LED汉字滚动显示器的设计方法进行了探讨。提出了两个实现方案。并对其中一个方案作了详细说明。文中首先介绍了LED发光二极管点阵的控制原理;然后研究了在LED发光二极管点阵上滚动显示汉字的方法;最后,用VHDL语言程序设计了一个完整的LED汉字滚动显示器。本系统由扫描控制模块、只读存储器ROM和FPGA外面的LED点阵显示模块、一个反相器和两个4-16译码器构成。其中:扫描控制模块和只读存储器ROM集成在FPGA芯片内部。两个4-
3、16译码器(74LS154)和一个反相器配合FPGA中的列扫描控制模块共同完成了两块16×16点阵显示模块的32列的扫描控制。FPGA定义的只读存储器ROM中保存了要显示的汉字的数据,并以16位的数据宽度输出到LED阵显示模块的行端,配合列扫描控制共同完成汉字的滚动显示。本系统利用数字系统设计自动化(EDA)技术实现了全硬件方式的LED点阵显示。利用FPGA内部的物理资源,将只读存储器ROM和主要功能模块设计在FPGA内部。充分显示了EDA技术设计的灵活性,同时也大大提高了系统的集成度和稳定性。关键词:FPGA; LED; EDA;动态扫描AbstractThis article d
4、iscusses the designing method of FPGA controlled LED Chinese character rolling display. This article also proposes two feasible plans and gives a detailed explanation to one of the plans. The article firstly introduces the LED control principle. Then the article studies rolled the demonstration Chin
5、ese character method on the LED light emitter diode lattice. Finally, I design a complete LED Chinese character rolling display with VHDL language program.This system is composed of a scanning control module, a ROM, an LED plot array module, an inverter and two decoders, with the scanning control mo
6、dule and the ROM installed inside the FPGA chip. The two decoders and the inverter work with the out-scanning control module in the FPGA to exercise 32-array scanning control of the two 16×16 dot-matrix display module. The FPGA-defined ROM preserves the data of the Chinese characters that will
7、be displayed, and it sends the data, by way of a 16-bit data width, to the end of the LED plot array module. With the array-scanning controller, the Chinese characters achieve their rolling display.This system has realized the entire hardware way LED lattice demonstration using the number system des
8、ign automation (EDA) technology. Using FPGA internal physics resources, non-erasable storage ROM and major function module design in FPGA. It had demonstrated fully the EDA technical design's flexibility, simultaneously also greatly enhanced system's integration rate and the stability.Keywor
9、ds: FPGA; LED; EDA; Dynamic scanning目 录1 绪 论11.1 本设计的研究背景和研究目的11.2 研究内容及方法21.3 设计的主要工作22 设计方案32.1 方案一32.2 方案二32.3 方案比较43 扫描控制模块53.1 LED点阵原理53.2 汉字的存储63.3 汉字的显示73.4 滚动速度的控制93.5存储模块103.5.1 使用参数化组件LPM_ROM来实现103.5.2 用FPGA内部的逻辑单元设计一个ROM124 分频电路134.1 解决毛刺134.1.1 改变输入信号消除毛刺134.1.2 通过D触发器消除毛刺144.2 关键部分VHDL程
10、序145 按键扫描电路165.1 直接式/矩阵式按键165.2 键盘消抖电路185.2.1 比较法消键抖动185.2.2 积分法消键抖动186 FPGA的顶层设计196.1 层次化设计的概念196.1.1 模块化196.1.2 元件重用196.2 生成组件符号206.3 调用组件符号206.3.1 建立项目206.3.2 定义输入/输出端口与联线217 结论237.1 总结237.2 建议23谢 辞24参考文献25附录:系统各个模块的VHDL程序26I用VHDL设计LED汉字滚动显示器1 绪 论1.1 本设计的研究背景和研究目的受到体育场馆用LED显示屏需求快速增长的带动,近年来,中国 LED
11、显示屏应用逐步增多。目前,LED已经广泛应用在银行、火车站、广告、体育场馆之中。而随着奥运会、世博会的临近,LED显示屏将广泛的应用在体育场馆以及道路交通指示中,LED显示屏在体育广场中的应用将出现快速增长。2007年,中国LED显示屏市场需求额为49.5亿元,比2006年增长22.2%,这其中全彩显示屏需求额达到21.1亿元,占整体市场的42.6%,双色显示屏的需求额位于第二位,需求额为18.3亿元,占整体市场的40%,单色显示屏需求额为10.1亿元。图1.1 2006-2010年中国LED显示屏市场规模2008年奥运会的召开将会直接推动体育场用屏幕数量的快速增加,同时,由于奥运会用屏对LE
12、D显示屏的质量要求也较高,因此,高端屏幕的使用比例也将会增加,数量和质量的提高带动LED显示屏市场的增长。除了体育场馆之外,奥运会和世博会等重大活动召开的另一直接推动领域就是广告领域国内外的广告公司必然会看好奥运会和世博会带来的商机,因此必然会增加广告用屏的数量来提高自身收入,从而促进了广告用屏市场的发展。奥运会和世博会等重大活动的召开必然会伴随着很多大型活动,政府、新闻媒体和各种组织都可能会在奥运会和世博会之间举办各种相关活动,某些活动可能需要大屏LED,这些需求直接带动显示屏市场。目前,国内从事LED显示屏生产的企业众多,同时,受到外资企业LED显示屏价格过高的影响,在中国LED显示屏市场
13、上多以本土企业为主。目前,本土LED显示屏生产企业除供应国内需求外,还不断把产品出口到国外市场。而近年来,受到成本压力的影响,国际上一些知名的LED显示屏企业也逐步把 生产基地移到了中国,如巴可在北京设立了显示屏生产基地,Lighthouse在惠州也拥有生产基地,Daktronics、莱茵堡都在国内设立了生产工厂。随着国际LED显示屏生产大厂不断把生产基地转移至国内, 加之国内众多的LED显示屏本土企业,中国正在成为全球LED显示屏的主要生产基地。因此研究研究LED汉字滚动显示屏的设计方法具有重要的理论和现实意义。1.2 研究内容及方法采用传统方法设计的汉字滚动显示器,通常需要使用单片机、存储
14、器和制约逻辑电路来进行PCB(印制电路板)板级的系统集成。尽管这种方案有单片机软件的支持较为灵活,但是由于受硬件资源的限制,未来对设计的变更和升级,总是难以避免要付出较多研发经费和较长投放市场周期的代价。随着电子设计自动化(EDA)技术的进展,基于可编程ASIC器件的数字电子系统设计的完整方案越来越受到人们的重视,并且以EDA技术为核心、的能在可编程ASIC器件上进行系统芯片集成的新设计方法,也正在快速地取代基于PCB板的传统设计方式。如何使用EDA工具设计电子系统是人们普遍关心的问题。在EDA工具软件QuartusII的支持下,本设计通过了编译、适配和软件仿真验证。最后载入硬件系统证明了它的
15、正确性。1.3 设计的主要工作 本设计需要利用EDA工具软件QuartusII编写并调试系统的VHDL程序。并且每一个模块都在这个软件下进行了仿真。系统的VHDL程序编好过后先在实验室的EDA实验箱上下载调试,成功过后再根据电路焊接相应的电路板。最好将程序下载到制好的电路上验证。2 设计方案2.1 方案一本文系统的LED点阵模块,共由16×32=512个LED发光二极管组成。如何在该点阵模块上显示汉字是本文设计的关键技术。本文系统设计是采用一种32路动态分时扫描技术来实现的。具体方法是,将8个8×8数组的显示模块组合成两个16行16列的扫描结构并将其串联(如图2.1所示)。
16、其行输入端与FPGA内的只读存储器ROM的16位数据输出端口相连;32个列控制端与两个4-16译码器A、B的输出相连;而译码器A、B的输入端和片选信号又与FPGA内的列扫描控制模块的输出端口scan4-scan0相连。图2.1为方案的结构框图。图2.1 系统的结构框图2.2 方案二VHDL程序设计的是硬件,他和编程语言的最大区别是它可以“并发执行”。本设计可以将LED显示屏要的显示内容抽象成一个二维数组(数组中的1对映点阵显示屏上面的亮点),用VHDL语言设计一个进程将这个数组动态显示在LED显示屏上,再利用另一个进程对这个数组按一定频率进行数据更新,更新的方式可以有多种。因为两个进程是同时进
17、行的(并发执行),如果对数组中的汉字数据按滚动的方二维数组动态显示图2.2 方案二的原理框图更新数组数据式更新,则可实现汉字的滚动显示。图2.2为该方案的原理图。2.3 方案比较方案一很容易实现,而且占用FPGA的资源较少。但是由于其实现方式的局限性,该方案只能实现汉字的滚动显示。方案二中将LED点阵抽象成了一个二维数组。可以设计一些比较复杂的算法来控制这个数组,使设计的系统不但可以滚动显示汉字,还可以扩展一些其它的显示效果。但是方案二中对数组的处理部分对FPGA芯片的资源消耗太大学校实验室里的EPF10K10LC84-4芯片只有576个逻辑单元远远不够设计要求。所以最终选择方案一。3 扫描控
18、制模块3.1 LED点阵原理以下为8×8点阵LED外观及引脚图及其等效电路,只要其对应的X、Y轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则Y0=1,X0=0即可。应用时限流电阻可以放在X轴或Y轴。图3.1 8×8点阵LED外观图图3.2 8×8点阵LED等效图点阵LED扫描法介绍点阵LED一般采用扫描式显示,实际运用分为三种方式: (1)点扫描(2)行扫描(3)列扫描若使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即可。若使用第二和第三种方式,则频率必须大于16×8=128Hz,周期小于7.8ms即
19、可符合视觉暂留要求。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。3.2 汉字的存储用动态分时扫描技术使LED点阵模块显示图像,需要进行两步工作。第一步是获得数据并保存,即在存贮器中建立汉字数据库。第二步是在扫描模块的控制下,配合行扫描的次序正确地输出这些数据。获得图像数据的步骤是,先将要显示的每一幅图像画在一个如图3.3所示的被分成16×16共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布,再将此分布关系以32×16的数据结构组成64个字节
20、的数据,并保存在只读存贮器ROM中。以这种方式将若干个汉字的数据贮存在存贮器内,就完成了图像数据库的建立工作。图3.3 16×16LED点阵模块然后,依次对多汉字抽取像素信息,并按序排队存放起来,便可得到一个待显示数据序列。将这个序列存到ROM中进一步通过寻址的方法来控制该数据序列的释放过程,就可实现在LED 发光二极管点阵上滚动显示多汉字信息的目的。由图3.4可知,某一时刻能在显示数据序列中定位待显示数据的地址指针可用下式计算: addr=n+m (式3.1)图3.4 滚动显示多汉字信息的原理示意图3.3 汉字的显示第二步工作的步骤是:先在扫描模块的控制下
21、,由地址线确定每次由ROM送出某一列的16个LED所要显示的汉字的控制字节数据,同时由扫描模块输出的5位扫描码经两个4-16译码器解码后决定相应的某一列可以被点亮,而另外31列都不能被点亮。该状态持续约0.4毫秒后,就接着进行下一行的扫描。当完成了一次32行的扫描后,也就完成了一帧画面的显示。重复上述过程不断修改ROM的地址区间的起始地址,转向下一幅画面的数据传送和显示。如此进行,就可以在LED点阵模块上滚动显示ROM中存储的汉字。关键部分VHDL程序:process(reset_n,clk_scan) -扫描信号的输出beginif(reset_n='0')thencnt&l
22、t;=31;elsif(rising_edge(clk_scan)thenif(cnt=cnt'high)thencnt<=0;elsecnt<=cnt+1;end if;if(cnt =cnt'high-1)thenflag_scan<='1';elseflag_scan<='0';end if;end if;end process;process(reset_n,clk_scan,cnt)beginif(reset_n='0')thenscan<="ZZZZZ";elsif(r
23、ising_edge(clk_scan)thencase cnt iswhen 0 => scan <= "00000";when 1 => scan <= "00001"; when 30 => scan <= "11110";when 31 => scan <= "11111";when others => scan <= "ZZZZZ";end case;end if;end process;-process(reset_n,cl
24、k_scan,cnt,x) -列数据的输出variable index:integer range 0 to L_SZ;beginif(reset_n='0')thendata<="0000000000000000";elsif(rising_edge(clk_scan)thenindex:=(cnt+x) mod L_SZ);data<=ledsj(index);end if;end process;3.4 滚动速度的控制将LED点阵看成一个滑窗。通过这个“滑窗”每次能“看到”32个存储单元(2个汉字长度)的信息。只读存储器ROM中链式的存放了
25、若干个汉字的点阵信息,“滑窗”在这若干个汉字点阵信息上面滑动,我们通过“滑窗”看到的就是汉字的滚动显示。在用VHDL编程的时候,可以定义一个变量x作为“滑窗”在ROM上的起始地址,设计一个进程按一定的频率对x进行累加,再设计一个进程将以x为起始地址的长度为32的ROM中的区域动态显示在LED点阵中。显然x累加的速度决定了汉字的滚动速度。关键部分的VHDL程序:process(reset_n,clk_scan,flag_scan) -x的控制进程variable cntx:integer range 0 to 50;beginif(reset_n='0')thencntx:=0;
26、x<=0;elsif(rising_edge(clk_scan)thenif(flag_scan='1')thenif(cntx=n×8 or cntx=cntx'high)then -通过n来控制cntx的计数范围cntx:=0;elsecntx:=cntx+1;end if;if(cntx=n×8)then -通过n来控制x的增加if(x=x'high)thenx<=0;elsex<=x+1;end if;end if;end if;end if;end process;此进程根据定义的信号n来控制x递增的速度,n由外部
27、的按键控制。n的范围为07代表了汉字的不同的滚动速度。当n为0时汉字滚动的速度最快,n为7时LED点阵上显示的汉字静止。3.5存储模块3.5.1 使用参数化组件LPM_ROM来实现为提高系统的集成度,本设计将点阵显示的图像数据库建立在EPF10K10的片内ROM中。Flex10k10中共有3个嵌入式数组块(EAB),每块大小均为2k,可构成2048×1,1024×2,512×4,256×8等4种类型RAM/ROM中的任意一种。更大容量的内存可由多个EAB组合在一起。例如两个256×8的ROM块可组成一个256×16的ROM,两个512
28、×4的ROM块可组合成一个512×8的ROM,如果需要,可以将所有的EAB级联成一个RAM/ROM。级联是QuartusII软件自动完成的。图3.5 Symbol对话框本设计可以选择2048×16的结构,用来构成一个能保存128个汉字的只读存储器ROM。在FPGA中建立片内只读存储器ROM,是通过使用美国Altera公司的EDA工具软件QuartusII,并调用其中的参数化组件LPM_ROM来实现的。具体步骤是,首先在MAXPLUSII的图形编辑器中双击空白处,便会出现如图3.5所示的“Symbol”对话框。点击该对话框的“Mega Wizard Plug-In
29、Manager”按钮,并在出现的对话框中选择storage ->LPM_ROM,就会出现如图3.6所示的“Mega Wizard Plug-InManager-LMP ROM” 系列对话框。在该系列对话框中设置输出数据线宽度为11,存储单元的数量为2048。并完成相应的配置环节就获得了要求的256字节的只读存储器ROM。只读存储器ROM中的初始化数据就是本系统的汉字数据库数据。图3.6 “MegaWizard Plugl-in Manager_LMP ROM”对话框该初始化数据的建立是在上述的LMP_ROM设计过程中通过指定一个后缀名为.mif的初始化文件来实现的。该文件是设计者事先在文
30、本编辑器中建立的,其VHDL格式和关键代码示意如下:WIDTH=16;数据线的宽度为16位DEPTH=2048;有2048个字节存储单元,对应11根地址线宽度ADDRESS RADIX=HEX;以16进制表示DATA RADIX = HEX;CONTENTBEGIN00 : 2f;以16进制表示的ROM内的各字节单元的地址和保存的数据01 : 6c;02 : f8;fd : ee;fe : 72;ff : 00;END;3.5.2 用FPGA内部的逻辑单元设计一个ROM本系统也可以定义一个常数数组来存储汉字信息。数组的下标对映ROM的地址。下面是一个容量为L_SZ×16的ROM内存的
31、例子,常数L_SZ决定了ROM的地址空间, ROM的每一个数据单元存储16位数据,可以很方便的驱动16×16的LED点阵。定义这个ROM的时侯必须初始化全部存储单元。type array_2 is array(0 to L_SZ)of std_logic_vector(15 downto 0);constant ledsj:array_2:=("0010000000000000"),("0010001111111111"),("0010001000000000"),("0000000000000000")
32、;两种方案存储汉字信息,以及输出数据驱动LED点阵的原理和相差不大,第一种方案是利用了FPGA芯片中的嵌入式数组块,可以生成大容量的ROM来存储较多的汉字信息。第二中方案生成的ROM容量受到了FPGA芯片内部逻辑单元数量的限制,但是它的操作性更好。由于本系统只是验证可行性的一个设计,不需要建立大的字库所以采用第二种方案。4 分频电路4.1 解决毛刺 FPGA与单片机相比,一个非常明显的优势就在于它的高速性。但是因为很多外围器件的驱动需要低频的时钟(若时钟频率太高,则键盘扫描容易出错,数码管会闪烁和不稳定等),所以需要用到分频电路。该电路主要包含有一个计数器模块和一个译码输出模块,该电路是通过计
33、数器模块实现分频的。比如要从12MHz的全局时钟得到100Hz的时钟,必须进行120000倍分频。但是这么大的分频需要仿真时间很久。仿真是一般采用小的分频来替代,真正下载到电路上时,就需要采用120000分频了。值的注意的是译码器的输入采用了寄存器锁存输出,这是为了消除毛刺。多输入的组合逻辑电路中,默写输入信号在理想情况下应该同时发生变化,但由于延迟路径不同造成这些输入信号发生变化的时间有微小差别(门延迟时间量级),这是得到的是输出信号就会有毛刺,这些毛刺有可能会给下一级电路带来,使得整个系统运行不稳定。因此,为保证系统的稳健性,一般情况下,都应该给输出信号去毛刺,使之变得干净。在设计中,译码
34、的输入是计数器的输出,计数器各级输出延迟是不一样的,因此译码器输出clk_scan信号波形就会有毛刺(如图4.1)。图4.1 没有消除毛刺的仿真结果4.1.1 改变输入信号消除毛刺 为了消除毛刺带来的影响,可以设法使得组合逻辑电路的输入每一时刻只有一个发生变化。对于本电路可以把计数器从二进制码计数器改为格雷码计数器。格雷码计数器的特点是相邻的计数值只有一位不相同,即每次计数值改变时,只有一位信号会发生变化。这一点就可以保证没有毛刺产生。4.1.2 通过D触发器消除毛刺把有毛刺的信号通过时钟采样,即通过一个D触发器也可以消除毛刺。本设计就是使用这种方法。这种方法的缺点是信号通过一个D触发器后,就
35、延迟了一个时钟周期。对于本设计这种延迟是允许的,然而在有些电路中延迟是不允许的。该电路的仿真结果如图4.2所示。图4.2 消除毛刺后的仿真结果 4.2 关键部分VHDL程序process(clk) -计数模块 begin if(rising_edge(clk)then if(cntx=480)then cntx<=0; else cntx<=cntx+1; end if; end if; end process;- process(cnt,clk) -译码输出 begin if(rising_edge(clk)then -寄存器锁存输出,以消除毛刺 if(cnt>=cnt
36、39;high/2)then clk_scan<='1'; else clk_scan<='0'; end if; end if;end process;图4.3为分频电路生成的元件符号。图4.3 分频电路的元件符号5 按键扫描电路5.1 直接式/矩阵式按键 数字系统中,常用的按键有直接式和矩阵式两种。直接式按键十分简单,一端接地,一端接FPGA的I/O口(设为输入)。当按键按下时,此接口为高电平,通过对I/O口电平的检测就可知按键是否按下。其优点是简单、易行,连接方便,但每个按键要占用一个I/O口,如果系统中需要很多按键,那么用这种方法会占用大量的
37、I/O口。而矩阵式键盘控制比直接式按键要麻烦得多,但其优点也是很明显的,即节省I/O口。设矩阵式键盘有m行n列,则键盘上有(m×n)个按键,而它只需要占用(m+n)个I/O口。当需要很多按键时,用矩阵式键盘显然比直接式按键要合理得多。图5.1 矩阵键盘接法上图是一个4×4的矩阵键盘的原理图。它有4行4列共8条线,每个按键都连着一条行线和列线。以按键0为研究对象,按键0的行线连着PC4并且通过一个下拉电阻接地(下拉就是将不确定的信号通过一个电阻嵌位在低电平,下拉反之);其列线接着PC3。将PC3PC0设为输出,PC4PC7设为输入。当PC2PC0输出为0,而PC3输出为1,当
38、按键0按下时,因为PC7PC5没有输入,会由于下拉作用稳定在低电平,而PC4则由于与PC3接通而呈现高电平。也就是说,当PC3PC0为0001时,当1键按下时,PC7PC4读到的电平值为0010。如果3键按下那么PC7PC4读到的电平值就是0100。以此类推,可以列出一张行列电平值与按键的对映关系表。表5.1 行列电平值与按键的对应关系列/PC3PC0(输出)行/PC7PC4(输入)按键10000001010000010110000100210001000301000001401000010501000100601001000700100001800100010900100100A001010
39、00B00010001C00010010D00010100E00011000F从表中可以看出,pc3pc0的输出在任意时刻总是只有一条线为1,其它线均为0.这很容易理解,若pc3pc0的输入在同一时刻有多于一条线为1,则无法判断究竟是那个键按下。例如PC3PC2同时为1,当按键0或者按键4被按下,PC7PC4读到的值都是0001,这样根本无法判断究竟是按键0,还是按键4被按下。表5.2 列线扫描输出组合因为无法预计什么时候有键按下,也无法预测究竟是那一列上的键被按下,所以只能对键盘的列线(PC3PC0)进行扫描,同时读取键盘行线(PC7PC0)的电平值。如表7.2所列,PC3PC0按下述的4中
40、组合依次输出,不断循环:PC31000PC20100PC10010PC00001本系统用到的按键只有3个:复位按键,控制n增大和减小的两个按键。显然选择直接式按键的方案。5.2 键盘消抖电路键盘的按键闭合与释放瞬间,输入的信号会有毛刺。如果不进行消抖处理,系统会将这些毛刺误以为是用户的另一次输入,导致系统的误操作。5.2.1 比较法消键抖动也叫计数法,本设计就是采用这种方法。这个方法很好理解它比较若干个时钟周期读取的数据,当每一次比较都相同时我们认为收到了一个稳定的键值,否则认为是过渡态即毛刺。5.2.2 积分法消键抖动用一个增减计数器,当输入信号为'1'时计数器递增计数直到计
41、数器全'1'停止计数,否则计数器递减计数直到全'0'停止计数。那么计数器 的MSB即为输入信号的去抖信号。你也可以用时钟再加上一个速度较慢的使能来对输入信号计数。显然计数器的位数要求与要去抖的抖动脉冲宽度的对数关系。图5.2 消抖电路的元件符号6 FPGA的顶层设计6.1 层次化设计的概念实体A实体B实体B实体D实体E实体F实体G实体H图6.1 层次化设计的示意图层次化设计的示意图如图6.1所示。从图中可以看出,层次化设计的核心思想有两个,一是模块化,二是元件重用。6.1.1 模块化可以将一个大系统划分为几个子模块,而这些子模块有分别由更小的模块组成,如此往下,
42、直至不可再分。这些是自顶向下的设计方法。图6.1中,顶层文件所描述的实体A由B、C、D三个实体组成,而实体B和实体C又分别由实体E、F和实体F、G构成。每个实体都可以看成上一层实体中的一个模块或组件,系统就像搭积木一样一层一层地构建。6.1.2 元件重用同一个元件可以被不同的设计实体调用,也可以被同一个实体多次调用。图6.1中,实体F分别被实体B和实体C调用,而实体G则被实体C调用了2次。组件重用不但大大减轻了设计者的工作量,而且使程序更结构化和具有更高的可读性。6.2 生成组件符号欲将上述的各个模块作为上一层设计实体中的组件,就必须把他们先生成组件符号。具体做法是:在QuartusII中为V
43、HDL语言程序分别建立项目;在编译、仿真通过,证实逻辑功能正确后,在File菜单下选择Create/Update项中的Create Symbol Files for Current File即可(如图6.2)。QuartusII会自动为此实体生成一个后缀为.bsf的组件符号文件,以后就可以在图形编辑器中调用此组件了。图6.2 为实体生成元件符号6.3 调用组件符号6.3.1 建立项目新建一个顶层档的项目将上述的各个模块在QuartusII的图形编辑器中调用已经生成的组件符号(如图6.3)。图6.3 调用元件符号6.3.2 定义输入/输出端口与联线组件中的输入/输出端口需要添加输入/输出引脚,做
44、法是:在图6.3对话框中的pin里选择Input即可添加输入引脚;选择Output即可添加输出引脚。输入/输出引脚上都有一个名字,左键双击它即可输入用户自定的名字。如果要连接两个组件的端口,图6.4 顶层文件左键双击它即可输入用户自定的名字。如果要连接两个组件的端口,就将鼠标移到其中一个端口上,这时鼠标指示符会自动变为“十”形;然后按下鼠标左键并拖动到第2个端口,松开鼠标即画好一条线。以图6.4的关系构成顶层设计,并编译下载到FPGA中,即完成了一个基于FPGA的LED点阵显示系统的全部设计。7 结论7.1 总结本设计基于EDA技术,以全硬件的方式实现了LED汉字滚动显示器。主要完成了以下工作
45、:1. 对时钟信号的分频2. 对按键的消抖动处理3. 用FPGA实现只读存储器4. 对LED点阵的控制由于采用了先进的EDA技术,使得系统在具有极高的集成度和稳定性的同时,还体现出比传统设计方法更大的灵活性,和更高的设计效率。7.2 建议由于现有实验条件的限制,系统的实现选择了本文2.1所提的方案。该方案虽然实现简单,但是它的实现原理是直接将存放在ROM中的信息显示出来。不能改变这些信息。对于本文2.2所提出的方案虽然没有采用,但是笔者认为它是这是一个很具创新的方法。它将LED点阵完全抽象成了一个二维数组,对这个数组进行的所有操作直接反映到LED点阵上。因此,设计者可以设计出很多复杂的方法来操
46、作数组,使得LED点阵除了能够滚动显示外还能增加其他的显示效果。但是在FPGA中对数组的处理全部是通过硬件来实现的,所以该方案对逻辑单元的消耗是十分惊人的。笔者认为可以考虑采用单片机或DSP来实现该方案的运算部分,然后在联合FPGA构成整个系统的设计。谢 辞四年的大学生活不知不觉中就要结束了,在这段难忘的生活中,有我许多美好的回忆。在这份大学的最后一页里,我要感谢的人很多。首先要感谢我的学校,感谢在这四年中交给我的做人道理,让我从一个懵懂的高中生变成一个成熟的青年。还要感谢王章瑞教授,因为毕业设计是在王章瑞的悉心指导下完成的。王老师渊博的专业知识,严谨的治学态度,精益求精的工作作风对我影响深远
47、。他的循循善诱的教导和不拘一格的思路给予我无尽的启迪,他的严谨细致、一丝不苟的作风,将一直是我工作、学习中的榜样。还要感谢的是在做毕业设计期间所有和我一起讨论过的同学,使我对所学的知识掌握得更加牢固。当然,还要感谢寝室的兄弟们在我完成论文的过程中给予我的帮助和鼓励,也是他们陪我度过这四年的生活。此外我还要特别感谢许多网络上的不知名的朋友,他们丰富的实践经验和热心、耐心的教导让我少走了许多弯路。最后要感谢的就是我的父母、朋友,对于他们我更是有千言万语,还是汇聚成一句话:感谢你们一直都伴随着我。现在即将挥别我的学校、老师、同学,还有我四年的大学生活,虽然依依不舍,但是对未来的路,我充满了信心。最后
48、,感谢在大学期间认识我和我认识的所有人,有你们伴随,才有我大学生活的丰富多彩,绚丽多姿!参考文献1 求是科技.CPLD/FPGA应用开发技术与工程实际.北京:人民邮电出版社,20052 齐洪喜等.VHDL电路设计使用教程.北京:清华大学出版社,20043 黄任.VHDL入门·解惑·经典实例·经验总结.北京:北京航空航天大学出版社,20054 郑亚民等.可编程逻辑器件开发软件Quartus.北京:国防工业出版社,20065 杨晓慧,杨永健.基于FPGA的EDA/SOPC技术与VHDL.北京:国防工业出版社,20076 王彦主.基于FPGA的工程设计与应用.西安:西安
49、电子科技大学出版社,20077 李洪伟, 袁斯华.基于Quartus 的FPGA/CPLD设计.北京:电子工业出版社,20068 王开军,姜宇柏等. 面向CPLD/FPGA的VHDL设计.北京:机械工业出版社,20079 王道宪.CPLD/FPGA可编程逻辑器件应用与开发.北京:国防工业出版社,200410 罗朝霞, 高书莉.CPLD/FPGA设计及应用.北京:人民邮电出版社,200711 褚振勇,翁木云.FPGA设计及应用.西安:西安电子科技大学出版社,2002,200712 David R.Coehl The VHDL handbook.Kluwer Academic Pubishers,
50、1989附录:系统各个模块的VHDL程序分频模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity fenpin isport( clk:in std_logic;-输入的500KHz信号 clk_scan:out std_logic; -800hz的点阵动态扫描信号 clk_key:out std_logic;-1KHz的键盘扫描信号 reset_n:in std_logic);end fenpin;architectur
51、e abc of fenpin isbeginprocess(reset_n,clk)-产生clk_scan和clk_key信号-下载用下面这两条语句variable cnt_scan:integer range 0 to 300;variable cnt_key:integer range 0 to 480;-仿真用下面这两条语句-variable cnt_scan:integer range 0 to 30;-variable cnt_key:integer range 0 to 24;beginif(reset_n='0')thencnt_scan:=0;cnt_key:
52、=0;elsif(rising_edge(clk)thenif(cnt_scan=cnt_scan'high)thencnt_scan:=0;elsecnt_scan:=cnt_scan+1;end if;if(cnt_key=cnt_key'high)thencnt_key:=0;elsecnt_key:=cnt_key+1;end if;if(cnt_scan>(cnt_scan'high/2)thenclk_scan<='1'elseclk_scan<='0'end if;if(cnt_key>(cnt_ke
53、y'high/2)thenclk_key<='1'elseclk_key<='0'end if;end if;end process;end abc;扫描模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity mnscan isport(clk_scan:in std_logic;scan:out std_logic_vector(4 downto 0);data:out
54、std_logic_vector(15 downto 0); dis_n:out std_logic_vector(6 downto 0); -不需要小数点(7位)key1,key2:in std_logic;reset_n:in std_logic);end mnscan;architecture abc of mnscan isconstant L_SZ:integer:=223;constant L_DZ:integer:=31;signal cnt:integer range 0 to L_DZ; -和点阵屏的列一样大signal n:integer range 0 to 7;-控制速
55、度signal flag_scan:std_logic;signal x:integer range 0 to L_SZ;-创建一个可以存储2唯数据的数据类型 array_2type array_2 is array(0 to L_SZ)of std_logic_vector(15 downto 0);constant ledsj:array_2:=("1111111111111111"),("0000001000000000"),("0000011000000000"),("0010001000000000");beginprocess(reset_n,clk_scan) -cnt计数及
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 共享乐器:音乐学习的新方式
- 2024年汽车制造电脑设备采购合同
- 数字经济视角下企业财务管理转型策略研究
- 形容领导讲话好的成语
- 曲柄摇杆机构双曲柄机构与双摇杆机构
- 公园改造项目环境和服务设施的游客需求研究-以广州市晓
- 骆驼祥子-(一)-剧本
- 防水材料在食品加工厂建设中的应用考核试卷
- 陶瓷工艺品的绿色制造与品牌推广策略实施案例考核试卷
- 镍钴冶炼厂生产设备安全管理规章制度考核试卷
- 高职建筑设计专业《建筑构造与识图》说课课件
- 《国珍产品介绍》
- 医院软式内镜清洗消毒技术规范
- 《高速铁路客运乘务实务(活页式)》全套教学课件
- 2024(部编版)道德与法治九年级上册 第二单元 民主与法治 单元测试(学生版+解析版)
- 医疗护理员基础理论知识考试试题题库及答案
- 2024年高考英语词汇表-带音标
- 垫底辣妹教育学思考(3篇模板)
- 框架结构设计国内外研究现状
- 创新人才认证(解决方案)考试题库(附答案)
- 新质生产力-讲解课件
评论
0/150
提交评论