电气2班童瑶乐曲演奏实验设计.docx
- 文档编号:29755738
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:11
- 大小:1.36MB
电气2班童瑶乐曲演奏实验设计.docx
《电气2班童瑶乐曲演奏实验设计.docx》由会员分享,可在线阅读,更多相关《电气2班童瑶乐曲演奏实验设计.docx(11页珍藏版)》请在冰豆网上搜索。
电气2班童瑶乐曲演奏实验设计
2014-2015学年第1学期
山东科技大学电工电子实验教学中心
创新性实验研究报告
实验项目名称__乐曲硬件演奏电路设计_
组长姓名童瑶学号4
联系电话
成员姓名学号
成员姓名学号
专业电气工程及其自动化班级2012-2
指导教师及职称吕常智
2015年1月15日
一、实验摘要
本实验是要完成一小段音乐程序的开发,然后再用扬声器进行试听。
本实验主要分析了乐曲演奏设计中音符、频率、节拍与编码的相互关系,并在EDA开发工具MAX-plusII平台上,采用VHDL语言及原理图的设计方法,实现了基于FPGA片上系统动态显示可选择“梁祝”乐曲的乐曲演奏器的设计,使乐曲演奏数字电路的设计得到了更好的优化,提高了设计的灵活性。
二、实验目的
了解一般乐曲演奏电路设计设计方法,学习VHDL语言,熟悉EDA设计软件QuartusII,加强独立完成电子设计的能力。
(1)能够播放“梁祝”乐曲使乐曲演奏数字电路的设计得到了更好的优化,提高了设计的灵活性。
(2)能够通过LED显示音阶。
三、实验场地及仪器、设备和材料:
实验场地:
山东科技大学EDA实验室
实验仪器:
实验箱GW48EDA/SOPC
硬件要求:
选择模式五,频率选择4MHZ和12MHZ
四、实验内容
1、实验原理
本实验是要完成一小段音乐程序的开发,然后再用扬声器进行试听。
下面主要介绍一下完成本实验的几个主要部分的工作原理.
音符的产生:
音符的产生是利用计数器对输入的时钟信号进行分频,然后输出不同的频率来控制扬声器发出不同的声音。
计数器必须是模可变的计数器,也就是其初始值可变,这样便可以对其进行初始化,使其从不同的初始值开始计数,实现对输出时钟信号的不同分频。
节拍的产生:
节拍也是利用计数器来实现的,如果某一个音符需要维持的时间比较长,那么就可以在此计数器从计数值A到计数值B之间都维持该音符,很显然,A和B之间的间隔越大,那么该音符维持的时间也就越长。
乐谱的存储:
乐谱是一个固定的组合电路,根据不同的输入值,然后输出一个固定的值,该值就是音符产生计数器的分频的初始值。
适当的选择这些计数器和组合电路,便可完成不同的乐曲和不同的节奏。
乐曲演奏电路的结构框图如下:
图1乐曲演奏电路结构框图
(1)音符与频率的关系
各音阶频率计相应的分频系数如表1所示。
为了减少输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,因此在到达扬声器之前,又经过一个2分频的分频器。
表1的分频系数就是从4MHZ频率2分频得到的2MHZ频率基础上计算得出的。
表1各音阶频率对应的分频表
音名
分频系数
初始值
音名
分频系数
初始值
音名
分频系数
初始值
低音1
7644
547
中音1
3822
4369
高音1
1911
6280
低音2
6810
1381
中音2
3405
4786
高音2
1270
6921
低音3
6067
2124
中音3
3034
5157
高音3
1517
6674
低音4
5727
2464
中音4
2864
5327
高音4
1432
6759
低音5
5102
3089
中音5
2551
5640
高音5
1256
6935
低音6
4545
3646
中音6
2273
5918
高音6
1137
7054
低音7
4050
4141
中音7
2025
6166
高音7
1013
7178
由于最大分频系数是7644,故采用13位二进制计数器已能满足分频的要求。
在表2中,除了给出了分频比例外,还给出了对应于各个音阶频率时计数器不同的初始值,对于乐曲中的休止符,要将分频系数设为0,即初始值位8191即可,此时扬声器将不会发声。
对于不同的分频系数,加载不同的初始值即可。
用加载初始值而不是将分频输出译码反馈,可以有效地减少成本设计占用可编程逻辑器件的资源,也是同步计数器一个常用设计技巧。
(2)控制音长的节拍发生器
该演奏电路演奏的乐曲是“梁祝”片段,其最小的节拍是1拍。
将1拍的时间定为0.25S,则只需要再提供一个4HZ的时钟频率即可产生1拍的时长,演奏的时间控制通过ROM查表得方式完成。
对于占用时间较长的节拍(一定是拍的整数倍),如全音符为4拍(重复4次),2/4音符为2拍(重复2次),1//4音符为1拍(重复1次)。
要求演奏时能循环进行,因此需要另外设置一个时长计数器,当乐曲演奏完成时,保证能自动从头开始演奏。
实验原理图为:
2、实验内容
根据层次化的设计思路,可把乐曲硬件演奏电路分为3个模块,音乐节拍发生器NoteTabs模块,音符译码电路ToneTaba模块,数控分频模块(Speakera)。
(1)音乐节拍发生器NoteTabs
该模块将利用FPGA的片内POM存放两首乐曲简谱真值表,该计数器的计数频率为4HZ,即每一个数值的停留时间为0.25S,随着NoteTabs中计数器按4HZ的时钟频率做加法计数时,乐符数据转向音符译码电路ToneTaba,所以所存的乐曲就自然的演奏起来。
(2)音符译码电路ToneTaba模块
音符译码电路即音调发生器实际上是一个翻译电路,根据输入为数控分频模块提供所发音符频率的初始值,而此数控分频模块入口的停留时间即为此音符的节拍数。
在源程序中Index是音乐节拍发生器输出的音符数据;TONE是为数控分频模块提供的音符频率的初始值,为方便测试,特设置了一个音名代码显示输出CODE和音高指示信号HUGH可以通过数码管或LED来显示乐曲演奏时对应的音符和高音名。
CODE输出对应该音阶简谱的显示数码1,HIGH输出为高电平,指示音阶为高,HIGH输出为低电平时,则指示音阶为中音。
(3)数控分频模块(Speakera)设计
数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。
数控分频模块是13位的加法计数器构成。
当计数器计满是,产生一个进位信号FULLSPKS,该信号就是用作发音的频率信号。
在即使器的预置端给定不同的初始值,其输出将产生不同的频率信号,频率信号初值Tone就是前级音符译码电路的输出。
低音时,Tone值小,分频比大,进位信号SPKS的周期长,扬声器发出的声音低,Tone随音乐的乐谱而变化,自动控制分频比,从而实现数控分频,发生信号的频率与Tone成正比,这就是利用数控分频器演奏音乐的原理。
3、实验步骤
本实验要完成的任务是设计一个驱动扬声器产生梁祝音乐的程序,设计步骤如下:
1)、编写音乐输出的VHDL语言代码。
2)、用Quartus-II对其进行编译仿真,知道程序中没有错误为止。
3)、在仿真确定无错误后,选定FPGA的芯片类型是ACEXIK EP1K10TC100-3,在“Device
and Pin Option”的选项内把还没有用的管脚的输入形式改为“三态输入”,配置设备最好是选用“EPCS4”的这种类型。
4)、对应于上面选定的芯片进行管脚配置,在次基础上再次进行编译,主要是将管脚的
配置信息整合的程序中去。
5)、根据自己配置好的管脚信息,在实验箱上对扬声器接口、时钟接口和我们已经选定
的FPGA进行正确连线。
6)、在软件上进行实验所需硬件进行加载,加载后把已经编译好的音乐输出的VHDL语
言代码下载到我们已经选定的FPGA中,下载完成后我们就可以开始观察实验结果了,不断调整输入的时钟频率,直到音乐可以比较流畅、缓和地播放出来为止。
4、乐曲硬件演奏电路的顶层设计和仿真
乐曲硬件演奏电路顶层电路分为3个模块,音乐节拍发生器NoteTabs模块,音符译码电路Tonetabs模块,数控分频模块(speaker)。
其顶层设计可以用VHDL语言设计(见附件)也可以用原理图设计,如图:
图顶层设计原理图
顶层仿真图如图
图顶层模块仿真波形
实验箱上选择模式五:
频率选择4MHZ和12MHZ:
数码管显示音阶,例如:
管脚图:
下载程序图:
五、实验结果与分析
该演奏电路演奏的乐曲是“梁祝”片段,其最小的节拍是1拍。
将1拍的时间定为0.25S,则只需要再提供一个4HZ的时钟频率即可产生1拍的时长,演奏的时间控制通过ROM查表得方式完成。
对于占用时间较长的节拍(一定是拍的整数倍),如全音符为4拍(重复4次),2/4音符为2拍(重复2次),1//4音符为1拍(重复1次)。
要求演奏时能循环进行,因此需要另外设置一个时长计数器,当乐曲演奏完成时,保证能自动从头开始演奏。
六、实验结论
在两天紧张而又忙碌的课程设计中,我们进一步的了解了EDA技术,应用也更加自如。
本次乐曲硬件演奏电路的VHDL设计主要采用数控分频原理来实现,在本次EDA课程设计中,我与其他同学相互交流,相互学习,提高了用VHDL语言编程的技能及进一步加强了MAX+plusⅡ对这种EDA流行软件的应用,通过这次设计,我们温故了已学的理论知识和实践操作技能,同时也学习了更多的新的知识和技能,为以后进一步的学习和工作打下了坚实的基础。
本设计得到的电路可以作为一个乐曲演奏模块,如果要演奏出另外一首曲子,只需将该曲子出现的简谱分频预置数写入ToneTaba.VHD,再将该曲子的节拍表制作成ROM文件输入到NoteTabs.VHD中,编译后,编程下载即可。
这两天中,虽然我们的任务重、时间紧,但是在同学与老师的细心帮助下,我们更多的交流讨论,最终克服了各种难题,完成了我们的设计。
设计中我们应用很多现代化的的信息工具查找资料,解决问题的同时,拓宽了知识面,了解了更多的前沿科技,感觉收获颇丰。
学习中,我们遇到了难题,碰到了困难但在老师的帮助下,都得到了顺利的解决。
通过这次设计,我们提高自身的专业知识,培养了创新能力和现代意识,促使我们在以后工作中会进一步更新观念、理清思路,创造更好的成绩。
七、指导老师评语及得分:
签名:
年月日
附件:
LIBRARYIEEE;--硬件演奏电路顶层设计
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYSongerIS
PORT(CLK12MHZ:
INSTD_LOGIC;--音调频率信号
CLK8HZ:
INSTD_LOGIC;--节拍频率信号
CODE1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);--简谱码输出显示
HIGH1:
OUTSTD_LOGIC;--高8度指示
SPKOUT:
OUTSTD_LOGIC);--声音输出
END;
ARCHITECTUREoneOFSongerIS
COMPONENTNoteTabs
PORT(clk:
INSTD_LOGIC;
ToneIndex:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCOMPONENT;
COMPONENTToneTaba
PORT(Index:
INSTD_LOGIC_VECTOR(3DOWNTO0);
CODE:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
HIGH:
OUTSTD_LOGIC;
Tone:
OUTSTD_LOGIC_VECTOR(10DOWNTO0));
ENDCOMPONENT;
COMPONENTSpeakera
PORT(clk:
INSTD_LOGIC;
Tone:
INSTD_LOGIC_VECTOR(10DOWNTO0);
SpkS:
OUTSTD_LOGIC);
ENDCOMPONENT;
SIGNALTone:
STD_LOGIC_VECTOR(10DOWNTO0);
SIGNALToneIndex:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
u1:
NoteTabsPORTMAP(clk=>CLK8HZ,ToneIndex=>ToneIndex);
u2:
ToneTabaPORTMAP(Index=>ToneIndex,Tone=>Tone,CODE=>CODE1,HIGH=>HIGH1);
u3:
SpeakeraPORTMAP(clk=>CLK12MHZ,Tone=>Tone,SpkS=>SPKOUT);
END;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电气 班童瑶 乐曲 演奏 实验设计