vhdl实验报告--蜂鸣器.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
vhdl实验报告--蜂鸣器

VHDL实验报告 一、实验目的 掌握蜂鸣器的使用; 通过复杂实验,进一步加深对VHDL语言的掌握程度。 二、实验原理 乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在蜂鸣器上连续地发出各个音符的音调。而要准确地演奏出一首乐曲,仅仅让蜂鸣器能够发声是不够的,还必须准确地控制乐曲的节奏,即每个音符的持续时间。由此可见,乐曲中每个音符的发音频率及其持续的时间是乐曲能够连续演奏的两个关键因素。 乐曲的12平均率规定:每2个八度音(如简谱中的中音1与高音1)之间的频率相差1倍。在2个八度音之间,又可分为12个半音。另外,音符A(简谱中的低音6)的频率为440Hz,音符B到C之间、E到F之间为半音,其余为全音。由此可以计算出简谱中从低音l至高音1之间每个音符的频率,如表2.1所示。 音名 频率/Hz 音名 频率/Hz 音名 频率/Hz 低音1 261.6 中音1 523.3 高音1 1045.5 低音2 293.7 中音2 587.3 高音2 1174.7 低音3 329.6 中音3 659.3 高音3 1318.5 低音4 349.2 中音4 698.5 高音4 1391.1 低音5 392 中音5 784 高音5 1568 低音6 440 中音6 880 高音6 1760 低音7 493.9 中音7 987.8 高音7 1975.5 表2.1 简谱音名与频率的对应关系 产生各音符所需的频率可用一分频器实现,由于各音符对应的频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。若分频器时钟频率过低,则由于分频系数过小,四舍五入取整后的误差较大;若时钟频率过高,虽然误差变小,但分频数将变大。1为例,对应的频率值为523.3Hz,它的分频系数应该为: 至于其他音符,同样可由上式求出对应的分频系数,这样利用程序可以很轻松地得到相应的乐声。 音名 频率/Hz 分频系数 音名 频率/Hz 分频系数 低音1 261.6 1911 高音1 1045.5 478 低音2 293.7 1702 高音2 1174.7 425 低音3 329.6 1517 高音3 1318.5 379 低音4 349.2 1431 高音4 1391.1 359 低音5 392 1276 高音5 1568 319 低音6 440 1136 高音6 1760 284 低音7 493.9 1014 高音7 1975.5 253 中音1 523.3 956 中音2 587.3 851 中音3 659.3 758 中音4 698.5 716 中音5 784 638 中音6 880 568 中音7 987.8 506 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity tone is port( index: in std_logic_vector(15 downto 0); --音符输入信号 tone0: out integer range 0 to 2047 --音符的分频系数 ); end tone; architecture behavioral of tone is begin search :process(index) --此进程完成音符到音符的分频系数译码,音符的显示,高低音阶 begin case index is when 0000000000000001 = tone0=1433; when 0000000000000010 = tone0=1277; when 0000000000000100 = tone0=1138; when 0000000000001000 = tone0=1074; when 0000000000010000 = tone0=960; when 0000000000100000 = tone0=853; when 0000000001000000 = tone0=759; when 0000000010000000 = tone0=716; when 0000000100000000 = tone0=358;

文档评论(0)

almm118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档