




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实训报告系别 电信系专业 09级电子科学与技术组员 彭成 王亚丽 程小伟八音自动播放电子琴设计0 引言电子琴之所以受到群众们喜爱,是因为它能模拟各种乐器的音色,如笛、号、琴、颤音、和旋音等以及打击乐板音、鼓乐、沙锤等。本设计介绍一种除有普通电子琴功能外,还有不需要按琴键就能模拟电子琴自动演奏乐曲的电子琴音乐的产生和演奏电路。若与音响放大器相结合,则乐曲的音响效果会更好。 20世纪80年代中期,出现的现场可编程门阵列(FPGA)具有体系结构、逻辑单元灵活、集成度高以及适用范围广等特点,可实现大规模和超大规模的集成电路,而且编程灵活。采用FPGA设计电路,可提高开发效率,缩短研发周期,降低研发成本,且易于进行功能扩展。本设计采用FPGA设计电子琴,使得系统实现方法灵活,且调试方便。1设计原理随着EDA技术的进展,基于可编程的数字电子系统设计的完整方案越来越受到人们的重视。与利用微处理器来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂一些,如果不借助与功能强大的EDA工具和硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以有效实现。本实验设计项目作为“友谊地久天长”乐曲演奏电路的实现。 组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的两个基本要素。1.1音调的控制频率的高低决定了音调的高低。音乐的十二平均率规定:每两个8度音(如简谱中的中音1与高音1)之间的频率相差一倍。在两个8度音之间,又可分为12个半音,每两个半音的频率比为122。另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音4。由此可以计算出简谱中从低音1至高音1之间每个音名对应的频率,如表1所示:表1 简谱中的音名与频率的关系音名频率/Hz音名频率/Hz音名频率/Hz低音1261.6中音1523.3高音11046.5低音2293.7中音2587.3高音21174.7低音3329.6中音3659.3高音31318.5低音4349.2中音4698.5高音41396.9低音5392中音5784高音51568低音6440中音6880高音61760低音7493.9中音7987.8高音71975.5所有不同频率的信号都是从同一个基准频率分频得到的。由于音阶频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。若基准频率过低,则由于分频比太小,四舍五入取整后的误差较大;若基准频率过高,虽然误差变小,但分频数将变大。实际的设计综合考虑这两方面的因素,在尽量减小频率误差的前提下取合适的基准频率4。本例中选取6MHz为基准频率。若无6MHz的基准频率,则可以先分频得到6MHz,或换一个新的基准频率。实际上,只要各个音名间的相对频率关系不变,演奏出的乐曲听起来都不会走调。1.2 音长的控制音符的持续时间必须根据乐曲的速度及每个音符的节拍数来确定。本例演奏的梁祝片段,最短的音符为4分音符,如果将全音符的持续时间设为1s的话,则只需要再提供一个4Hz的时钟频率即可产生4分音符的时长。其中,乐谱产生电路用来控制音乐的音调和音长。控制音调通过设置计数器的预置数来实现,预置不同的数值可以使计数器产生不同频率的信号,从而产生不同的音调。控制音长是通过控制计数器预置数的停留时间来实现的,预置数停留的时间越长,则该音符演奏的时间越长。每个音符的演奏时间都是0.25s的整数倍,对于节拍较长的音符,如2分音符,在记谱时将该音名连续记录两次即可。2设计步骤本设计是采用FPGA器件驱动小扬声器构成一个乐曲演奏电路,图1是一个典型的FPGA/CPLD设计流程:系统框图图1 Verilog HDL设计流程3程序设计源程序module song(clk,beep); /模块名称songinput clk; /系统时钟48MHzoutput beep; /蜂鸣器输出端reg beep_r; /寄存器reg7:0 state; /乐谱状态机reg15:0count,count_end;reg23:0count1;/乐谱参数:D=F/2K (D:参数,F:时钟频率,K:音高频率)parameter L_5 = 16d63776, /低音5 L_6 = 16d56818, /低音6 M_1 = 16d47774, /中音1 M_2 = 16d42567, /中音2 M_3 = 16d37919, /中音3 M_5 = 16d31888, /中音5 M_6 = 16d28409, /中音6 H_1 = 16d23912; /高音1parameter TIME = 12500000; /控制每一个音的长短(250ms)assign beep = beep_r; /输出音乐always(posedge clk)begin count = count + 1b1; /计数器加1 if(count = count_end) begin count = 16h0; /计数器清零 beep_r = !beep_r; /输出取反 endendalways (posedge clk)begin if(count1 TIME) /一个节拍250mS count1 = count1 + 1b1; else begin count1 = 24d0; if(state = 8d147) state = 8d0; else state = state + 1b1; case(state) 8d0,8d1: count_end = L_5;/低音5,持续2个节拍 8d2,8d3,8d4,8d5,8d6,8d7,8d8: count_end = M_1;/中音1,持续7个节拍 8d9,8d10: count_end = M_3;/中音3,持续2个节拍 8d11,8d12,8d13,8d14: count_end = M_2; 8d15: count_end = M_1; 8d16,8d17: count_end = M_2; 8d18,8d19: count_end = M_3; 8d20,8d21,8d22,8d23,8d24: count_end = M_1; 8d25,8d26: count_end = M_3; 8d27,8d28: count_end = M_5; 8d29,8d30,8d31,8d32,8d33: count_end = M_6; 8d34,8d35,8d36,8d37,8d38: count_end = M_6; 8d39,8d40,8d41,8d42: count_end = M_5; 8d43,8d44,8d45: count_end = M_3; 8d46,8d47: count_end = M_1; 8d48,8d49,8d50,8d51: count_end = M_2; 8d52: count_end = M_1; 8d53,8d54: count_end = M_2; 8d55,8d56: count_end = M_3; 8d57,8d58,8d59,8d60: count_end = M_1; 8d61,8d62,8d63: count_end = L_6; 8d64,8d65: count_end = M_5; 8d66,8d67,8d68,8d69: count_end = M_1; 8d70,8d71,8d72,8d73: count_end = M_1; 8d74,8d75: count_end = M_6; 8d76,8d77,8d78,8d79: count_end = M_5; 8d80,8d81,8d82: count_end = M_3; 8d83,8d84: count_end = M_1; 8d85,8d86,8d87,8d88: count_end = M_2; 8d89: count_end = M_1; 8d90,8d91: count_end = M_2; 8d92,8d93: count_end = M_6; 8d94,8d95,8d96,8d97: count_end = M_5; 8d98,8d99,8d100: count_end = M_3; 8d101,8d102: count_end = M_5; 8d103,8d104,8d105,8d106: count_end = M_6; 8d107,8d108,8d109,8d110: count_end = M_6; 8d111,8d112: count_end = H_1; 8d113,8d114,8d115,8d116: count_end = M_5; 8d117,8d118,8d119: count_end = M_3; 8d120,8d121: count_end = M_1; 8d122,8d123,8d124,8d125: count_end = M_2; 8d126: count_end = M_1; 8d127,8d128: count_end = M_2; 8d129,8d130: count_end = M_3; 8d131,8d132,8d133,8d134: count_end = M_1; 8d135,8d136,8d137: count_end = L_6; 8d138,8d139: count_end = M_5; 8d140,8d141,8d142,8d143: count_end = M_1; 8d144,8d145,8d146,8d147: count_end = M_1; default:count_end = 16h0; endcase endendendmodule4系统仿真系统仿真是在实际系统上进行实验研究比较困难时适用的必不可少的工具,它是指通过系统模型实验去研究一个已经存在或正在设计的系统的过程,通俗地讲,就是进行模型实验。因而,系统仿真的结果决定整个课程设计任务完成的到位程度。程序输入完成后进行编译,编译完成后,可以对所进行的设计进行仿真。本实验通过信件VWF文件,通过仿真生成波形图,观察波形,是否得到需要的波形图。得到仿真波形图如图1所示:图1仿真波形图模块的源程序符号编辑图如图2所示:图2 源程序符号编辑图引脚锁定图 RTL图5 系统边框图如图3所示图3 系统边框图实训心得在这几天的实训中,不但让我对EDA专业有了更深刻的了解,也有了不少新的认识。的这段日子里不仅使我在学校课堂上学习的“书本上”的知识有了更深、更新的了解与认识,而且还让我学习到了许多实践经验。 在实践中收获很多,大致上1、培养综合运用知识和独立开展实践创新的能力;2、提高了我们独立发现问题、分析问题、解决问题的能力;3、更加地了解和掌握Verilog HDL的基本知识和基本的编写程序,也更加深入地了解这门课程。4、在理论学习的基础上,通过完成一个涉及时序逻辑、组合逻辑、声光输出的,具有实用性、趣味性的小系统设计。5、的理论知识与实际应用结合起来,为今后能够独立进行某些数字应用系统的开发设计工作打下一定的基础。总言之,通过这次实习,在设计方面我感觉自己有了一定的收获。实习主要是为了我们今后在工作及业务上能力的提高起到了促进的作用,增强了我们今后的竞争力,为我们 能在以后立足增添了一块基石。这次学习丰富了我在这方面的知识,使我们对将来从事设计更好的去面对这些问题。使我向更深的层次迈进,但我也认识到,要想做好这方面的工作单靠这这几天的实习是 不行的,还需要我在平时的学习和工作中一点一点的积累,不断丰富自己的经验才行。我面前的路还是很漫长的,需要不断的努力和奋斗才能真正地走好。我坚信通 过这一段时间的实习,所获得的实践经验对我终身受益,为实现自我的理想和光明的前程增加了更多信心。 电子0941 彭成 200910711135 实训心得 本设计利用硬件描述语言Verilog 实现了电子琴的自动演奏的简易功能,经过编程,综合,编译,仿真,下载,最终实现音乐自动播放,通过对系统的测试结果和数据的分析计算,测试结果符合预期结果,测试情况良好,能够基本实现音阶的发音功能,自动演奏存储好的乐曲,可根据需要更改程序而实现不同的乐曲存储。课程设计是培养我们综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,EDA技术已经成为当今计算机应用中空前活跃的领域,在生活中可以说是无处不在。因此作为二十一世纪的大学生来说掌握EDA技术是十分重要的。第一次接触课程设计,从开始的一窍不通,到后来慢慢了解,经历了很长的时间。回顾起此次HDL课程设计,我感慨良多,的确,从审题到编程,从理论到实践,在这两个星期的日子里,我受益匪浅。不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能解决实际中的问题,从而提高自己的实际动手能力和独立思考的能力。这毕竟是第一次做课程设计,难免会遇到各种各样的问题,同时在设计的过程中我也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。比如,刚开始仿真波形一直显示不出预期的效果,经过全面检查分析,才知道原来是时钟周期设计的太小了,导致波形聚集在一起,看不到正确的波形。但通过这次课程设计之后,进一步加深了对HDL的了解,让我对它有了更加浓厚的兴趣。同时,从实训中我还意识到了团队合作的重要性,本来不懂的东西,经过几个人的商量,探讨,最终发现并解决问题,使实训圆满结束。总之,这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了EDA技术,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。感谢老师的悉心指导。 电子0941王亚丽 2012年5月16日实训心得 本次课程设计持续两周时间,从刚刚接触,到逐渐熟悉,再到把实验做成功,我感慨很多。由于时间比较紧迫,我们组三个成员都没有闲着,不仅白天在实验室机房上机操作,上网查找比较好的实验范例,查找书上的例子以及讲解,这样一来,我们学习书上的例子显得更加轻松,更加的迎刃而解,许多上课时没有听懂的内容,再经过询问老师和学生,我们逐渐了解EDA的真正内容。晚上,我们仍然上网查询我们所需要的资料,然后结合我们实验室所给的实验箱资料,两者结合起来,最终确定下来了实验方案。我们组选择的题目是8音自动播放电子琴设计,首先我们确定下来的是八音,通过上网查询我们确定了下来我们自动播放音乐所需的八个音调,我们组选取的音乐是友谊天长地久,由于实验箱自带的数字信号发生器里面有48MHZ的频率,所以我们设定时钟信号时48MHZ的频率,通过设定一个状态机来设定一个节拍,一个节拍是250ms貌似再通过控制状态机逐次输出音乐。从审题到编程,从理论到实践,让我受益匪浅。我们这一组做的是八音自动播放电子琴,在刚开始选择程序时,选择了一个模块多的原理图,我把各个模块模拟并演示,最后连接到一块,结果模拟以后,实验波形不太理想。后来我们选择了一个不用多个模块,而是一个整体程序,不调用其他模块,最后经过仿真模拟,达到了预期的波形。 下面的是引脚锁定,我们选定的Altera 的CycloneII系列的EP2C35F672C8芯片,用PIN_F18引脚输入时钟信号,用PIN_B13引脚输出音乐,接下来把电脑连接上试验箱,通过安装驱动程序,把生成的SOF文件下载到FPGA,再次上电,蜂鸣器里面便想起歌曲。最后,我们把JI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房地产企业2025年多元化发展中的品牌建设策略研究报告
- 房地产中介行业规范发展与服务质量提升解决方案研究报告
- 快消品行业2025年渠道下沉策略:农村市场品牌建设研究报告
- 部门招聘劳动合同书2篇
- 签订特许加盟合同的注意事项2篇
- 农场土地承包合同4篇
- 快消品企业2025年渠道下沉策略研究报告:案例分析及市场预测
- 人工智能+数据资源城市交通流量预测与调控研究报告
- 疫情对旅游业国际市场拓展影响及应对策略可行性研究报告
- 2025年财务风险应对策略在中小企业中的应用可行性研究报告
- 集装箱货物高效清关代理服务合同范本
- 2025年结构上岗试题及答案
- 2025年中国电信招聘考试行政职业能力测试预测题集
- 静脉治疗知识培训课件
- 教科版小学五年级上册科学实验报告20篇
- 学风建设科研诚信宣教课件
- 江西省宜春市2025年上半年事业单位公开遴选试题含答案分析
- 2025繁轩科技发展(天津)有限公司公开招聘工作人员35人备考题库及答案解析
- 2025年度水电项目工程结算与审计服务协议
- 医院物业管理质量标准及服务流程
- 脑卒中并发吞咽障碍个案护理
评论
0/150
提交评论