《友谊地久天长》乐曲演奏电路设计.docVIP

《友谊地久天长》乐曲演奏电路设计.doc

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

《友谊地久天长》乐曲演奏电路设计 实验任务 音高与频率的对应关系见表1-1。 表1-1 音高频率对照表 1 2 3 4 5 6 7 低音 262Hz 294Hz 330Hz 349Hz 392Hz 440Hz 494Hz 中音 532Hz 578Hz 659Hz 698Hz 784Hz 880Hz 988Hz 高音 1046Hz 1175Hz 1318Hz 1397Hz 1568Hz 1760Hz 1976Hz 《友谊地久天长》乐谱见图1-1。 友谊地久天长 图1-1 《友谊地久天长》乐谱 注:N 一拍;N 两拍;N· 四拍;N· 八拍;N为音谱。 此程序使用4MHz时钟,时钟不同则需要修改常数。 总体框图如图1-2所示。 图1-2 总体框图 模块及模块功能 模块TONE见图1-2。该模块控制每一个音的长短,送初值给SPEAK模块,从而控制音高。 //**************************************************************// // 《友谊地久天长》乐曲 // // 时钟:4MHz // //**************************************************************// //音高与频率的对应关系 //--------------------------------------------------------------- //| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | //|低音 | 262Hz | 294Hz | 330Hz | 349Hz | 392Hz | 440Hz | 494Hz | //|中音 | 523Hz | 578Hz | 659Hz | 698Hz | 784Hz | 880Hz | 988Hz | //|高音 |1046Hz |1175Hz |1318Hz |1397Hz |1568Hz |1760Hz |1976Hz | //--------------------------------------------------------------- //如果时钟不同则需改参数 module tone(clock,q); //I/O口声明 input clock; output[13:0]q; //I/O口寄存器 reg[13:0] q_r; //内部寄存器 reg[20:0] cnt1; //375ms计数器(一个节拍) reg[3:0]cnt2; //节拍计数器 reg[5:0] n; //乐谱状态机 M_1 = 4000000/523 = 7648 parameter L_5 = 14d10204, //低音5 L_6 = 14d9090, //低音6 M_1 = 14d7648, //中音1 M_2 = 14d6920, //中音2 M_3 = 14d6069, //中音3 M_5 = 14d5102, //中音5 M_6 = 14d4545, //中音6 H_1 = 14d3824; //高音1 parameter TIME = 1500000; //控制每一个音(节拍)的长短(375ms) assign q = q_r; always @(posedge clock) begin if(cnt1 TIME) //控制每一个音(节拍)的长短(375ms) cnt1 = cnt1 + 21d1; else begin cnt1 = 21d0; case(n) 6d0: begin q_r = L_5; //此值为低音5的计数初值,送给SPEAK模块 if(cnt2 4d1)//两个节拍 cnt2 = cnt2 + 4d1; else begin cnt2 = 4d0; n = 6d1; end end 6d1: begin q_r = M_1; if(cnt2 4d6) cnt2 = cnt2 + 4d1; else begin cnt2 = 4d0; n = 6d2; end end 6d2: begin q_r = M_3; if(cnt2

文档评论(0)

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

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

1亿VIP精品文档

相关文档