资源预览内容
第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
第9页 / 共23页
第10页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
EDA课程设计音乐播放器一、前言1、课程的目的与任务 EDA课程设计(注:EDA即电子设计自动化,Electronics Design Automation)是继模拟电子技术基础、数字电子技术基础、电子技术基础实验课程后,电气类、自控类和电子类等专业学生在电子技术实验技能方面综合性质的实验训练课程,是电子技术基础的一个部分,其目的和任务是通过一周的时间,让学生掌握EDA的基本方法,熟悉一种EDA软件(MAXPLUS2),并能利用EDA软件设计一个电子技术综合问题,并在实验板上成功下载,为以后进行工程实际问题的研究打下设计基础。2、课程的基本要求1、 通过课程设计使学生能熟练掌握一种EDA软件(MAXPLUS2)的使用方法,能熟练进行设计输入、编译、管脚分配、下载等过程。2、 通过课程设计使学生能利用EDA软件(MAXPLUS2)进行至少一个电子技术综合问题的设计(内容可由老师指定或自由选择),设计输入可采用图形输入法或AHDL硬件描述语言输入法。3、 通过课程设计使学生初步具有分析寻找和排除电子电路中常见故障的能力。4、 通过课程设计使学生能独立写出严谨的、有理论根据的、实事求是的、文理通顺的字迹端正的课程设计报告。3、与其他课程的联系与分工EDA课程设计中应用了模拟电子技术基础、数字电子技术基础中的基础知识和基本理论,并且利用了电子技术基础实验中的基本实验方法,在时间上的安排上应该在这些课程之后。EDA课程设计的后续课程是微机原理等其它专业课程,EDA课程设计中对学生综合设计能力的培养将为这些后续课程的学习打下良好基础。二、 设计任务及要求用VHDL语言设计乐音的节拍与音符产生电路;用VHDL语言设计分频系数、音符显示数据产生电路;用VHDL语言设计可控分频器电路;理解简易音乐播放器总体设计方案。掌握基本的VHDL语言;理解音乐播放电路设计方案。掌握用VHDL语言设计节拍与音符产生电路;掌握用VHDL语言设计分频系数、音符显示数据产生电路;掌握用VHDL语言设计可控分频器电路。设计结果:原理图与原程序、电路仿真图、能在实训系统上播放悦耳动听的音乐。三、设计原理及总体框图产生音乐的两个因素是音乐频率和音乐的持续时间,以纯硬件完成演奏电路比利用微处理器(CPU)来实现乐曲演奏要复杂的多如果不借助于功能强大的EDA工具和硬件描述语言,凭借传统的数字逻辑技术,即使最简单的演奏电路也难以实现。根据6.4.1的设计要求,乐曲硬件演奏电路系统主要由数控分频器和乐曲存储模块组成。数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。1、音名与频率的关系音乐的十二平均率规定:每两个八度音(如简谱中的中音与高音)之间的频率相差一倍在两个八度音之间,又可分为十二个半音,每两个半音的频率比为4。另外,音名(简谱中的低音)的频率为440Hz,音名B到C之间,E到F之间为半音,其余为全音,由此可以计算出简谱中从低音1到高音1之间每个音名的频率如表1所示.表1 简谱中的音名与频率的关系音名频率/Hz音名频率/Hz音名频率/Hz低音1261.63中音1532.25高音11046.50低音2293.67中音2587.33高音21174.66低音3329.63中音3659.25高音31318.51低音4349.23中音4698.46高音41396.92低音5391.99中音5783.99高音51567.98低音6440中音6880高音61760低音7493.88中音7987.76高音71975.52由于音阶频率多为非整数,而分频系数又不能为小数,故必须将得到的分频数四舍五入取整。若基准频率过低,则由于分频系数过小,四舍五入取整后的误差较大,若基准频率过高,虽然误码差变小,但分频结构将变大。实际的设计应综合考虑两方面的因素,在尽量减小频率误差的前提下取舍合适的基准频率。本例中选取4MHz的基准频率,若无4MHz的时钟频率,实际上,只要各个音名间的相对品频率关系不变,C作1与D作1演奏出的音乐听起来都不会“走调”。各音阶频率及相应的分频系数如表2所示。为了减少输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,因此在到达扬声器之前,有一个二分频的分频器。表2中的分频系数就是从4MHZ频率二分频得到的2MHZ频率基础上计算得出的。表2 各音阶频率对应的分频值音名分频系数初始值音名分频系数初始值音名分频系数初始值低音17644547中音138224369高音119116280低音268101381中音234054786高音212706921低音360672124中音330345157高音315176674低音457272464中音428645327高音414326759低音551023089中音525515640高音512566935低音645453646中音622735918高音611377054低音740504141中音720256166高音710137178由于最大的分频系数为7644,故采用13位二进制计数器已能满足分频要求。在表2,除给出了分频比以外,给出了对应于各个音阶频率时计数器不同的初始值,对于乐曲中的休止符,要将分频系数设为0,即初始值为8191即可,此时扬声器将不会发声。对于不同的分频系数,加载不同的初始值即可。用加载初始值而不是将分频输出译码反馈,可以有效地减少本设计占用可编程逻辑器件的资源,也是同步计数器的一个常用设计技巧。2、控制音长的节拍发生器该演奏电路演奏的乐曲是“梁祝”片段,其最小的节拍为1拍。将1拍的时长定为0.25秒,则只需要再提供一个4Hz的时钟频率即可产生1拍的时长,演奏的时间控制通过ROM查表的方式来完成。对于占用时间较长的节拍,如全音符为4拍(重复4),2/4音符为2拍(重复2),1/4音符为1拍(重复1)。3、总体框图:(如图1) 图1总体框图说明:NOTETABS相当于一个计数器,通过计数自动加1读MUSIC模块里的值,然后通过MUXA选择模块选择MUSIC模块中不同的输出,TONETABA模块根据MUXA模块不同的输出选择相应的值,SPEAKERA模块根据TONETABA的输出对12MHZ的时钟信号进行分频,从而得到相信的频率输出发出声音(音调),从而实现播放不同的歌曲。四、程序设计:1、NOTETABS模块:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NOTETABS ISPORT(CLK:IN STD_LOGIC;COUNTER1 :inout STD_LOGIC_vector(7 downto 0);END NOTETABS;ARCHITECTURE a OF NOTeTABs ISBEGINP1:PROCESS (CLK,COUNTER1)BEGINIF COUNTER1=183 THEN COUNTER1 = 00000000;ELSIF CLKEVENT AND CLK=1 THEN COUNTER1 b=0001; INDEX b=0010; INDEX b=0011; INDEX b=0100; INDEX null;END CASE;END PROCESS;END a;创建符号:(如图3) 图33、TONETABA模块:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY TONETABA ISPORT(INDEX: INSTD_LOGIC_vector(3 downto 0);CODE : OUT STD_LOGIC_vector(3 downto 0);HIGH : OUT STD_LOGIC;TONE : OUT STD_LOGIC_vector(10 downto 0);END TONETABA;ARCHITECTURE a OF TONETABA ISBEGINSEARCH:PROCESS (INDEX)BEGINCASE INDEX ISWHEN 0000 = TONE = 11111111111;CODE = 0000;HIGH TONE = 01100000101;CODE = 0001;HIGH TONE = 01110010000;CODE = 0010;HIGH TONE = 10000001100;CODE = 0011;HIGH TONE = 10
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号