EDA课程设计硬件电子琴及自动演奏要点

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

EDA课程设计电子琴与自动演奏1郑州航空工业管理学院《EDA技术及应用》课程设计报告届通信工程专业班级题目:电子琴与自动演奏学号:姓名:同组人:指导老师:2013年07月07日EDA课程设计电子琴与自动演奏21课程设计要求1.1硬件电子琴设计设计要求:(1)按下KEY1~KEY7分别表示中音的DO、RE、ME、FA、SOL、LA、SI.(2)按住KEY8同时按KEY1~KEY7分别表示高音的DO、RE、ME、FA、SOL、LA、SI;(3)按下相应的键有对应LED灯指示;其他要求:(1)晶振为12MHz.,采用CPLD器件为ALTERA的EPM7064AEL144-7N。1.2乐曲自动演奏机设计要求:(1)可以在电路上能自动演奏乐曲,在这里我们采用的是贝多芬的《欢乐颂》;(2)有相应的LED灯指示高低音;其他要求:(1)晶振为12MHz;(2)采用CPLD器件,为ALTERA的EPM7064AEL144-7N。1.3硬件电子琴设计+乐曲自动演奏机最初我们选择的设计是电子琴,但是由于电子琴的设计较为基础,因此我们对电子琴的设计进行了改进,将其与乐曲自动演奏相结合,要求如下:设计要求:(1)按下KEY1—KEY7分别表示中音的DO、RE、ME、FA、SOL、LA、SI;(2)对于电子琴,按下相应的键有对应LED灯指示;(3)可以在电路上能自动演奏乐曲,在这里我们采用的是贝多芬的《欢乐颂》,且有相应的LED灯指示高低音;(4)能实现电子琴和乐曲自动演奏功能的切换。EDA课程设计电子琴与自动演奏3其他要求:(1)晶振为12MHz;(2)采用CPLD器件为ALTERA的EPM7064AEL144-7N。2整体规划2.1设计分析根据设计要求,由于乐曲自动演奏机和硬件电子琴的设计已经存在,我们对已有的设计进行修改,形成两个不同功能的模块,然后采用元件例化,拼接两个模块,同时附加一个选择功能模块,以实现乐曲自动演机和硬件电子琴两个功能。2.1.1硬件电子琴分析对于硬件电子琴,参考了实验时使用的程序,已经达到的要求有:(1)按下key1~key7分别表示中音的DO、RE、ME、FA、SOL、LA、S;(2)按下相应的键有对应LED灯指示。2.1.2乐曲自动演奏机分析对于乐曲自动演奏机,参考了实验时使用的程序,已经达到的要求有:(1)可以在电路上能自动演奏乐曲,在这里我们采用的是贝多芬的《欢乐颂》(2)有相应的LED灯指示高低音。而对于其他要求:(1)晶振为12MHz.;(2)采用CPLD器件为ALTERA的EPM7064SL-44。我们在实验箱验证时,先按照实验箱芯片和晶振进行就修改,在实验箱上确认实验相应功能之后,我们在对应模块的频率数值进行修改,并在对管脚重新锁定即可。2.1.3整体设计分析整体设计要求:用key8实现两个功能切换。添加一个选择器,以实现两个功能切换。当key8键没有按下时,电路实现硬件电子琴功能,当key8键按下之后,电路实现乐曲自动演奏机。由于不存在现成可以借鉴的,于是,课程设EDA课程设计电子琴与自动演奏4计任务重心就放在了选择器模块的编写以及整体电路的合成上。2.2顶层模块输入输出图2-1顶层文件图形管脚说明:输入:时钟信号——clk,按键——[6:0]key,功能切换键——key7输出:LED灯——[6:0]led,蜂鸣器——beep;Key0:DOkey1:REkey2:MEkey3:FAkey4:SOLkey5:LAkey6:SIkey7:功能切换键2.3设计流程图2-1设计流程图2.4设计分工孙干:负责修改硬件电子琴以及乐曲自动演奏模块。周龙杰:负责编写选择器以及设计顶层文件。朱真:负责综合测试电路是否达到要求,并进行修改。修改硬件电子琴模块修改乐曲自动演奏模块编写选择器设计顶层文件综合编译、试验箱测试试验箱测试EDA课程设计电子琴与自动演奏53功能划分与模块化分3.1自动演奏模块自动演奏模块功能:在按下key7键后,实现可以自动播放乐曲的功能。3.1.1自动演奏设计方案(1)根据乐曲自动演奏的基本原理设计出适合EDA多功能试验箱的源程序,通过分频模块得到12MHZ的晶振;源程序编写完成,编译调试后,在实验箱上验证其功能;(2)验证模块是否能完成实践要求的所有功能;然后去掉分频模块,将功能模块做适当的修改,编译调试成功后,将其下载到CPLD实验板上。3.1.2设计步骤(1)在QuartusⅡ中建立一个工程项目文件song.qpf,并在该项目下新建VerilogHDL源程序文件song.v输入程序代码并保存。完整的VerilogHDL程序参考程序清单。(2)然后在该工程选择目标器件并对相应的引脚进行锁定,在这里所选择器件为Alter公司的EPM7064SL-44芯片。(3)对该工程文件进行全程编译处理,若在编译中发现错误,则找出错误并更正,直到编译成功。(4)最后拿出下载电缆,将此电缆的两端分别接到PC机的打印机并口和核心板上的JTAG接口上,打开电源执行下载命令,把程序下载到CPLD器件中。此时可以得到《欢乐颂》乐曲的演奏以及LED灯的明灭指示其高低音。3.2硬件电子琴模块硬件电子琴模块功能:在按下功能切换键key7后,可以实现电子琴功能,即按下key1到key7的过程中发出相应的高低音。3.2.1硬件电子琴设计方案(1)根据硬件电子琴演奏的基本原理设计出适合EDA多功能试验箱的源程序,通过分频模块得到12MHZ的晶振;源程序编写完成,编译调试后,在实验箱上验证其功能;(2)验证模块是否能完成实践要求的所有功能;然后去掉分频模块,将功能模块做适当的修改后,编译调试成功后,将其下载到CPLD实验板上。3.2.2设计步骤(1)在QuartersII中建立一个工程项目文件beep1.qpf。并在该项目下新建VerilogHDL源程序文件beep1.v,输入程序代码并保存,进行综合编译,若在编译中发现错误,则找出并更正错误,直至编译成功为止。(2)选择目标器件并进行引脚锁定。将未使用的管脚设置为三态输入。(3)对该工程文件进行全程编译处理。若在编译过程中发现错误,则找出并更EDA课程设计电子琴与自动演奏6正错误,直到编译成功为止。(4)将产生的beep1.sof输出对FPGA进行配置。按下按键KEY1~KEY8就可以开始使用电子琴来演奏音乐了。4课程设计原理4.1硬件电子琴设计原理乐曲演奏的原理是:由于组成乐曲的每个音符的频率值(音调)及其持续时间(音长)是乐曲演奏的2个基本数据,因此需要控制输出到扬声器的激励信号的频率高低和该频率信号持续的时间。频率的高低决定了音调的高低,而乐曲的简谱与各音名的频率对应关系在后面将给出。所有不同频率的信号都是从一基准频率分频而得来的,由于音阶频率多为非整数,而分频系数有不能为小数,故必须将计算得到的分频数进行向下取整,基准频率和分频系数应综合考虑加以选择,从而保证音乐不会走调。如在48MHz时钟下,中音1(对应的频率值是523.3Hz)的分频系数应该为:48000000/(2*523.3)=45863,这样只需对系统时钟进行45863次分频即可得到所要的中音M1(分频系数计算公式为D=F/2K,由于F/2K之后,会使分频系数D变小,所以功能模块中语句:beep_r=!beep_r,使得输出取反,K=F/2count_end,消除了前面除以2K的影响)。4.2乐曲自动演奏设计原理硬件电路和自动演奏的原理同硬件电子琴实验原理类似。至于其他音符,同样可由一式求出对应的分频系数。在程序中设置一个状态机,每250ms改变一个状态(即一个节拍),组成乐曲的每个音符的频率值(音调)相对应于状态机的每一个状态。只要让状态机的状态按顺序转换,就可以自动演奏播放音乐了。《欢乐颂》乐曲的简谱如图所示:图4-1《欢乐颂》简谱图EDA课程设计电子琴与自动演奏74.3消抖原理作为机械开关的键盘,在按键操作时,由于机械触点的弹性及电压突跳等原因,在触点闭合或开启的瞬间会出现电压抖动,实际应用中如果不进行处理将会造成误触发。由于这里是低电平表示按键按下,所以按键去抖动的关键在于提取稳定的低电平状态,虑除前沿、后沿抖动毛刺。对于一个按键信号,可以用一个脉冲对他进行取样,如果连续三次取样为低电平,可以认为信号已经处于键稳定状态,这时输出一个低电平按键信号。继续取样的过程中如果不能满足连续三次取样为低,则认为键稳定状态结束,这时输出变为高电平。5各模块的实现方法5.1选择器模块实现方法经过小组讨论和老师的指导,我们确定以下三种方案以实现功能切换。方案A添加使能端控制两个模块工作状态。即当KEY8没有按下时,硬件电子琴模块工作,乐曲自动演奏模块不工作;当KEY8按下时,硬件电子琴不工作,乐曲自动演奏模块工作。于是,需要给两个模块分别添加使能控制端,以控制其工作状态,而选择器就负责检测KEY8按键的状态,同时给出相应的使能信号输出指示。方案B通过控制时钟信号输入与否来控制两个模块工作状态。即当KEY8没有按下时,给硬件电子琴模块时钟信号,使其工作,将乐曲自动演奏模块的时钟信号屏蔽,使其不工作;当KEY8按下时,将硬件电子琴时钟信号屏蔽,使其不工作,给乐曲自动演奏模块时钟信号,使其工作。于是,需要让选择器实现时钟信号的选择输出,以分别给两个模块时钟信号。方案C方案A、B都是对输入进行控制,换一个思路,我们可以对输出进行控制。即让两个模块都工作,但是输出的部分添加选择器,有选择输出信号。当KEY8没有按下时,硬件电子琴的模块输出接到蜂鸣器和LED灯;当KEY8按EDA课程设计电子琴与自动演奏8下时,乐曲自动演奏模块输出接到蜂鸣器和LED灯。由于三种方式实现的手段都不相同,逐一尝试后再进行取舍。对于方案A,经过编译下载到试验箱之后,虽然添加使能端可以达到切换功能,但是由于存在时钟信号与使能不同步的原因,在实验箱上就会出现按下按键后不能完全切换,需要等待对应的时钟信号出现后才能将功能切换过去。对于方案B,经过编译下载到实验箱之后,我们发现由于时钟信号有高低变化的电平出现,在切换的过程中,考虑到器件的延时,会出现无法考虑到的情况,对于两个模块很难达到切换。于是,我们改变了思路,采用方案C,从输出进行控制,通过将蜂鸣和LED灯的输入和两个模块的输出有选择的匹配进行切换。通过编译下载到实验箱验证可以实现功能,而且在两种状态的切换时,不会出现无法控制的状况。5.2自动演奏模块实现方法通过参照实验课本,我们根据相关实验对试验程序进行了简单修改,得到了本次自动演奏模块的歌曲《欢乐颂》,实现其自动演奏功能。对于自动演奏模块而言,要实现其功能,只需要在顶层模块中添加触发自动演奏模块的触发点,在本程序中,即按下key8按键,屏蔽掉硬件电子琴的时钟信号,而使自动演奏模块的电子时钟信号作为使能信号。在自动演奏模块中,首先计算出各个音符所对应的参数,对参数进行定义和设计。通过对晶振的控制实现每个音响应时间的长短并且可以修改相关参数实现音长的改变。演奏过程中,设置循环体,即每次演奏结束,可以再从头开始演奏,从而实现自动演奏的自动功能。程序中可以设置每次循环时间,也可以设置循环中断。每个音符都需要驱动蜂鸣器实现其功能。最后,自动演奏模块中,需要有LED灯的指示,对于这样的要求,我们在程序最后添加了assign赋值语句。实现了每个音符响时对应的LED灯点亮。对于在实验中没有出现的音符所对应的LED灯则设置为高阻态,从而屏蔽LED灯点亮。在程序中,通过控制TIME从而得到每个音阶所响应的时间,不同晶振所对应的的时间为1s,对应的时间可以控制振荡次数实现控制时间的长短。if(state==8'd125)state=8'd0;语句实现的是自动演奏循环和实现歌曲演奏长EDA课程设计电子琴与自动演奏9短。通过系应该参数从而使歌曲唱到想要唱到的部分。5.3硬件电子琴模块实现方法在原理部分我们已经知道了硬件电子琴和自动演奏乐曲的原理是相同的,因此在知道了如何实现乐曲演奏模块的方法后,对于硬件电子琴只需要实现同样的方法,就可以实现其模块功能,只不过在硬件电

1 / 28
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功