EDA简易音乐播放器设计

上传人:自*** 文档编号:23230247 上传时间:2017-11-30 格式:DOC 页数:24 大小:1.01MB
返回 下载 相关 举报
EDA简易音乐播放器设计_第1页
第1页 / 共24页
EDA简易音乐播放器设计_第2页
第2页 / 共24页
EDA简易音乐播放器设计_第3页
第3页 / 共24页
EDA简易音乐播放器设计_第4页
第4页 / 共24页
EDA简易音乐播放器设计_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《EDA简易音乐播放器设计》由会员分享,可在线阅读,更多相关《EDA简易音乐播放器设计(24页珍藏版)》请在金锄头文库上搜索。

1、目 录1 引 言 .22 设计任务及设计要求 .23 设计原理及总体思路 .24 各单元模块的设计 .45 总电路 设计 .166 设计调试体会与总结 .16参考文献 .22第 1 页/共 24 页1 引言EDA 课程设计 (注:EDA 即电子设计自动化,Electronics Design Automation)是继模拟电子技术基础 、 数字电子技术基础 、 电子技术基础实验课程后,电气类、自控类和电子类等专业学生在电子技术实验技能方面综合性质的实验训练课程,是电子技术基础的一个部分,其目的和任务是通过一周的时间,让学生掌握 EDA的基本方法,熟悉一种 EDA软件,并能利用EDA软件设计一个

2、电子技术综合问题,并在实验箱上成功下载,为以后进行工程实际问题的研究打下设计基础。1.通过课程设计使学生能熟练掌握一种 EDA软件的使用方法,能熟练进行设计输入、编译、管脚分配、下载等过程。2.通过课程设计使学生能利用 EDA软件进行至少一个电子技术综合问题的设计,设计输入可采用图形输入法或 AHDL硬件描述语言输入法。3通过课程设计使学生初步具有分析寻找和排除电子电路中常见故障的能力。4通过课程设计使学生能独立写出严谨的、有理论根据的、实事求是的、文理通顺的字迹端正的课程设计报告。2 设计任务及设计要求设计一个简易硬件播放器并能播放多首音乐(最少四首) ,可通过按键手动控制音乐播放。在播放音

3、乐的同时可实现音谱与音高的显示,并通过 16个 LED小灯显示不同音调的变化。使用 VHDL语言设计音调发生模块,音调编码模块,乐曲存储模块,控制模块,小灯控制模块,数字显示模块,音谱与音高输出模块等各个模块。第 2 页/共 24 页3 设计原理及总体思路产生音乐的两个因素是音乐频率和音乐的持续时间,以纯硬件完成演奏电路比利用微处理器(CPU)来实现乐曲演奏要复杂的多如果不借助于功能强大的EDA工具和硬件描述语言,凭借传统的数字逻辑技术,即使最简单的演奏电路也难以实现。根据设计要求,乐曲硬件演奏电路系统主要由音频发生模块和乐曲存储模块组成。音频发生模块对 FPGA的基准频率进行分频,得到与各个

4、音阶对应的频率输出。乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。3.1 音名与频率的关系音乐的十二平均率规定:每两个八度音(如简谱中的中音 1与高音 1)之间的频率相差一倍在两个八度音之间,又可分为十二个半音,每两个半音的频率比为 4。另外,音名 A(简谱中的低音 6)的频率为 440Hz,音名 B到 C之间,E 到 F之间为半音,其余为全音,由此可以计算出简谱中从低音 1到高音1之间每个音名的频率如表 3-1所示。表 3-1 简谱中的音名与频率的关系音名 频率/Hz 音名 频率/

5、Hz 音名 频率/Hz低音 1 261.63 中音 1 532.25 高音 1 1046.50低音 2 293.67 中音 2 587.33 高音 2 1174.66低音 3 329.63 中音 3 659.25 高音 3 1318.51低音 4 349.23 中音 4 698.46 高音 4 1396.92低音 5 391.99 中音 5 783.99 高音 5 1567.98低音 6 440.00 中音 6 880.00 高音 6 1760.00低音 7 493.88 中音 7 987.76 高音 7 1975.52由于音阶频率多为非整数,而分频系数又不能为小数,故必须将得到的分频数四舍五

6、入取整。若基准频率过低,则由于分频系数过小,四舍五入取整后的误差较大,若基准频率过高,虽然误码差变小,但分频结构将变大。实际的设计应综合考虑两方面的因素,在尽量减小频率误差的前提下取舍合适的基准频第 3 页/共 24 页率。本例中选取 12MHz的基准频率,若无 12MHz的时钟频率,实际上,只要各个音名间的相对品频率关系不变,C 作 1与 D作 1演奏出的音乐听起来都不会“走调”。各音阶频率及相应的分频系数如表 2所示。为了减少输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,因此在到达扬声器之前,有一个二分频的分频器。表 3-2中的分频系数就是从 500KHZ频率二分频得到的250K

