- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《PLD原理及应用》实验任务书
班级:__________ 学号:___________ 姓名:___________
课题名称:
基于VHDL的简易音乐播放器的设计
设计要求
基本要求:
利用VHDL语言设计一个简易的音乐播放器能播放指导老师给定的简谱
扩展要求
设置按键实现对多首音乐的选择播放
实验要求
编写简易音乐播放器的VHDL程序
完成硬件验证
书写实验报告(报告内容包括quartus II软件的设计流程,简易音乐播放器的设计思路,简易音乐播放器的VHDL程序)
报告上交时间:第18周周五前
指导教师:李纯
电子工程系
2012.06.10
音 乐 发 生 器
本设计利用可编程逻辑器件配以一个小扬声器设计了一个音乐发生器,其结构如图7-4所示。本例产生的音乐选自“梁祝”片段。
音乐产生器原理框图
1、音名与频率的关系
音乐的十二平均率规定:每两个八度音(如简谱中的中音1与高音1)之间的频率相差一倍。在两个八度音之间,又可分为十二个半音,每两个半音的频率比为。另外,音名A(简谱中的低音6)的频率为440 Hz,音名B到C之间、E到F之间为半音,其余为全音。由此可以计算出简谱中从低音1至高音1之间每个音名的频率如表所示。
由于音阶频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。若基准频率过低,则由于分频系数过小,四舍五入取整后的误差较大。若基准频率过高,虽然误码差变小,但分频结构将变大。实际的设计应综合考虑两方面的因素,在尽量减小频率误差的前提下取合适的基准频率。本例中选取4 MHz的基准频率。若无4 MHz的时钟频率,则可以先分频得到4 MHz或换一个新的基准频率。实际上,只要各个音名间的相对频率关系不变,C作1与D作1演奏出的音乐听起来都不会“走调”。
本例需要演奏的是“梁祝”片段,此片段内各音阶频率及相应的分频比如表7-2所示。为了减小输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,因此在到达扬声器之前,有一个二分频的分频器。表7-2中的分频比就是从4 MHz频率二分频得到的2 MHz频率基础上计算得出的。
各音阶频率对应的分频值
由于最大的分频系数为6067,故采用13位二进制计数器已能满足分频要求。在表7-2中,除给出了分频比以外,还给出了对应于各个音阶频率时计数器不同的初始值。对于不同的分频系数,只要加载不同的初始值即可。采用加载初始值而不是将分频输出译码反馈,可以有效地减少本设计占用可编程逻辑器件的资源,这也是同步计数器的一个常用设计技巧。
对于乐曲中的休止符,只要将分频系数设为0,即初始值为213-1=8191即可,此时扬声器将不会发声。
2、音长的控制
本例演奏的“梁祝”片段,最小的节拍为1/4拍。将1拍的时长定为1秒,则只需要再提供一个4 Hz的时钟频率即可产生1/4拍的时长。演奏的时间控制通过记谱来完成,对于占用时间较长的节拍(一定是1/4拍的整数倍),如2/4拍,只需将该音名连续记录两次即可。
本例要求演奏时能循环进行,因此需另外设置一个时长计数器,当乐曲演奏完成时,保证能自动从头开始演奏。
3、演奏时音名的动态显示
如果有必要,可以通过一个数码管或LED来显示乐曲演奏时对应的音符。如用三个数码管,分别显示本例中的高、中、低音名,就可实现演奏的动态显示,且十分直观。本设计通过三个数码管来动态显示演奏时的音名,其中HIGH显示为高音区音阶(仅高音1),MED[2..0]显示的是中音区音阶(中音6, 5, 3, 2, 1),LOW[2..0]显示的是低音区音阶(低音7, 6, 5, 3)。数码管显示的七段译码电路在此不作专门讨论。需要说明的是,七段译码电路输入为4位,而将HIGH、MED、LOW用作输入时,不足4位的高位均为低电平“0”。
4、VHDL程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity song is
port(
clk_4mhz,clk_4hz:in std_logic;
digit:buffer std_logic_vector(6 downto 0);
zero:out std_logic_vector(4 downto 0);
speaker:out std_logic
);
您可能关注的文档
最近下载
- GB_T 9441—2021《球墨铸铁金相检验》标准解读.pdf VIP
- 西师大版六年级上册数学第一单元 分数乘法 测试卷带答案下载.docx VIP
- 3篇关于全国质量月活动策划方案.docx VIP
- 青岛版(五四制)(2024)科学一年级下册4 制作方向辨识盘 教学设计.docx VIP
- 2025北京海淀高一(下)期末英语试卷含答案.pdf VIP
- 5.3《阳燧照物》(教案)-【中职专用】高二语文(高教版2023拓展模块下册).docx VIP
- 基于Matlab的智能家居照明控制系统的设计.doc VIP
- 关于IPRAN特性与实现.ppt VIP
- 2025零碳园区建设方案.docx
- 建筑工程图集 12S108-2:真空破坏器选用与安装.pdf VIP
文档评论(0)