乐曲硬件演奏电路设计(21页).doc

上传人:1595****071 文档编号:35070972 上传时间:2022-08-20 格式:DOC 页数:21 大小:300.50KB
返回 下载 相关 举报
乐曲硬件演奏电路设计(21页).doc_第1页
第1页 / 共21页
乐曲硬件演奏电路设计(21页).doc_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《乐曲硬件演奏电路设计(21页).doc》由会员分享,可在线阅读,更多相关《乐曲硬件演奏电路设计(21页).doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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模块的程序16 3Son

2、ger顶层文件的仿真图形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总体框图该主系统由三个模块:tonetaba

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

6、全音符设为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/4拍的整数倍)

8、,则需将这个音符存储在相应次数的连续几个地址上。随着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 ISSIGNAL CounTer : INTEGER RANGE

9、0 TO 138; BEGIN CNT8 : PROCESS(clk1, Counter)BEGINIF Counter = 138 THEN Counter=0;elsif (clk1EVENT AND clk1 =1) THEN CounterToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneI

10、ndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneInde

11、xToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexTo

12、neIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneI

13、ndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexTone=2047;CODE=0000;HIGHTone=773;CODE=0001;HIGHTone=912;CODE=0010;HIGHTone=1036;CODE=0011;HIGHTone=1197;CODE=0101;HI

14、GHTone=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对于Speakera模块 图4.

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

16、7低音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.0972481799高音41609.

17、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 ISSIGNAL PreCLK : STD_LOGIC;SIGNAL FullSpkS

18、 : STD_LOGIC;BEGIN DivideCLK : PROCESS(clk2)VARIABLE Count4 : INTEGER RANGE 0 TO 15;BEGIN PreCLK11 thenPreCLK=1;Count4 :=0;ELSIF clk2EVENT AND clk2 =1THENCount4 := Count4 + 1;END IF;END PROCESS;GenSpkS : PROCESS(PreCLK, Tone)VARIABLE Count11 : INTEGER RANGE 0 TO 16#7FF#;BEGINIF PreCLKEVENT AND PreCL

19、K = 1 THENIF Count11 = 16#1FFF# THENCount11 := 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=1THENCount2 :=NOT Count2;IF Count2=1THEN SpkS=1;else SpkSCLK1, ToneIndex = To

20、neIndex);u2 : ToneTaba PORT MAP (Index = ToneIndex, Tone=Tone,CODE=CODE,HIGH=HIGH);u3 : Speakera PORT MAP (clk2 = CLK2,Tone=Tone,SpkS=SPKOUT);END;3、Songer顶层文件的仿真图形:图5.3 Songer顶层文件的仿真图形4、锁定引脚按照下表表一所示对应关系锁定引脚。名称引脚Clk14hzPIN_79CLK212MhzPIN_183CODE10PIN_39CODE11PIN_40CODE12PIN_41CODE13PIN_42HIGHPIN_49SP

21、KOUTPIN_50表2 锁定引脚PIN_79管脚与clk1相接输入8HZ频率,PIN_183管脚接clk2相接输入12MHZ频率,PIN_39管脚CODE10,PIN_40管脚CODE11,PIN_41管脚CODE12,PIN_42管脚接CODE13,48管脚接CODE14数码显示器,用来显示歌曲音符名49管脚接HIGH高电频由发光二极管显示高音,50管脚接SPKOUT发音输出.5、下载验证六结束语本文介绍了基于FPGA的音乐硬件演奏电路的设计,实现了一个乐曲播放器,而且描述了其工作原理、设计思路及实现方法,并在Quartus上选用目标芯片仿真实现了音乐硬件演奏电路的功能。实践证明:采用FP

22、GA设计实现音乐硬件演奏电路的可行性和可靠性,而且更改乐曲容易,从而使电路实现任一曲子的播放。这种基于FPGA的音乐硬件演奏电路的设计与实现,不仅通过VHDL层次化和模块化设计方法,同时采用数控分频的设计思想,更好的优化了乐曲演奏数字电路的设计,在此基础上不必变化顶层文件架构可随意变更乐曲,有效缩短了产品开发周期、减少了设计芯片的数量、降低了功耗、提高了设计的灵活性、可靠性和可扩展性。七心得体会 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。通过这次课程设计,开始了解了日常生活中的一些基本的用电器原理。回顾此

23、次课程设计,从书籍,网络不断的寻找到设计电路,从拿到题目到完成整个设计,从理论到实践,可以学到很多很多的的东西。对课本知识的进一步加深的同时学到了很多在书本上没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的。把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。八参考文献1、刘江海 EDA课程设计。华中科技大学出版社,2009年2、百度文库.VHDL. 3 潘松.EDA技术使用教程.科学出版社,2004年-第 21 页-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