7、HZ频率基础上计算得出的。表 3-2 各音阶频率对应的分频值音名 初始值 分频系数 音名 初始值 分频系数低音 1 773 1274 中音 1 1410 637低音 2 912 1135 中音 2 1480 567低音 3 1036 1011 中音 3 1542 505低音 5 1197 850 中音 5 1622 425低音 6 1290 757 中音 6 1668 379低音 7 1372 675 高音 1 1728 319由于最大的分频系数为 1274,故采用 13位二进制计数器已能满足分频要求。在表 3-2,除给出了分频比以外,给出了对应于各个音阶频率时计数器不同的初始值,对于乐曲中的

8、休止符,要将分频系数设为 0,即初始值为 2047即可,此时扬声器将不会发声。对于不同的分频系数,加载不同的初始值即可。3.2 节拍控制原理该演奏电路演奏的乐曲是“梁祝”等片段,其最小的节拍为 1拍。将 1拍的时长定为 0.25秒,则需要再提供一个 4Hz的时钟频率即可产生 1拍的时长,演奏的时间控制通过音符的多次重复的方式来完成。对于占用时间较长的节拍,如全音符为 4拍(重复 4) ,2/4 音符为 2拍(重复 2) ,1/4 音符为 1拍(重复 1) 。由于乐理规律对于任何一首音乐都是普遍适用的,所以以上原理对于其他三首乐曲同样适用。第 4 页/共 24 页4 各单元模块的设计4.1 音频

9、发生模块4.1.1 模块引脚图 4-1 speaker模块4.1.2 模块功能如图 4-1,en 为使能引脚,当 en引脚接高电平时 speaker模块使能可正常工作。clk 为时钟信号引脚,为 speaker模块提供时钟信号。tone10.0为 11位的音调初始值信号并行总线,可快速的为 speaker模块输送音调初始值信号,保证乐曲演奏的流畅性。spks 为电信号输出引脚,连接蜂鸣器将电信号转化为声信号。该模块中有一个 4位的计数器用于将 12MHz时钟信号进行十二分频产生 1MHz的基准信号。一个 11位的递增计数器用于赋音调初始值对基准信号进行频,最后进行二分频产生对称方波。初始值 D

10、 = 计数最大值 N - 分频系数 n (1)4.1.3 VHDL 程序library ieee;use ieee.std_logic_1164.all;entity speaker isport( en : in std_logic;clk : in std_logic;tone : in integer range 0 to 16#7ff#; -2047spks : out std_logic);end speaker;architecture behav of speaker issignal preclk : std_logic;第 5 页/共 24 页signal fullspks

11、: std_logic;begindivideclk: process(clk) -12分频variable count4 : integer range 0 to 15;beginpreclk11 thenpreclktonetonetonetonetonetonetonetonetonetonetonetonetonenull;end case;end process;end behav;4.3 乐曲储存模块4.3.1 模块引脚图 4-3 notetabs模块4.3.2 模块功能如图 4-3,clk 为时钟信号引脚为模块提供时钟信号,clr 为计数器清零引脚,当 clr为高电平时 note

12、tabs 模块中的乐曲播放计数器清零。add1.0为2位的乐曲地址选择并行总线,可通过不同的地址值选择不同的乐曲。cs 为片选信号引脚当 cs为高电平时模块才能正常工作反之无法工作。index3.0为4位的音符信号输出并行总线,为 tonetaba 模块和 LED模块提供音符信号。该模块中有一个 8位的播放计数器为乐谱的连续查询提供计数,当达到一定计数值后自动清零实现同一首乐曲的重复播放。4.3.3 VHDL 程序library ieee;use ieee.std_logic_1164.all;entity notetabs isport(clk,clr: in std_logic;add :

13、 in std_logic_vector(1 downto 0);第 8 页/共 24 页cs: in std_logic;index : out integer range 0 to 15);end notetabs;architecture behav of notetabs issignal counter : integer range 0 to 255;begincnt8: process(clk,cs)beginif cs=0 then counterindexindexindexindexindexindexindexnull;end case;end if;if add=01

14、thencase counter iswhen 00=indexindexindexindexindexindexindexnull;end case;end if;if add=10 thencase counter iswhen 00=indexindexindexindexindexindexindexnull;end case;end if;if add=11 thencase counter iswhen 00=indexindexindexindexindexindexindexnull;end case;end if;end process;end behav;4.4 控制模块4.4.1 模块引脚图 4-4 control模块4.4.2 模块功能第 10 页/共 24 页如图 4-4,switch 为控制引脚当其为上升沿时乐曲地址自动加一,当加到最大值时自动清零。en 为使能引脚当刚 en引脚为高电平时 outcs引脚也为高电平,反之为低电平。add1.0为乐曲地址总线当 add为 00时选择第 1首乐曲,为 01时选择第 2首乐曲,为 10时选择第 3首乐曲,为 11时选择第 4首乐曲 。outcs 为 notetabs 模块片选控制引脚,当 outcs引脚为高电平时选中notetabs 模块。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号