乐曲演奏课程设计报告---乐曲演奏电路的设计.doc_第1页
乐曲演奏课程设计报告---乐曲演奏电路的设计.doc_第2页
乐曲演奏课程设计报告---乐曲演奏电路的设计.doc_第3页
乐曲演奏课程设计报告---乐曲演奏电路的设计.doc_第4页
乐曲演奏课程设计报告---乐曲演奏电路的设计.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北 华 航 天 工 业 学 院eda技术综合设计课程设计报告报告题目: 乐曲演奏电路的设计 作者所在系部: 作者所在专业: 作者所在班级: 作 者 姓 名 : 指导教师姓名: 完 成 时 间 : 内 容 摘 要在eda开发工具quartus ii 6.0平台上,采用vhdl语言层次化和模块化的设计方法,通过音符编码的设计思想,预先定制乐曲,实现动态显示乐曲演奏电路的设计,并在此基础上,基于同一原理,使此电路同时具备了简易电子琴的功能,使基于cpld/fpga芯片的乐曲播放数字电路得到了更好的优化,提高了设计的灵活性和可扩展性。关键字:eda;quartus ii;vhdl;cpld/fpga;乐曲演奏电路;简易电子琴课程设计任务书课题名称乐曲演奏电路的设计完成时间2011/12/15指导教师胡辉职称副教授学生姓名宋志朋班 级b09212总体设计要求和技术要点总体设计要求: 通过本课程的学习使学生掌握可编程器件、eda开发系统软件、硬件描述语言和电子线路设计与技能训练等各方面知识;提高工程实践能力;学会应用eda技术解决一些简单的电子设计问题。技术要点:设计一个乐曲演奏电路,由键盘输入控制音响,同时可自动演奏乐曲,演奏时可通过键盘选择已存入的乐曲(3种),扬声器利用试验箱上的。利用1位led显示器显示已存入的乐曲的种类。扩展功能:利用发光二极管显示高低音及音节的长短。工作内容及时间进度安排第15周:周4:立题、论证方案设计周5:仿真实验周6:验收答辩课程设计成果1与设计内容对应的软件程序2课程设计报告书3成果使用说明书4设计工作量要求二、设计原理1.1.1 音调的控制频率的高低决定了音调的高低。音乐的十二平均率规定:每两个八度音(如简谱中的中音1和高音1)之间的频率相差一倍。在两个八度音之间又分为十二个半音。另外,音名a(简谱中的低音6)的频率为440hz,音名b到c之间、e到f之间为半音,其余为全音。由此可以计算出简谱中从低音1到高音1之间每个音名对应的频率,所有不同频率的信号都是从同一个基准频率分频得到的。由于音阶频率多为非整数,而分频系数又不能为小数,因此必须将计算得到的分频数四舍五入取整。若基准频率过低,则由于分频比太小,四舍五入取整后的误差较大;若基准频率过高,虽然误差较小,但分频数将变大。实际的设计应综合考虑这两方面的因素,在尽量减小频率误差的前提下取合适的基准频率。因此,要想fpga发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。综合考虑各因素,本文中选取12mhz作为clk的分频计数器的输入分频信号。乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调。表3-1简谱中的音名与频率的关系音名频率/hz音名频率/hz音名频率/hz低音1261.6中音1523.3高音11045.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资料来源:epm7128实验板说明书1.1.2 音长的控制音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。因此,在想控制音符的音长,就必须知道乐曲的速度和每个音符所对应的节拍数,在这个设计中所演奏的乐曲的最短的音符为四分音符,如果将全音符的持续时间设为1s的话,那么一拍所应该持续的时间为0.25秒,则只需要再提供一个4hz的时钟频率即可产生四分音符的时长。要想让系统知道现在应该演奏哪个音符,而这个音符持续的时间应该是多少,就必须编写乐曲文件,在乐曲文件中音符是按地址存放的,当系统工作时就按4hz的频率依次读取简谱,当系统读到某个音符的简谱时就对应发这个音符的音调,持续时间为0.25秒,而如果在曲谱文件中这个音符为三拍音长,那又该如何控制呢?其实只要将该音符连续书写三遍,这时系统读乐曲文件的时候就会连续读到三次,也就会发三个0.25秒的音长,这时我们听上去就会持续了三拍的时间,通过这样一个简单的操作就可以控制音乐的音长了。三源程序1、编码器。library ieee;use ieee.std_logic_1164.all;entity bianma is port(din:in std_logic_vector(3 downto 0);view:out std_logic_vector(2 downto 0);dout:out std_logic_vector(10 downto 0);end bianma;architecture made_bianma of bianma isbeginprocess(din)begincase din is-gao_yin-when =doutdoutdoutdout=11010011010;viewdout=11010000101;viewdout=11001010110;viewdout=11000100010;viewdoutdoutdoutdout=10100110100;viewdout=10100001010;viewdout=10010101101;viewdout=10001000100;viewdoutdoutdoutdout=01001101000;viewdout=01000010000;viewdout=00101011001;viewdout=00010001001;view doutdoutdoutdoutdoutdout=din1;end case;end process;end made_change; 3、分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin is port(din: in std_logic_vector(10 downto 0);clk: in std_logic;dout: out std_logic);end fenpin;architecture made of fenpin issignal temp:std_logic_vector(10 downto 0);beginprocess(din,clk)beginif(clkevent and clk=1)thenif(temp=2047)thentemp=din;elsetemp=temp+1;end if;end if;end process;dout=1 when temp=2046 else 0;end made;4、音乐模块1library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity made_music isport(clk_2hz:in std_logic;dout:out std_logic_vector(3 downto 0);end made_music;architecture make_music of made_music issignal temp:std_logic_vector(5 downto 0);beginprocess(clk_2hz)beginif(clk_2hzevent and clk_2hz=1) thenif(temp=48) then temp=000000;else tempdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=0000; -0end case;end process;end make_music;音乐模块2library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity made_music1 isport(clk_2hz:in std_logic;dout:out std_logic_vector(3 downto 0);end made_music1;architecture make_music of made_music1 issignal temp:std_logic_vector(6 downto 0);beginprocess(clk_2hz)beginif(clk_2hzevent and clk_2hz=1) thenif(temp=72) then temp=0000000;else tempdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=0000; -0end case;end process;end make_music;音乐模块3library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity made_music2 isport(clk_2hz:in std_logic;dout:out std_logic_vector(3 downto 0);end made_music2;architecture make_music of made_music2 issignal temp:std_logic_vector(6 downto 0);beginprocess(clk_2hz)beginif(clk_2hzevent and clk_2hz=1) thenif(temp=45) then temp=0000000;else tempdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=0000; -0end case;end process;end make_music;4、 总原理图五、实验目的1. 熟练掌握vhdl 语言和quartus ii 软件的使用;2. 理解状态机的工作原理和设计方法;3. 掌握利用eda 工具进行自顶向下的电子系统设计方法六、实验步骤1.将实验系统上rs232接口与计算机串行口相连。2.用vhdl将源程序输入quartus ii软件中。3.编译程序并进行引脚分配,最后将程序下载到器件中去。七、收获和体会:通过本次eda课设,我学会了语言的一些基本用法,应用了原来不会或者不熟练的句型,如if句,也学会了一些基本功能的实现方法,如分频,状态控制等等,从另外一个角度重新审视了这个学期完全从硬件角度出发的电路设计,明白了软硬件之间的交互。通过这次实验,对系统框图的设计有了一定的了解。懂得了系统的前期设计对于后续的编程和调试的重要性。本次实验采用了自下而上的设计方法,根据系统对硬件的要求,分化模块,利用模块实现功能,最后进行仿真和调试。虽然这次实验遇到的问题不少,但是在胡辉老师以及同学的帮助下,我都顺利地解决了,并为将来的实践积累了宝贵的经验和教训。具体的经验和教训有:1模块化设计有利于提高硬件设计的效率。2逻辑正确和仿真真确并不代表着实际实验的正确,通常情况下,要适当地调整逻辑以适应硬件。要特别注意仿真时出现的毛刺和偏差,到底是由于仿真设置不合理还是仿真结果确实有问题。3从简到难,逐步深入,先打出程序的框架,实现基本功能,然后再逐步细化。4学会经常和老师、同学交流

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论