基于vhdl乐曲发生器的设计说明书.doc_第1页
基于vhdl乐曲发生器的设计说明书.doc_第2页
基于vhdl乐曲发生器的设计说明书.doc_第3页
基于vhdl乐曲发生器的设计说明书.doc_第4页
基于vhdl乐曲发生器的设计说明书.doc_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

摘 要 随着超大规模集成电路的发展,随着计算机已经深入生活中的每一个领域,人们的生活中已经有越来越多的自动化机器,这些机器给人类的生活带来的翻天覆地的变化,提供了巨大无比的方便。于是自动化设计技术应运而生,其中VHDL自动化设计语言是一门非常好用的语言。本设计是本着简单、方便而不乏趣味性和实用性的原则设计出的一个自动乐曲发生器,是所有能自动播放音乐机器的核心蓝本,MP3,随身听等现代音乐产品都是建立在此设计的基础之上的。因此此设计是非常重要而有意义的。本设计不仅具有自动播放音乐的功能,即播放已经存入的固定乐曲,也能够通过按键进行简单乐曲的演奏。本设计是基于VHDL实现的,大体可以分为4个部分,分别是:音调发生器、音调编码器、手动自动选择及数控分频器。音调发生器主要是产生音调的部分,由于此设计比较简单,所以音调也不是很丰富;音调编码器主要是将人们可以看懂的音乐编码翻译成机器能看懂的数字编码,以实现透明服务;手动自动选择主要是用来为使用者提供手动演奏或自动播放选择服务的;数控分频器是用来将输入端的高频率信号处理成合适的输出信号。四个模块综合起来就成了今天我设计的自动乐曲发生器。 我的目标是此设计能演奏出我喜欢的月光曲。关键词:自动化;乐曲发生器;VHDL;数字电路 ABSTRACT With the development of VLSI and the computer being used widely in every area of daily life, there are more and more automated machines in peoples life that change peoples life greatly and provide an immense convenience. Automated design techniques have emerged, and Automatic VHDL design language is a very useful language. This design is to be simple, convenient and no shortage of interesting and practical that it is the core blueprint of most automatic music player such as MP3 and WalkMan. As a result, the design is so important and meaningful. The design not only has the ability to play automatically, but also can be used to play by us through clicking the keyboard. The design is based on VHDL containing 4 main parts that are Tone Generator, Tone Encoder, Manual Automatic selection, and NC divider. Tone Generator is to generate tone. There are no many kind tones because that the design is a little simple. Tone encoder will translates the music codes that people can understand into digital code can be read by machines. The Manual Automatic selection part provides the two options for users. NC divider will handle the input high frequency signal into the appropriate output signal. Put the four parts together, we get the Automatic Music Player. My goal is that this design can play my favorite song- MoonLight.Keywords: Automation;Play a musical instrument;VHDL;Digital circuit目录第一章 引 言51.1 自动乐曲发生器概述61.2 本设计任务和主要内容6第二章 VHDL及FPGA/CPLD简介82.1 VHDL的简介82.2 FPGA/CPLD简介9第三章 基于VHDL的自动乐曲发生器的设计过程113.1原理描述113.1.1音名与频率的关系113.1.2可变分频器113.1.3节拍发生器原理133.2乐曲演奏电路各模块设计133.3乐曲演奏电路的子结构133.3.1 音调发生器模块133.3.2音调编码器电路模块153.3.3 手动自动选择模块173.3.4 数控分频器模块193.4顶层原理图及仿真223.4.1 顶层原理图223.4.2 顶层原理仿真图23第四章 总结24致 谢25参考文献26附 录27第一章 引 言电子设计自动化EDA(Electronic Design Automation)是指利用计算机完成电子的设计。EDA技术是以计算机和微电子技术为先导,汇集了计算机图形学、拓扑、逻辑学、微电子工艺与结构学和计算机数学等等多种计算机应用学科最新成果的先进技术。EDA工具的发展经历了两个阶段:物理工具和逻辑工具。现在EDA和系统设计工具正逐渐被理解成一个整体的概念:电子系统设计自动化。物理工具用来完成设计中的实际物理问题,如芯片布局、印制电路板布线等;逻辑工具是基于网表、布尔逻辑、传输时序等概念,首先由原理图编辑器或硬件描述语言进行设计输入,然后利用EDA系统完成综合、仿真、优化等过程,最后生成物理工具可以接受的网表或VHDL,Verilog-HDL的结构化描述。现在常见的EDA工具有编辑器、仿真器、检查分析工具、优化综合工具等。 本次毕业设计是利用EDA设计一个简单的乐曲演奏器,可通过按键输入来控制音响声音 ,演奏时可以通过按键选择是手动演奏还是自动演奏,手动演奏是通过按键进行简易乐曲的演奏,自动演奏则是演奏已存入的固定乐曲。1.1 自动乐曲发生器概述音乐是人们生活中必不可少的元素,音乐给人类带来了无法比拟的艺术享受。17世纪之前,人们如果要听音乐只有2个途径:一个是自己演奏,还有一个是找专门以演奏音乐谋生的人演奏。无论是哪一种途径,都很麻烦。随着工业革命到来,自动化技术开始发展,直到今天,人们走到任何一个街道上都可以听到各种各样的音乐,这些音乐都是通过机器自动播放的,这种机器就是自动乐曲发生器。自动乐曲发生器无疑给人们的生活带来了很多欢笑和快乐。所以我们有必要去了解和实现一些简单的自动乐曲发生器。1.2 本设计任务和主要内容1基本要求自动演奏已存入的固定乐曲。2主要性能指标播放速度:每个节拍长定为0.25s。音阶种类:一共有16中音阶,包含最基本8的音谱。音阶精度:利用音乐的十二平均率计算得到各音阶。3 扩展功能 演奏时可以通过按键选择是手动演奏还是自动演奏,手动演奏是通过按键进行简易乐曲的演奏。第二章 VHDL及FPGA/CPLD简介2.1 VHDL的简介VHDL是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。VHDL的英文全写是:VHSI(Very High Speed Integrated Circuit)Hardware Description Language.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点 。与其他硬件描述语言相比,VHDL具有以下特点:(1)功能强大、设计灵活。VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言虽不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。(2)支持广泛、易于修改。由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。(3)强大的系统硬件描述能力。VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。(4)独立于器件的设计、与工艺无关。设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。(5)很强的移植能力,易于共享和复用。VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。目前有多种EDA工具支持采用VHDL进行电路综合、仿真以及实现。一些可编程器件生产商将使用VHDL进行电路设计所需的多种EDA工具集成为统一的开发平台提供给用户,进行针对本公司可编程器件产品的开发,从而使整个设计流程更加简捷和易于使用。目前比较常见的是Altera公司的MaxPlus II 和Xilinx 公司的ISE开发平台。2.2 FPGA/CPLD简介 FPGA和CPLD都是高密度现场可编程逻辑芯片,都能够将大量的逻辑功能集成于一个单片集成电路中,其集成度已发展到现在的几百万门。复杂可编程逻辑器件CPLD是由PAL ( Programmable Array Logic,可编程数组逻辑)或GAL ( Generic Array Logic,通用数组逻辑)发展而来的。它采用全局金属互连导线,因而具有较大的延时可预测性,易于控制时序逻辑;但功耗比较大。现场可编程门阵列(FPGA)是由掩膜可编程门阵列(MPGA)和可编程逻辑器件二者演变而来的,并将它们的特性结合在一起,因此FPGA既有门阵列的高逻辑密度和通用性,又有可编程逻辑器件的用户可编程特性。FPGA通常由布线资源分隔的可编程逻辑单元(或宏单元)构成数组,又由可编程I/O单元围绕数组构成整个芯片。其内部资源是分段互联的,因而延时不可预测,只有编程完毕后才能实际测量。CPLD和FPGA建立内部可编程逻辑连接关系的编程技术有三种:基于反熔丝技术的器件只允许对器件编程一次,编程后不能修改。其优点是集成度、工作频率和可靠性都很高,适用于电磁辐射干扰较强的恶劣环境。基于EEPROM内存技术的可编程逻辑芯片能够重复编程100次以上,系统掉电后编程信息也不会丢失。编程方法分为在编程器上编程和用下载电缆编程。用下载电缆编程的器件,只要先将器件装焊在印刷电路板上,通过PC, SUN工作站、ATE(自动测试仪)或嵌入式微处理器系统,就能产生编程所用的标准5V, 3.3V或2.5V逻辑电平信号,也称为ISP ( In System Programmable)方式编程,其调试和维修也很方便。基于SRAM技术的器件编程数据存储于器件的RAM区中,使之具有用户设计的功能。在系统不加电时,编程数据存储在EPROM、硬盘、或软盘中。系统加电时将这些编程数据实时写入可编程器件,从而实现板级或系统级的动态配置。第三章 基于VHDL的自动乐曲发生器的设计过程3.1原理描述3.1.1音名与频率的关系根据声乐知识,产生音乐的两个因素是音乐频率的持续时间,音乐的十二平均率规定,每两个八音度之间的频率相差一倍,在两个八音度之间,又可分为12个半音。每两个半音的频率比为4。另外,音名A(乐谱中的低音6)的频率为440HZ,音名B到C之间,E到F之间为半音,其余为全音。由此可以计算出乐谱中从低音1到高音1之间每个音名的频率如图2-1-1所示:表3-1 简谱中的音名与频率的关系音名频率(Hz)音名频率(Hz)音名频率(Hz)低音1261.63中音1523.25高音11046.50低音2293.67中音2587.33高音21174.66低音3329.63中音3659.25高音31381.51低音4349.23中音4698.46高音41396.92低音5391.99中音5783.99高音51567.98低音6440中音6880高音61760低音7439.88中音7987.76高音71975.523.1.2可变分频器(1)基准频率的选取各音名所对应的频率可由一频率较高的基准频率进行整数分频得到,所以实际产生各音名频率为近似的整数值。这是由于音阶频率多为非整数,而分频系数又不能为小数,故必须将得到的分频系数四舍五入取整,若基准频率过低,则由于分频系数过小,四舍五入取整后的误差较大,若基准频率过高,虽然误码差较小,但分频结构将变大,实际的设计应综合考虑两方面的因素,在尽量减小频率差的前提下取舍合适的基准频率。本次设计选择12MHz作为基准频率。(2)分频系数A、公用二进制的计数容量N及初始值的选取D1、分频系数的选取 首先将12MHz的基准频率进行12分频,得到1MHz的基准频率,分频系数A1MHz音名频率,此分频系数可由计数器实现。但若不加处理语句,其分频后的信号将不是对称方波。而占空比很小的方波很难使扬声器有效地发出声响。为得到对称方波,可将分频系数A分解为:分频系数A=分频系数n2。即先进行分频系数n的分频,得到不对称方波,然后再2分频得到对称方波。2、公用二进制的计数容量N的选取n分频可由n进制计数器实现。n进制计数器可用复位法或置位法实现,由于加载初始值d的置位法可有效地减少设计所占用的可编程逻辑器件资源,因此,此次设计采用置位法。低音1的分频数n为最大,其值为1275,应取公用二进制计数器的计数容量N大与“最大分频系数n”,故本次设计的公用二进制计数器应该设计为十一位二进制加法计数器,其计数最大容量为2048,计数的最大值N为2047,可满足本次设计中所有音名对音频系数的要求。3、初始值的选取D初始值D = 计数最大值N - 分频系数n此次设计中应用的各音名对应的分频系数值及初始值如表所示:表3-2各音名对应的分频系数值及初始值音符初始值对应音谱区别高中低音02047001773102912203103630411164051197506129060713727081410119148021101542311216225115172812(3)月光的音符谱为:3;3;3;3;1;1;1;1;5;5;5;5;6;6;6;6;6;6;6;6;5;5;5;5;2;2;2;2;4;4;4;4;1;1;1;1;2;2;2;2;4;4;4;4;1;1;1;1;2;2;2;2;4;4;4;4;7;7;7;7;3;3;3;3;03.1.3节拍发生器原理该演奏电路的最小节拍为1拍,将一拍的时长定为0.25s,则只需要再提供一个4Hz的时钟频率即可产生一拍的时长。为了能达到演奏时能循环进行,则需设置一个时长计数器,当乐曲演奏完时,保证能自动从头开始演奏。3.2乐曲演奏电路各模块设计本次设计乐曲演奏电路结构方框图如图3-1所示: 基准时钟12MHz模式选择 auto手动输入FPGA时钟电路数控分频器电路音乐节拍产生电路音调编码电路4Hz12MHz扬声器数码管 图3-1 乐曲演奏电路结构方框图 3.3乐曲演奏电路的子结构顶层结构所包含的模块分别有音调发生器(ydfsq)模块、音调编码器(ydbmq)模块、手动自动选择(bmux)模块及数控分频器(skfpq)模块。3.3.1 音调发生器模块1、音调发生器模块在此模块中设置了一个8位二进制计数器(计数最大值为64),这个计数器的计数频率选为4Hz,即每一计数值的停留时间为0.25s,恰好为当全音符设为1s时,四四拍的4分音符的持续时间。例如,ydfsq在以下的VHDL逻辑描述中,“月光”乐曲的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即为1s时间,相应地所对应“3”音符分频预置数为1036在skfpq的输入端停留了1s。随着notetabs中的计数器按4Hz的时钟频率做加法计数时,乐谱逐次被选取,“月光”乐曲就开始自然连续而且循环地演奏起来。音调发生器模块VHDL源程序如下:library ieee;use ieee.std_logic_1164.all; -库的声明entity ydfsq isport(clk:in std_logic;toneindex:out integer range 0 to 15);end;architecture bhv of ydfsq issignal counter:integer range 0 to 63; -读取音符谱中的音符beginprocess(clk,counter)begin if counter=63 thencounter=0; elsif clkevent and clk=1 then countertoneindextoneindextoneindextoneindextoneindextoneindextoneindexNULL;end case;end process;end;2、音调发生器模块的仿真图图3-2 音调发生器模块的仿真波形图通过仿真图可以清楚的看到,时钟clk由0开始计数,每计一次数输出toneindex的值随之发生一定的变化,只不过根据乐谱的不同,输出的变化也不尽相同。例如在本次设计中,自第4个时钟上升沿来临到第7个时钟上升沿,输出toneindex “1”。于是根据乐谱的不同就输出不同的音符,作为音调编码器的输入。然后把输出toneindex输入到音调编码器模块,进行下一步编码工作。于是,由仿真图可以知道本模块输出的即为演奏音乐的音符谱,说明该程序正确,可以生成逻辑器件。3、音调发生器模块生成的逻辑器件图3-3 音调发生器电路模块生成器件3.3.2音调编码器电路模块1、音调编码器模块该编码模块的作用为将输入的音符数据翻译为音乐产生模块的所需要的分频系数,并且显示音符的数字码型和高音阶,通过对照图2-1-2各音名对应的分频系数值及初始值,根据输入得到初始值,从而得到分频系数以便进行分频,得到所需的频率。音调编码器模块的VHDL源程序:library ieee;use ieee.std_logic_1164.all;entity ydbmq isport(index:in integer range 0 to 15;code:out integer range 0 to 15;code1:out integer range 0 to 15;tone:out integer range 0 to 2047);end;architecture bhv of ydbmq isbeginprocess(index)begin -为个音符赋初始值以便进行分频case index iswhen 0=tone=2047;code=0;code1tone=773;code=1;code1tone=912;code=2;code1tone=1036;code=3;code1tone=1116;code=4;code1tone=1197;code=5;code1tone=1290;code=6;code1tone=1372;code=7;code1tone=1410;code=1;code1tone=1480;code=2;code1tone=1542;code=3;code1tone=1622;code=5;code1tone=1728;code=1;code1NULL;end case;end process;end ;2、 音调编码器模块的仿真图图3-4 音调编码器模块的仿真波形图在此程序中index为音乐节拍产生模块输出的音符数据,经过翻译后将tone输出到数控分频模块为其提供分频系数的初始值,code为数码管显示的字符数,应用模式5,所以直接输出音符的二进制值,code1为高音阶指示信号,当code1为是说明输出为高音阶的音符。通过仿真图可以清楚地看到结果。3、 音调编码器模块生成的逻辑器件图3-3-4音调编码器模块生成的逻辑器件图3-5音调编码器模块生成的逻辑器件3.3.3 手动自动选择模块1、手动自动选择模块根据设计的要求,该简易乐曲演奏器能实现手动或自动演奏乐曲的功能。于是,可通过一个按键cs来进行自动与手动的选择,当cs按下时,乐曲自动演奏,其他情况下均为手动演奏乐曲,即可以通过按下其他的按键(与cs相连的按键除外)来控制不同的音符。与此同时,还需要一个复位信号rst来控制该演奏器是否工作,当rst为1时,停止演奏,为0时,可以演奏。以上提到的手动与自动的选择只能在rst为0时有效。手动自动选择模块的VHDL源程序:library ieee;use ieee.std_logic_1164.all;entity bmux isport(d1,d2:in integer range 0 to 15;cs,rst:in std_logic;q:out integer range 0 to 15); end;architecture bhv of bmux isbegin process(cs,rst)beginif rst=1 then -复位时输出为0 qqqq=d1;end case;end if;end process;end;2、 手动自动选择模块的仿真图图3-6手动自动选择模块的仿真波形图此仿真图中输入cs代表手动自动演奏的选择端,输入rst代表整体复位端,输入d1、d2分别代表手动和自动演奏的音符,q为输出端,由此仿真图可清楚的看到当rst=1时,不论选择的是手动还是自动,输出都为零,达到了整体复位的功能;当rst=0且cs=1时,自动演奏乐曲,因为q与d2的值相同;当rst=0且cs=0时,手动演奏乐曲,因为这时的q与d1的值相同,从而也达到了演奏方式选择的功能。3、手动自动选择模块生成的逻辑器件 图3-7手动自动选择模块生成的逻辑器件3.3.4 数控分频器模块1、数控分频器模块的功能该模块的clk端输入一个具有较高频率(本实验为12MHz)的信号,通过skfpq分频后由spkout输出。由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲信号,为了便于驱动喇叭,需另加一个D触发器均衡其占空比,也即作二分频处理。skfpq对clk输入信号的分频比由11位预置数tone10.0决定。spkout的输出频率将决定每一音符的音调,这样分频计数器的预置数tone10.0与spkout的输出频率就有了对应关系。例如在ydbmq模块中取tone10.0=1116,作为发音符为“3”音的信号频率。数控分频器模块的VHDL源程序:library ieee;use ieee.std_logic_1164.all;entity skfpq isport(clk:in std_logic;tone:in integer range 0 to 2047;spks:out std_logic);end;architecture bhv of issignal preclk:std_logic;signal fullspks:std_logic;begin process(clk)variable count4:integer range 0 to 15;begin preclk11 then -将基准频率进行12分频preclk=1;count4:=0;elsif clkevent and clk=1 then count4:=count4+1;end if;end process;process(preclk,tone)variable count11:integer range 0 to 2047;begin if preclkevent and preclk=1 then -按分频系数进行分频 if count11=2047 thencount11:=tone;fullspks=1; else count11:=count11+1;fullspks=0; end if;end if;end process;process(fullspks)variable count2:std_logic;beginif fullspksevent and fullspks=1 thencount2:=not count2; if count2=1 then spks=1; elsespks=0; end if;end if;end process;end;2、数控分频器模块的仿真图图3-8数控分频器模块的仿真图在此仿真图中,输入clk是一个频率较大的时钟信号,输入tone代表着某个音符的分频初始值,输出spks则代表将输入clk先经过12次分频,再经过(预置数终值2048-tone)次分频,最终再进行二分频处理,而这个信号的频率就是我们需要演奏的音谱的频率,根据频率的不同,从而能通过喇叭听到不同的声音,实现音乐的播放。3、 数控分频器模块生成的逻辑器件图3-9数控分频器模块逻辑器件3.4顶层原理图及仿真3.4.1 顶层原理图顶层原理图,如图3-10所示:图3-10 顶层模块原理图 利用EDA工具提供的原理图的方式进行输入,原理图输入方法比较容易掌握,而且直观方便,根据前几次设计的模块及生成的逻辑器件可以很方便地把各个子模块所生成的逻辑器件组合起来,即将各个子模块之间的输入输出端、子模块与整体电路之间的输入输出端进行正确的硬件连接,进行编译、下载,从而实现整体功能。它将音调发生器(ydfsq)模块、音调编码器(ydbmq)模块、手动自动选择(bmux)模块及数控分频器(skfpq)模块连接起来。3.4.2 顶层原理仿真图图3-11顶层模块仿真图 通过仿真波形图可以看到,输入端rst为复位端,当其值为1时,输出端均为0,cs为手动、自动选择端,cs为1时手动演奏即输出端与d0的值相同,cs为0时自动演奏即输出端与d1的值相同,也就是演奏已存入的固定乐曲;与此同时进行手动演奏和自动演奏时,数码管上即yinf和gdyin的输出同时能显示出音符的数和高低音的种类。从仿真图中得知所设计的原理图符合本设计要求,可以进行下载。第四章 总结过本次毕业设计,从实际应用方面深刻体会了VHDL设计的优势,通过强大的EDA工具和硬件描述语言使演奏电路很易实现。并且通过此次设计让我们把课本中的知识系统的联系起来,更加体会到模块式设计的方法所带来的方便和明了化。通过模块式的方法,可以将复杂的总程序分成几个模块各自分工执行,独立工作互不干扰。然后通过原理图将各个模块直接相连,或者用元件例化的方式,用VHDL语言进行描述,达到了统一化管理各个模块的作用。通过查找资料,与同学交流增强了我们自主学习的能力;了解到了声音音谱的发生规律,信号的频率与声音的关系,并且通过对基准频率的分频,来生成不同的声谱。从设计方面得知,在进行设计时,应首先对各方面的资料进行综合,在基本原理的范围内进行模块式的分解和综合,最后达到设计的需求。这次设计使我对quartus的运用更加灵活,熟悉了对该软件从工程建立到程序下载执行各个步骤的操作,对以前学习上的不足得到了补充。总之,这次设计让我们学到了很多知识,为我们以后的学习奠定了基础。致 谢弹指一挥间,大学生活已经快要接近尾声。当自己怀着忐忑不安的心情完成这篇毕业论文的时候,自己也从四年前的懵懂变成了现在的成熟。在此论文完成期间我感触很大,通过毕业设计增强对VHDL语言及可编程逻辑器件的了解和应用,以及复习巩固EDA知识,也明白了团队合作的重要性,冥冥之中也增强了同学之间的友谊。本课题在设计过程中得到陈彬老师的悉心指导。陈老师多次询问设计进程,并为我指点迷津,帮助我开拓设计思路,精心点拨、热忱鼓励。陈老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,深深地感染和激励着我,虽历时几个月,却给以终生受益无穷之道。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利的完成,有多少可敬的师长、同学、朋友给了我无言的帮助,正是由于你们的帮助和支持,我才有信心克服一个一个的困难和疑惑,是你们让我的毕业设计变得生动而有意义。最后感谢四川理工学院各个课程老师四年来对我的教育培养。你们悉心指导我的理论学习与实践研究让我受益无穷。此外,我还要对在这次设计中帮助和支持我的同学,表示感谢! 舒 立 2012年6月参考文献1.Voknei A.Pedroni.VHDL数字电路设计教程.电子工业出版社,2008.52.潘松,黄继业.EDA技术实用教程(第二版).科学出版社,2005.23.焦素敏.EDA应用技术.清华大学出版社,2002.44.徐向民.数字系统设计及VHDL实践.机械工业出版社,2007.105.刘江海.EDA技术毕业设计.华中科技大学出版社,2009.5附 录-音调发生器模块library ieee;use ieee.std_logic_1164.all; -库的声明entity ydfsq isport(clk:in std_logic;toneindex:out integer range 0 to 15);end;architecture bhv of ydfsq issignal counter:integer range 0 to 63; -读取音符谱中的音符beginprocess(clk,counter)begin if counter=63 thencounter=0; elsif clkevent and clk=1 then countertoneindextoneindextoneindextoneindextoneindextoneindextoneindexNULL;end case;end process;end;-音调编码器模块library ieee;use ieee.std_logic_1164.all;entity ydbmq isport(index:in integer range 0 to 15;code:out integer range 0 to 15;code1:out integer range 0 to 15;tone:out integer range 0 to 2047);end;architecture bhv of ydbmq isbeginprocess(index)begin -为个音符赋初始值以便进行分频case index iswhen 0=tone=2047;code=0;code1tone=773;code=1;code1tone=912;code=2;code1tone=1036;code=3;code1tone=1116;code=4;code1tone=1197;code=5;code1tone=1290;code=6;code1tone=1372;code=7;code1tone=1410;code=1;code1tone=1480;code=2;code1tone=1542;code=3;code1tone=1622;code=5;code1tone=1728;code=1;code1NULL;end case;end process;end ;-手动自动选择模块library ieee;use ieee.std_logic_1164.all;entity bmux isport(d1,d2:in integer range 0 to 15;cs,rst:in std_logic;q:out integer range 0 to 15); end;architecture bhv of bmux isbegin process(cs,rst)beginif rst=1 then -复位时输出为0 qqqq=d1;end case;end if;end process;end;-数控分频器模块library ieee;use ieee.std_logic_1164.all;entity skfpq isport(clk:in std_logic;tone:in integer range 0 to 2047;spks:out std_logic);end;architecture bhv of issignal preclk:std_logic;signal fullspks:std_logic;begin process(clk)variable count4:integer range 0 to 15;begin preclk11 then -将基准频率进行12分频preclk=1;count4:=0;elsif clkevent and clk=1 then count4:=count4+1;end if;end process;process(preclk,tone)variable count11:integer range 0 to 2047;begin if preclkevent and preclk=1 then -按分频系数进行分频 if count11=2047 thencount11:=tone;fullspks=1; else count11:=count11+1;fullspks=0; end if;end if;end process;process(fullspks)variable count2:std_logic;beginif fullspksevent and fullspks=1 thencount2:=not count2; if count2=1 then spks=1; elsespks=0; end if;end if;end process;end; 39大学本科生毕业设计(论文)撰写规范本科生毕业设计(论文)是学生在毕业前提交的一份具有一定研究价值和实用价值的学术资料。它既是本科学生开始从事工程设计、科学实验和科学研究的初步尝试,也是学生在教师的指导下,对所进行研

温馨提示

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

评论

0/150

提交评论