ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:122.86KB ,
资源ID:24787239      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24787239.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(乐曲硬件演奏电路设计.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

乐曲硬件演奏电路设计.docx

1、乐曲硬件演奏电路设计江西理工大学应用科学学院SOPC/EDA综合课程设计报告设计题目: 硬件音乐演奏电路设 计 者: 徐达健 学 号: 08040108131班 级: 测控081指导老师: 王忠锋完成时间: 2011年01月07日设计报告综合测试总评格式(10)内容(40)图表(10)答辩(20)平时(20)一:设计原理3二:总体框图5三:选择器件7四:功能模块:8 1:NoteTabs模块(程序 仿真图)8 2:ToneTaba模块(程序 仿真图)11 3:Speakera模块(程序 仿真图)12五:总体设计电路图16 1顶层设计的电路原理图(Songer模块)16 2Songer模块的程序

2、16 3Songer顶层文件的仿真图形174、锁定引脚175、下载验证18六:结束语19七:心得体会20八:参考文献21一、设计原理1.音乐演奏电路原理这种频率的振荡可以用不同音符的代码所控制,从而分出不同频率的振荡,它采用编程方式将各种音符的代码预先存的计算机的内存中,利用软件和一定硬件电路配合将存放的乐曲代码有节地进行演奏,产生电子音乐。乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。图1.1 音乐演奏电路原理图2.音符频率的获得多本文中选取750KHz的基准频率。由于现有的高频时钟脉冲信号的频率为12MHz,故需先对其进行16分频,才能获得750KHz的基准频率。对

3、基准频率分频后的输出信号是一些脉宽极窄的尖脉冲信号(占空比=1/分频系数)。为提高输出信号的驱动能力,以使扬声器有足够的功率发音,需要再通过一个分频器将原来的分频器的输出脉冲均衡为对称方波(占空比=1/2),但这时的频率将是原来的1/2。表1中各音符的分频系数就是从750KHz的基准频率二分频得到的375KHz频率基础上计算得到的。由于最大分频系数是1274,故分频器采用11位二进制计数器能满足要求,乐曲中的休止符,只要将分频系数设为0,即初始值=2048-1=2047,此时扬声器不会发声。3.乐曲节奏的控制本文中的梁祝乐曲,最小的节拍为1/4拍,若将1拍的时间定为1秒,则只需要提供一个4Hz

4、的时钟频率即可产生1/4拍的时长(0.25秒),对于其它占用时间较长的节拍(必为1/4拍的整数倍)则只需要将该音符连续输出相应的次数即可。计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低。4.乐谱发生器本文将乐谱中的音符数据存储在NoteTABS中,如“梁祝”乐曲中的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒的时间,相应地,音符“3”就要在NoteTABS中连续的四个地址上都存储。当一个4Hz的时钟来时,相应地存入NoteTABS中一个音符数据。二、总体框图 图2.1总体框图该主系统由三个模块:t

5、onetaba.vhd、notetabs.vhd、speakera.vhd组成。首先定制notetabs.vhd、模块中的音符数据。根据给出的乘法器逻辑原理图及其模块的VHDL描述在Quartus II完成设计。完成编译,综合,仿真,管教分配,编程下载。1对于模块NoteTabs的功能描述:该模块的功能就是定义音符数据随着该模块中的计数器控制时钟频率速率作加法计数时,即地址值递增时,音符数据中的音符数据。将从中通过ToneIndex4.0端口输向ToneTaba模块,演奏梁祝。在该模块中设置了一个8位二进制计数器(计数最大值为256)。这个计数器的计数频率为4Hz,即每一计数值的停留时间为0.

6、25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。2对于模块ToneTaba,是乐曲简谱码对应的分频预置数查找表电路,其中设置了乐曲的全部音符所对应的分频置数,每一音符的停留时间由音乐节拍和音调发生器模块NoteTabs的CLK的输入频率决定,这些值由对应于ToneTaba的5位输入值Index4.0确定,最多有32种可选值。输向ToneTaba中Index4.0的值ToneIndex4.0的输出值与持续的时间由模块NoteTabs决定。3模块Speakera是一个数控分频器,音符的频率可由此模块获得。由CLK端输入一个具有较高频率的信号,通过Speakera分频后由SPKOUT输出。

7、由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号。为了利用驱动扬声器,需加一个D触发器以均衡其占空比,频率将是原来的1/2。Speakera对CLK输入信号的分频比由预置数Tone决定。SPKOUT的输出频率将决定每一音符的音调。三、选择器件模块NoteTabs,模块ToneTaba,模块Speakera,装有Quartus II软件的电脑。四、功能模块1对于模块NoteTabs 图4 .1模块NoteTabs我们可以直接将音符数据输送到NoteTabs模块中,它首先是编写音符数据文件,将乐谱中相应的音符存放在一个连续的地址上。因为1拍的时间定为1秒,提供的是4Hz的时钟频率(即1/

8、4拍的整数倍),则需将这个音符存储在相应次数的连续几个地址上。随着NoteTabs中的计数器按时钟频率速度作加法计数时,音符数据将从中通过ToneIndex端口输向ToneTaba模块。NoteTabs中的音符数据模块程序为LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY NoteTabs IS PORT(clk1 : IN STD_LOGIC;-4HZ; ToneIndex : OUT INTEGER RANGE 0 TO 15);END;ARCHITECTURE one OF NoteTabs IS SIGNAL CounTer : INTEG

9、ER RANGE 0 TO 138; BEGIN CNT8 : PROCESS(clk1, Counter) BEGIN IF Counter = 138 THEN Counter=0; elsif (clk1EVENT AND clk1 =1) THEN CounterToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexTo

10、neIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneI

11、ndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneInde

12、xToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexTo

13、neIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexTone=2047;CODE=0000;HIGHTone=773;CODE=0001;HIGHTone=912;CODE=0010;HIGHTone=1036;CODE=0011;HIGHTone=1197;

14、CODE=0101;HIGHTone=1290;CODE=0110;HIGHTone=1372;CODE=0111;HIGHTone=1410;CODE=0001;HIGHTone=1480;CODE=0010;HIGHTone=1542;CODE=0011;HIGHTone=1622;CODE=0101;HIGHTone=1668;CODE=0110;HIGHTone=1728;CODE=0001;HIGHTone=0; END CASE; END PROCESS;END;该模块的波形图为 图4.4 模块ToneTaba的波形图该仿真的结果符合TONETABA模块中的分频预置数及频率。3对于

15、Speakera模块 图4.5 Speakera模块音符的频率是由该模块获得音符频率的获得:多个不同频率的信号可通过对某个基准频率进行分频器获得。该程序选取750KHz的基准频率。由于现有的高频时钟脉冲信号的频率为12MHz,需对其进行16分频,才能获得750KHz的基准频率。对基准频率分频后的输出信号是一些脉宽极窄的尖脉冲信号。为提高输出信号的驱动能力,以使扬声器有足够的功率发音,需要再通过一个分频器(D触发器)将原来的分频器的输出脉冲均衡为对称方波,这时的频率将是原来的1/2,即为375KHz。表1 各个音符的频率及其对应的分频系数(基准频率375KHz)音符名频 率(Hz)分频系数计数初

16、值休止符37500002047低音1294.3491274773低音2330.3961135912低音3370.9210111036低音4386.5989701077低音5394.7379501197低音6495.3767571290低音7555.566751372中音1588.6976371410中音2638.845871480中音3742.5745051542中音4796.1784681579中音5882.3534251622中音6989.4463791668中音71136.3633301717高音11175.5493191728高音21353.7902771770高音31512.0972

17、481799高音41609.4422331814高音51802.8842081839高音62027.0271851862高音72272.7271651882Speakera的模块程序为:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Speakera IS PORT (clk2 : IN STD_LOGIC; Tone : IN INTEGER RANGE 0 TO 16#7FF#; SpkS : OUT STD_LOGIC); END; ARCHITECTURE one OF Speakera IS SIGNAL PreCLK : STD_LO

18、GIC; SIGNAL FullSpkS : STD_LOGIC; BEGIN DivideCLK : PROCESS(clk2) VARIABLE Count4 : INTEGER RANGE 0 TO 15; BEGIN PreCLK11 then PreCLK=1; Count4 :=0; ELSIF clk2EVENT AND clk2 =1THEN Count4 := Count4 + 1; END IF; END PROCESS;GenSpkS : PROCESS(PreCLK, Tone) VARIABLE Count11 : INTEGER RANGE 0 TO 16#7FF#

19、; BEGIN IF PreCLKEVENT AND PreCLK = 1 THEN IF Count11 = 16#1FFF# THEN Count11 := Tone ; FullSpkS = 1; ELSE Count11 := Count11 + 1; FullSpkS=0; END IF; END IF; END PROCESS; DelaySpkS: PROCESS(FullSpkS) VARIABLE Count2 : STD_LOGIC; BEGIN IF FullSpkSEVENT AND FullSpkS=1THEN Count2 :=NOT Count2; IF Count2=1THEN SpkS=1; else SpkS=0; END IF; END IF; END PROCESS ;END;该模块的仿真图如下: 图4.6模块Speakera的仿真图五:总体设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1