已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
长沙理工大学硬件综合课程设计报告 章世浩 学 院 计通学院 专 业 班 级 学 号 学生姓名 指导老师 课程成绩 完成日期 2015年1月8日 课程设计任务书 计算机与通信工程 学院 专业课程名称计算机组成原理课程设计时间20142015学年第一学期1819周学生姓名指导老师题 目彩色led组跑马灯的设计与仿真主要内容:本课程设计要求设计一个彩色led组跑马灯,要求如下:1实现8个红色led的亮、灭、交错显示等,其显示如下 (1)复位时,8个灯全灭; (2)从左到右第一个开始亮,依次亮到最后一个; (3)从右到左第一个开始亮,依次亮到最后一个; (4)从中间亮到两边; (5)从两边亮到中间; 2随着跑马灯显示图案的变化,发出不同的音响声。要求:(1)要求能独立地运用vhdl语言、eda相关知识和max plus ii仿真软件,编制一个简单的课程设计。(2)学生按要求编写课程设计报告书,能正确阐述设计和实验结果。(3)通过课程设计培养学生严谨的科学态度和团队协作精神。(4)学生应抱着严谨认真的态度积极投入到课程设计过程中,认真查阅相应文献以及实现,给出个人分析、设计以及实现。应当提交的文件:(1)课程设计报告。(2)课程设计附件(源程序、各类图纸、实验数据、仿真截图等实证材料)。课程设计成绩评定学 院 计通学院 专 业 班 级 学 号 学生姓名 指导教师 完成日期 2015年1月8日 指导教师对学生在课程设计中的评价评分项目优良中及格不及格课程设计中的创造性成果学生掌握课程内容的程度课程设计完成情况课程设计动手能力文字表达学习态度规范要求课程设计论文的质量指导教师对课程设计的评定意见综合成绩 指导教师签字 年 月 日彩色led组跑马灯的设计与仿真学生姓名:* 指导老师:* 摘 要: 本设计是基于vhdl设计的一个彩色led组跑马灯,学习利用cpld控制彩色led跑马灯,本次设计基于eda使用vhdl语言设计和实现彩色led组跑马灯,彩色led组跑马灯具有多种工作模式,并对与不同工作模式,播放不同的音乐。通过时钟信号来设定工作模式,从而运行特定的彩灯效果,采用自顶向下的模块化设计。这次设计以vhdl语言和max+plus ii为工具,实现彩色led组跑马灯的设计。系统分模块进行分析和设计,系统给出相应的设计原理图和vhdl源程序,通过仿真实现预定功能。 关键词: 彩色led组跑马灯;eda;vhdl;max +plus;design and implementation color led marquee groupstudent name: * supervisor*abstract: this design is based on a set of colored led marquee vhdl design, learn to use cpld to control color led marquee, this design is based on the use of vhdl language eda design and implementation group color led marquee, color led marquee group with multiple operating modes , and with different modes, different music playback. by clock signals to set the operating mode, which runs a specific lantern effect, using top-down, modular design. the design of vhdl and max + plus ii as a tool to achieve metro automatic ticketing system. system analysis and design of the module, the system gives the corresponding design schematics and vhdl source code, to achieve the intended function through simulation.key words: color led marquee group; eda; vhdl; max +plus ;第 30 页 共 29 页 章世浩 彩色led组跑马灯的设计与仿真 目录1 引 言31.1 课题背景及意义31.2 设计目的41.3 设计意义42 设计的依据52.1 eda技术介绍52.2 vhdl语言介绍5(1) vhdl的简介5(2)vhdl语言的特点62.3 max+plus软件73 设计步骤83.1设计功能及分析83.2 系统总体框架结构83.3 max+plus ii应用与程序调试94硬件电路的设计与软件设计124.1集成分频器模块12(1)功能说明和设计12(2) 分频器vhdl程序编写12(3) 仿真结果124.2 32进制计数器模块13(1) 功能说明和设计13(2) 32进制计数器vhdl程序编写14(3) 仿真结果144.3彩灯控制模块14(1) 功能说明和设计14(2) 彩灯控制模块vhdl程序编写15(3) 仿真结果154.4 4选1选择器模块15(1) 功能说明和设计15(2) 4选1选择器模块vhdl程序编写16(3) 仿真结果164.5 4进制计数器模块16(1) 功能说明和设计16(2) 4进制计数器模块vhdl程序编写17(3)仿真结果175 系统结构及仿真185.1 系统模块建立185.2 波形输入建立195.3 波形仿真206 结束语24参 考 文 献25附录26附录一 集成分频模块vhdl代码26附录二 32进制计数器模块vhdl代码27附录三 彩灯控制模块vhdl代码27附录四 4选1选择器模块vhdl代码29附录五 4进制计数器模块vhdl代码291 引 言人类社会已进入到高度发达的信息化社会。信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。电子信息产品随着科学技术的进步,其电子器件和设计方法更新换代的速度日新月异。实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(eda,electronics design automation)技术,eda技术的发展和推广应用又极大地推动了电子信息产业的发展。为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,eda技术正逐渐成为不可缺少的一项先进技术和重要工具。目前,在国内电子技术教学和产业界的技术推广中已形成“eda热”,完全可以说,掌握eda技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。 eda技术在电子系统设计领域越来越普及,本设计主要利用vhdl语言在eda平台上设计一个彩色led组跑马灯,使其具有针对不同的信号来显示不同效果的跑马灯,并播放不同的音乐的功能。1.1 课题背景及意义随着eda1仿真技术的发展,数字系统的设计技术和设计工具发生了深刻的变化。利用硬件描述语言(vhdl)2对数字系统的硬件电路进行描述是eda的关键技术之一。vhdl语言是目前主流的硬件描述语言,它具有很强的电路描述和建模能力,具有与具体电路无关和与设计平台无关的特性,在语言易读性和层次化结构方面表现出强大的生命力和应用潜力。 随着科学的日益进步,我们对数字钟的需求也越来越大。因为人们也越来越忙,时刻都在受着时间的影响,我们。我们采用了先进的eda技术,max +plus工作平台和vhdl语言3,设计了多功能数字钟系统,并对系统进行了仿真验证。通过仿真及验证的结果分析,完全适应智能化发展要求。不但实现的报时定时各种的功能,大大提高了时间的准确度,而且提高了系统的先进性和可靠性。能实现控制器的系统编程。采用这种器件开发的数字系统其升级与改进非常方便。这一控制电路,结构简单、性能稳定、操作方便、抗干扰能力强。将它应用于校园与各地,稳定性高,准确性强。1.2 设计目的系统设计采用自顶向下的设计方法,使用简单的eda程序实现跑马灯显示效果设计。并且熟悉可编程逻辑器件的使用,通过制作来了解跑马灯控制系统。主要具有以下几点目的:1、熟练掌握vhdl文本输入设计方法。2、初步掌握vhdl语言中时序逻辑的设计实现。3、掌握原理图的制作和连线及模块的整合。4、熟练掌握根据波形仿真结果进行验证设计的过程。1.3 设计意义近年来,集成电路技术迅猛发展,特别是可编程逻辑器件的告诉发展,电子设计自动化eda以计算机为工具完成数字系统的逻辑综合、布局布线和设计仿真等工作。电路设计者只需要完成对系统功能的描述,就可以由计算机软件进行系统处理,最后得到设计结果,修改设计也比较方便,利用eda工具可以极大提高设计效率。利用硬件描述语言(vhdl)对数字系统的硬件电路进行描述是eda的关键技术之一。vhdl语言是目前主流的硬件描述语言,它具有很强的电路描述和建模能力,具有与具体电路无关和与设计平台无关的特性,在语言易读性和层次化结构方面表现出强大的生命力和应用潜力。我们采用了先进的eda技术,max +plus工作平台和vhdl语言,设计了彩色led组跑马灯,并对系统进行了仿真验证。通过仿真及验证的结果分析,判断设计的正确性。2 设计的依据现代电子设计技术的核心是eda技术。基于eda技术开发的实现三层电梯自动控制与目前主流的利用可编程逻辑控制器实现电梯控制紧密相连。硬件描述语言是eda技术的重要组成部分,vhdl是作为电子设计主流硬件的描述语言。使用vhdl语言进行程序的设计,在max +plus软件上对程序进行编译、仿真。在max +plus平台上的开发具有编程软件具有采自易学易懂的梯形图语言、控制灵活方便、抗干扰能力强、运行稳定可靠等优点。2.1 eda技术介绍eda是电子设计自动化(electronic design automation)的缩写,在20世纪90年代初从计算机辅助设计(cad)、计算机辅助制造(cam)、计算机辅助测试(cat)和计算机辅助工程(cae)的概念发展而来的。eda技术就是以计算机为工具,设计者在eda软件平台上,用硬件描述语言hdl完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作4。eda技术的出现,极大地提高了电路设计的效率和可靠性,减轻了设计者的劳动强度。利用eda工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出ic版图或pcb版图的整个过程的计算机上自动处理完成。2.2 vhdl语言介绍(1) vhdl的简介vhdl(very-high-speed integrated circuit hardwaredescription language),即超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。诞生于1982年。自ieee公布了vhdl的标准版本,ieee-1076(简称87版)之后,各eda公司相继推出了自己的vhdl设计环境,或宣布自己的设计工具可以和vhdl接口。此后vhdl在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,ieee对vhdl进行了修订,从更高的抽象层次和系统描述能力上扩展vhdl的内容,公布了新版本的vhdl,即ieee标准的1076-1993版本,(简称93版)。现在,vhdl和verilog作为ieee的工业标准硬件描述语言,又得到众多eda公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,vhdl于verilog语言将承担起大部分的数字系统设计任务。(2)vhdl语言的特点与其他硬件描述语言相比,vhdl具有以下特点5: a 功能强大、设计灵活vhdl具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。b 支持广泛、易于修改由于vhdl已经成为ieee标准所规范的硬件描述语言,目前大多数eda工具几乎都支持vhdl,这为vhdl的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用vhdl编写的源代码,因为vhdl易读和结构化,所以易于修改设计。c 强大的系统硬件描述能力vhdl具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,vhdl支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。d 独立于器件的设计、与工艺无关e 很强的移植能力,易于共享和复用vhdl是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。vhdl采用基于库(library)的设计方法,可以建立各种可再次利用的模块6。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用。2.3 max+plus软件max+plus(multiple array and programming logic user system)开发工具是美国altera 公司推出的一种eda 工具,具有灵活高效,使用便捷,易学易用的特点。使用max+plus软件,设计者无需精通器件内部的复杂结构,只需熟悉所用的设计输入工具,如硬件描述语言、原理图等进行输入,max+plus自动将设计转换成目标文件下载到器件中去。max+plus设计步骤:步骤1:为本项工程设计建立文件夹任何一项设计都是一项工程(project),都必须首先为此工程建立一个放置与此工程相关的文件的文件夹,此文件夹将被eda软件默认为工作库(work library)。一般不同的设计项目最好放在相应的文件夹中,注意,一个设计项目可以包含多个设计文件,文件夹名不能用中文,且不可带空格。步骤2:输入设计项目和存盘设计者将所设计的系统或电路以开发软件要求的某种形式表现出来,并送入计算机的过程称为设计输入。设计输入通常有以下几种方式。步骤3:将设计项目设置成工程文件为了使max+ plusii能对输入的设计项目按设计者的要求进行各项处理,必须将设计文件设置成当前project。步骤4:选择目标器件并编译这是器件设计中的核心环节。在设计处理过程中,编译软件将对设计输入文件进行逻辑化简、综合和优化,并适当地用一片或多片器件自动进行适配,最后产生编程用的编程文件。步骤5:时序仿真步骤6:建立元件步骤7:引脚锁定步骤8:编程下载3 设计步骤3.1设计功能及分析本系统主要具有以下两大点功能:1、实现8个红色led的亮、灭、交错显示等,其显示如下 (1)复位时,8个灯全灭;(2)从左到右第一个开始亮,依次亮到最后一个;(3)从右到左第一个开始亮,依次亮到最后一个;(4)从中间亮到两边;(5)从两边亮到中间; 2、随着彩灯显示图案的变化,发出不同的音响声。由上述的具有的功能可知,本系统主要需要五大模块组成,分别是集成分频模块、32进制计数器模块、彩灯控制模块、4选1选择器模块、4进制计数器模块。对与每个模块的具体功能介绍请看第四节。3.2 系统总体框架结构 这次的跑马灯设计采用的是分模块来完成的,包括分频器、计数器、选择器、彩灯控制器。其中彩灯控制器是用来输出不同的花样,彩灯控制器的输出则是用一个32进制的计数器来控制,如图3.1所示。扬声器的输出时用不同的频率来控制,所以用了一个集成分频器来使输入的频率被分为几种不同的频率,不同频率的选择性的输出则是用一个4选一的选择器来控制,如图3.2所示。图3.1跑马灯的输出原理方框图图3.2 扬声器输出原理方框图3.3 max+plus ii应用与程序调试 (1)首先在maxplus下建立一个工程目录,然后打开max +plus软件,其初始界面如图3.3所示:图 3.3 max +plus软件初始化界面(2)在工具栏中选择“新建”按钮。在选择输入路径时,选择“text editor file”以进行文本输入,如图3.4所示:图 3.4输入路径选择为文本输入(3) 在文本输入界面内进行程序输入,如图3.5所示:图 3.5程序输入界面(4) 输入完毕后,需要对程序进行保存。文件名和实体定义的符号必须保持一致,即文件名为flift。因为是使用vhdl语言,所以文件后缀名须改成vhd。 (5)保存以后,对程序进行编译。在编译前,需要把文件设置为顶层文件,或称工程文件project。选择菜单“file”“project”“set project to current file”,当前的文件即被指定。详见图3.7所示:图 3.7设置顶层文件 (6)在“max +plus”下拉按钮里选择“compiler”,对程序进行编译,此时,max +plus软件会对程序进行纠错等处理。当程序被确认无误以后会出现如下界面,如图3.8所示:图 3.8编译完成图(7)在编译完成以后,打开程序页面,选择“file”“edit symbol”,出现引脚图,如下图3.9所示:图 3.9引脚图4硬件电路的设计与软件设计4.1集成分频器模块(1)功能说明和设计设计要求显示不同的跑马灯的时候要伴随不同的音乐,所以设计分频器来用不同的频率控制不同的音乐输出。元器件如图4.1所示。模块说明:rst:输入信号 复位信号 用来复位集成分频器的输出使输出为“0”,及没有音乐输出。clk:输入信号 模块的功能即为分频输入的频率信号。clk_4、clk_6、clk_8、clk_10:输出信号 即为分频模块对输入信号clk的分频,分别为1/4分频输出、1/6分频输出、1/8分频输出、1/10分频输出。 图4.1 集成分频器(2) 分频器vhdl程序编写程序vhdl源代码请见附录一。(3) 仿真结果仿真结果如图4.2所示。由上述的功能分析可知,本模块主要是进行分频的。在仿真时,clk的时钟周期是100ns。当clk产生4个上升沿信号时,1/4分频将会输出一个高电平;当clk产生6个上升沿信号时,1/6分频将会输出一个高电平;当clk产生8个上升沿信号时,1/8分频将会输出一个高电平;当clk产生10个上升沿信号时,1/10分频将会输出一个高电平。图4.2中,在50ns时,a=1,b=1,c=1,d=1,各分频输出均为0;在150ns时,a=2,b=2,c=2,d=2,各分频输出均为0;在250ns时,a=3,b=3,c=3,d=3,各分频输出均为0;在350ns时,此时1/4分频器将会输出1,并且a=0,a=0,b=4,c=4,d=4,其余分频输出均为0;在450ns时,a=1,b=5,c=5,d=5,分频输出均为0;在550ns时,此时1/6分频器将会输出1,并且b=0,a=2,b=0,c=6,d=6,分频输出均为0;在650ns时,a=2,b=1,c=7,d=7,分频输出均为0;在750ns时,此时1/4分频器将会输出1,并且a=0,1/8分频器将会输出1,并且c=0,a=0,b=1,c=0,d=8,分频输出均为0;在850ns时,a=1,b=2,c=1,d=9,分频输出均为0;在950ns时,此时1/10分频器将会输出1,并且d=0,a=1,b=2,c=1,d=9,分频输出均为0;所以此仿真图的结果完全符合设计要求。图4.2 集成分频器仿真波形4.2 32进制计数器模块(1) 功能说明和设计32进制模块用来控制彩灯输出模块,即确定跑马灯控制器的不同的输出。元器件如图4.3所示。rst:输入信号 复位信号 用来复位32进制使其输出为“00000”。clk:输入信号 用来给模块提供工作频率。count_out4.0:输出信号 即为32进制计数器的输出。图4.3 32进制计数器(2) 32进制计数器vhdl程序编写程序vhdl源代码请见附录二。(3) 仿真结果仿真结果如图4.4所示。由上述的功能设计可以知道,本模块主要是在时钟信号产生上升沿时,输出为0到31的值。在本此仿真实验中,clk的时钟周期为50ns。所以在下图可以看到,在25ns时,产生一个上升沿信号,计数器输出1。在625ns时,产生一个上升沿信号,计数器输出13,即二进制的01101。所以本次仿真结果符合功能设计要求。 图4.4 32进制计数器仿真波形4.3彩灯控制模块(1) 功能说明和设计彩灯控制模块用来直接控制跑马灯的输出,使彩灯表现出不同的花样。元器件如图4.5所示。rst:输入信号 使彩灯控制模块的输出为“00000000”,即让彩灯无输出。input4.0:输入信号 不同的输入使彩灯控制模块有不同的输出即彩灯显示出不同的花样。output7.0:输出信号 直接与彩灯相连来控制彩 图4.5 彩灯控制模块(2) 彩灯控制模块vhdl程序编写程序vhdl源代码请见附录三。(3) 仿真结果仿真结果如图4.6所示。由上述的功能设计说明可知,本模块将对输入的信号input产生相应的输出信号,从而实现彩灯的控制和实现。如图4.6所示,在0ns200ns时,输入信号为00000,rst输入信号为0,此时输出信号output为10000000,sm为0000110,所以符合该程序的设计要求。在1.2us时间里,rst信号为1,即产生复位信号,此时输出均为图4 .6 跑马灯控制模块仿真波形4.4 4选1选择器模块(1) 功能说明和设计本模块的主要功能是对与输入的选择信号,选择对于的分频输入信号作为输出信号。即产生不同的音乐。元器件如图4.7所示。rst:输入信号 复位信号 使选择器的输出为“0”。a、b、c、d:输入信号 接分频器的输出。s1.0:输入信号 接4进制计数器的输出用来控制选择器的选择不同的输入选择不同的输出。y:输出信号 直接接扬声器即输出的是不同的频率来控制扬声器播放音乐。 图4.7 4选1选择器(2) 4选1选择器模块vhdl程序编写程序vhdl源代码请见附录四。(3) 仿真结果仿真结果如图4.8所示。由上述的功能设计可以知道,当输入片选信号是00时,则输出a的信号;当输入片选信号是01时,则输出b的信号;当输入片选信号是10时,则输出c的信号;当输入片选信号是11时,则输出d的信号;如图4.8可知,每50ns选择四个输入信号作为输出信号。所以每200ns完成一次a、b、c、d的选择。在150ns到200ns时,选择信号选择d作为输出信号,所以输出为1,由图可知,输出信号并没有马上输出而是有延迟,这是由于元器件之间的竞争产生的。图4.8 4选1选择器仿真波形4.5 4进制计数器模块(1) 功能说明和设计4进制计数器作为选择器的输入来控制选择器选择不同的频率作为输出控制扬声器工作。元器件如图4.9所示。clk:输入信号 来为计数器提供工作频率。rst:输入信号 复位信号 使计数器的输出为“00”。count_out:输出信号,输出选择信号,输出值有00,01,10,11。图4.9 4进制计数器(2) 4进制计数器模块vhdl程序编写程序vhdl源代码请见附录四。(3)仿真结果仿真结果如图4.10所示。由上述的功能设计可知,本模块主要是根据输入的时钟信号的上升沿产生计数输出。如图4.10所示,在0ns到250ns之间,每产生一个上升沿,计数器的输出就变化一次,所以在25ns到75ns之间,输出的是01;在75ns到125ns之间输出的是10;在125ns到175ns之间输出的是11;在175ns到225ns之间输出的是10;在225ns到300ns之间由于复位信号为有效电平,所以产生置位,输出为00;图4.10 4进制计数器仿真波形5 系统结构及仿真5.1 系统模块建立完成第四节的各个模块的编译之后,需要将各个模块整合到一个系统中,在本小节将其整合为彩色led跑马灯系统。(1) 建立图形编辑文件。通过“file”按钮,选择“graphic editor file”,详见如图5.1所示:图5.1 建立图形编辑文件(2) 新建图形编辑文件后,对文件进行保存。同样是使用相同的文件名ledtop,后缀名为gdf。(3) 双击图形编辑器,导入本系统的各个子模块,即集成分频器模块、32进制计数器模块、彩灯控制模块、4选1选择器模块、4进制计数器模块。并增加各个输入和输出端口。最后效果图如图5.2所示。图5.2 系统功能模块图(4) 编译本图形编辑文件。编译结果如图5.3所示。图5.3 图形编辑文件编辑结果图5.2 波形输入建立(1)编译完全通过后,新建波形编辑器进行设计仿真。通过“file”按钮,选择“waveform editor file”,详见如图5.4所示:图 5.4新建波形编辑器(2)新建波形编辑器后,对文件进行保存。同样是使用相同的文件名ledtop,后缀名为scf。(3)在编辑器的name 栏点击鼠标右键,选择“enter nodes from snf”选择添加需要观察的节点信号,包括系统输入,显示输出的节点,如图5.5所示:图 5.5添加节点信号 (4)通过编辑器左侧的一些快捷按钮对所加节点中的输入信号进行相关的赋值后,就可对程序进行仿真,观察输出信号,得出结论。如对时钟信号clk符默认值,如图5.6所示:图 5.6对clk信号赋值图(5)在进行仿真前,还需对仿真截止时间和最小单位时间进行一下调整。在“file”栏对截止时间“end time”设置为“800ns”,如图5.7所示:图 5.7 截止时间设置图(6)得出初始仿真图,如图5.8所示:图 5.8 初始仿真界面5.3 波形仿真在波形输入文件建立之后,首先设置下本系统的两个时钟输入,clk1的时钟周期为50ns,clk2的时钟周期为25ns。其余输入信号和仿真结果如图5.9所示。图 5.9系统仿真图从图5.9的仿真结果可知,在0ns到25ns时间内,32进制计算器模块的输出为00000,所以彩灯控制模块的output输出信号为10000000,sm的输出信号是0000110,在这过程中clk2只产生了一个上升沿信号,所以集成分频器的输出均为0,4进制计数器模块的输出为00,4选1选择器模块将选择1/10分频信号作为输出,即输出结果为0。在25ns到50ns之间,由于在25ns时,clk1有一个上升沿的时钟信号,所以32进制计算器模块的输出为00001,由于元器件之间的竞争冒险关系,彩灯控制模块的输出具有一定的延时,。彩灯控制模块的output输出信号为01000000,sm的输出信号是0000110,在这过程中clk2一共只产生了两个上升沿信号,所以集成分频器的输出均为0,4进制计数器模块的输出为00,4选1选择器模块将选择1/10分频信号作为输出,即输出结果为0,如图5.10所示。图5.10 25ns到100ns间仿真结果分析图在175ns到200ns之间,由于在175ns时,clk1有一个上升沿的时钟信号,所以32进制计算器模块的输出为00100,由于元器件之间的竞争冒险关系,彩灯控制模块的输出具有一定的延时,彩灯控制模块的output输出信号为00001000,sm的输出信号是0000110,由于在187.5ns时,clk2一共产生了8个上升沿信号,所以集成分频器的输出为0101,4进制计数器模块的输出在187.5ns之后由00变为01,4选1选择器模块将选择1/10分频信号作为输出,即输出结果为0,如图5.11所示。图5.11 175ns到200ns仿真结果分析图在200ns到225ns之间,由于在175ns时,clk1有一个上升沿的时钟信号,所以32进制计算器模块的输出为00100,由于元器件之间的竞争冒险关系,彩灯控制模块的输出具有一定的延时,彩灯控制模块的output输出信号为00001000,sm的输出信号是0000110,由于在187.5ns时,clk2一共产生了8个上升沿信号,所以集成分频器的输出为0101,4进制计数器模块的输出为01,4选1选择器模块将选择1/4分频信号作为输出,即输出结果为1,如图5.12所示。图5.12 200ns到225ns仿真结果分析图在325ns到425ns之间,rst信号有效,即高电平,此时系统处于重置状态,所以模块均处于重置。所以此时彩灯控制模块的output输出信号为00000000,sm的输出信号是0000000,4进制计数器模块的输出为00,4选1选择器模块输出0,如图5.13所示。图5.13 置位信号有效时仿真结果图整个系统就是各个分模块组成来实现最后的彩灯控制功能,系统又两个时钟来控制一个是控制32进制计数器即控制彩灯控制模块来实现彩灯的不同输出,另一个时钟为分频器的输入来进行分频处理,最后用来控制扬声器发出不同的音乐,具体分频处理的时钟的频率比实现彩灯控制的时钟频率要高。6 结束语 两周的课程设计结束了,在此次课程设计中,我收获了许多,不仅在知识学习方面,而且在动手能力方面、团结合作能力等方面都有了一定的成就。 首先,在知识学习方面,虽然我们开始有在计算机组成原理这一门课程中接触过vhdl这一门语言,但是我们都还不是很了解,只知道它由实体、结构体组成,其余的就不是很了解,但是在此次课程设计中,我有了比较详细的了解,基本能够写出一个比较完整的程序。这两周的自学中,我也体会到了自学得快乐。在这次设计中我们收获了很多,首先最直接的收获就是我们巩固了这门课程所学过的知识,把它运用到了实践当中,并且学到了很多在书本和那个所没有学到的知识,通过查阅相关资料进一步加深了对eda的了。总的来说,通过这次课程设计不仅锻炼了我的动手和动脑能力,也使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,要把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。在我们的共同努力和指导老师的指引下我们圆满的完成了彩灯控制器的设计,实现了设计目的。参 考 文 献1汉泽西著,eda技术及其应用,北京航空航天大学出版社,20042金西著,vhdl与复杂数字系统设计,西安电子科技大学出版社,20033姜雪松,刘东升著,硬件描述语言vhdl教程m,西安交通大学出版社,20044潘松,黄继业著,eda技术与vhdl(第3版),清华大学出版社,20095孙延鹏,张芝贤著,vhdl与可编程逻辑器件应用m,航空工业出版社,20066姜雪松, 吴钰淳, 王鹰著,vhdl设计实例与仿真,北京机械工业出版社 20077黄沛昱著,eda技术与vhdl设计实验指导,西安电子科技大学出版社,20128侯伯亨,刘恺等著,vhdl硬件描述语言与数字逻辑电路设计,西安电子科技大学出版社 20099李欣,张海燕著,vhdl数字系统设计,科学出版社,200910张丕状,李兆光著,基于vhdl的cpld/fpga开发与应用,国防工业出版社,2009附录附录一 集成分频模块vhdl代码library ieee;use ieee.std_logic_1164.all; - ieee库使用声明entity fenpinqi is - 实体端口声明port(clk,rst: in std_logic; - 类型的输入端口clk_10,clk_4,clk_6,clk_8: out std_logic); - 输出口end fenpinqi;architecture cd of fenpinqi is-结构体功能描述语句beginp1:process(clk,rst)-进程语句variable a:integer range 0 to 20;-定义一个整型变量,取值范围是1到20beginif rst=1 then-有复位信号时clk_4=3 then a:=0; -当a大于等于3时,则a等于0 clk_4=1;-1/4分频输出1elsea:=a+1; -否则a等于a加1clk_4=0;-1/4分频输出0end if;end if;end if;end process p1;p2:process(clk,rst)variable b:integer range 0 to 20; -定义一个整型变量,取值范围是1到20beginif rst=1 then-有复位信号时clk_6=5 then-当b大于等于5时,则b等于0b:=0;clk_6=1; -1/6分频输出1elseb:=b+1;clk_6=0; -1/6分频输出0end if;end if;end if;end process p2;p3:process(clk,rst)variable c:integer range 0 to 20; -定义一个整型变量,取值范围是1到20beginif rst=1 then-有复位信号时clk_8=7 thenc:=0;clk_8=1; -1/8分频输出1elsec:=c+1;clk_8=0;end if;end if;end if;end process p3;-关闭进程p4:process(clk,rst)-开启另外一个进程variable d:integer range 0 to 20; -定义一个整型变量,取值范围是1到20begin if rst=1 then-有复位信号时clk_10=9 thend:=0;clk_10=1; -1/10分频输出1elsed:=d+1;clk_10=0;end if;end if;end if;end process p4;end cd; -关闭进程附录二 32进制计数器模块vhdl代码library ieee;use ieee.std_logic_1164.all; - ieee库使用声明entity counter_32 is-实体端口声明port(clk,rst: in std_logic; -声明clk,rst是标准逻辑位类型的输入端口count_out: out integer range 0 to 31);-声明count_out是整型类型的输出end counter_32;architecture a of counter_32 is begin process (rst,clk)variable temp:integer range 0 to 32; -定义temp为变量,并设置取值范围beginif rst=1 then-条件选择语句,复位信号有效temp:=0;-给变量temp赋值为0 elsif (clkevent and clk=1) then-产生一个上升沿temp:=temp+1;-temp自增if(temp=32) then-当temp为32时,赋值为0temp:=0;end if;end if;count_out=temp;-将temp变量的值赋给信号count_outend process;end a;附录三 彩灯控制模块vhdl代码library ieee;use ieee.std_logic_1164.all; - ieee库使用声明entity caideng is - 实体端口声明port(input: ininteger range 0 to 31;-声明input是整型输入端口rst:in std_logic; -声明rst是标准逻辑位类型的输入端口output: out std_logic_vector(7 downto 0)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论