eda课程设计VHDL音乐播放器

上传人:仙*** 文档编号:101979100 上传时间:2022-06-06 格式:DOC 页数:19 大小:143.50KB
收藏 版权申诉 举报 下载
eda课程设计VHDL音乐播放器_第1页
第1页 / 共19页
eda课程设计VHDL音乐播放器_第2页
第2页 / 共19页
eda课程设计VHDL音乐播放器_第3页
第3页 / 共19页
资源描述:

《eda课程设计VHDL音乐播放器》由会员分享,可在线阅读,更多相关《eda课程设计VHDL音乐播放器(19页珍藏版)》请在装配图网上搜索。

1、子信息科学与技术专业课程设计任务书学生姓名专业班级学号题 目乐曲自动播放器课题性质工程设计课题来源自拟课题指导教师同组姓名主要内容自行选择一首自己喜爱的经典乐曲,用FPGA设计实现一个该曲目的自动演奏电路。任务要求1根据设计题目要求编写相应程序代码2对编写的VHDL程序代码进行编译和仿真3利用实验箱完成硬件验证4总结设计内容,完成课程设计说明书参考文献1曹昕燕. .北京: 清华大学出版社,2004年2焦素敏. . 北京: 清华大学出版社,2005年3焦素敏. . 河南工业大学,2021年4黄智伟. . 电子工业出版社,2005年5刘昌华. . 国防工业出版社,2005年审查意见指导教师签字:教

2、研室主任签字: 2021年月日一、 设计任务及要求:1根据设计题目要求编写相应程序代码。2对编写的VHDL程序代码进行编译和仿真。3利用实验箱完成硬件验证。4总结设计内容,完成课程设计说明书。用VHDL语言设计乐音的节拍与音符产生电路;用VHDL语言设计可控分频器电路;最后能够采用FPGA芯片进行音乐播放。二、 设计原理及总体框图:音调发生音调编码数控分频总体框图产生音乐的两个因素是音乐频率和音乐的持续时间,以纯硬件完成演奏电路比利用微处理器CPU来实现乐曲演奏要复杂的多,如果不借助于功能强大的EDA工具和硬件描述语言,凭借传统的数字逻辑技术,即使最简单的演奏电路也难以实现。根据设计要求,乐曲

3、硬件演奏电路系统主要由数控分频器和乐曲存储模块组成。数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。1、音名与频率的关系音乐的十二平均率规定:每两个八度音如简谱中的中音与高音之间的频率相差一倍在两个八度音之间,又可分为十二个半音,每两个半音的频率比为4。另外,音名简谱中的低音的频率为440Hz,音名B到C之间,E到F之间为半音,其余为全音,由此可以计算出简谱中从低音1到高音1之间每个音名的频率如表1所示.表1 简谱中

4、的音名与频率的关系音名频率/Hz音名频率/Hz音名频率/Hz低音1中音1高音1低音2中音2高音2低音3中音3高音3低音4中音4高音4低音5中音5高音5低音6440中音6880高音61760低音7中音7高音7由于音阶频率多为非整数,而分频系数又不能为小数,故必须将得到的分频数四舍五入取整。假设基准频率过低,那么由于分频系数过小,四舍五入取整后的误差较大,假设基准频率过高,虽然误码差变小,但分频结构将变大。实际的设计应综合考虑两方面的因素,在尽量减小频率误差的前提下取舍适宜的基准频率。本例中选取4MHz的基准频率,假设无4MHz的时钟频率,实际上,只要各个音名间的相对品频率关系不变,C作1与D作1

5、演奏出的音乐听起来都不会“走调。各音阶频率及相应的分频系数如表2所示。为了减少输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,因此在到达扬声器之前,有一个二分频的分频器。表2中的分频系数就是从4MHZ频率二分频得到的2MHZ频率根底上计算得出的。表2 各音阶频率对应的分频值音名分频系数初始值音名分频系数初始值音名分频系数初始值低音17644547中音138224369高音119116280低音268101381中音234054786高音212706921低音360672124中音330345157高音315176674低音457272464中音428645327高音414326759低

6、音551023089中音525515640高音512566935低音645453646中音622735918高音611377054低音740504141中音720256166高音710137178由于最大的分频系数为7644,故采用13位二进制计数器已能满足分频要求。在表2,除给出了分频比以外,给出了对应于各个音阶频率时计数器不同的初始值,对于乐曲中的休止符,要将分频系数设为0,即初始值为8191即可,此时扬声器将不会发声。对于不同的分频系数,加载不同的初始值即可。用加载初始值而不是将分频输出译码反应,可以有效地减少本设计占用可编程逻辑器件的资源,也是同步计数器的一个常用设计技巧。当一个4Hz

7、的时钟脉冲来到时,乐谱发生器模块输出一个音符数据给分频系数模块,分频系数模块输出此音符相应的分频系数,将分频系数送给数控分频器模块,当12MHz的时钟脉冲来到时,数控分频器就根据分频系数输出相应的频率(即此音符所对应的发生频率)给扬声器,扬声器就可发出对应音符的声音来.连续的4Hz的时钟脉冲就将乐谱发生器里所存储的音符数据一个接一个的送给了分频系数模块,再经过数控分频模块,最后扬声器一个接一个的发出音符数据所对应的声音来。曲子也就流畅的播放出来了.乐曲演奏顶层原理图三、 程序设计:1、NOTETABS模块LIBRARY IEEE;.ALL;ENTITY notetabs IS PORT(clk

8、 :IN STD_LOGIC; toneindex: OUT INTEGER RANGE 0 TO 15);END;ARCHITECTURE one OF notetabs IS SIGNAL counter:INTEGER RANGE 0 TO 139; BEGIN CNT8:PROCESS(clk) BEGIN IF counter=127 THEN counter=0; ELSIF(clkEVENT AND clk=1) THEN counter toneindex toneindex toneindex toneindex toneindex toneindex toneindex t

9、oneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex t

10、oneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex t

11、oneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex t

12、oneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex t

13、oneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindexNULL; END CASE; END PROCESS;END;2、TONETABA模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Tonetaba IS PORT(index : IN INTEGER RANGE 0 TO 15; code : OUT INTEGER RANGE 0 TO

14、 15; high : OUT STD_LOGIC ; tone : OUT INTEGER RANGE 0 TO 16#7FF# );END;ARCHITECTURE one OF Tonetaba ISBEGIN SEARCH: PROCESS(index) BEGIN CASE index IS WHEN 0 = tone=2047;code=0;high tone=773;code=1;high tone=912;code=2;high tone=1036;code=3;high tone=1197;code=5;high tone=1290;code=6;high tone=1372

15、;code=7;high tone=1410;code=1;high tone=1480;code=2;high tone=1542;code=3;high tone=1622;code=5;high tone=1668;code=6;high tone=1728;code=1;high NULL; END CASE; END PROCESS;END;3、SPEAKERA模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY speakera IS PORT(clk :IN STD_LOGIC; tone:IN INTEGER RANGE 0 TO

16、16#7FF#; spks: OUT STD_LOGIC);END;ARCHITECTURE one OF speakera IS SIGNAL preclk:STD_LOGIC; SIGNAL fullspks:STD_LOGIC;BEGIN divideclk:PROCESS(clk) VARIABLE count4:INTEGER RANGE 0 TO 15; BEGINpreclk11 THEN preclk=1;count4:=0; ELSIF clkEVENT AND clk=1 THEN count4:=count4+1; END IF; END PROCESS; genspks

17、:PROCESS(preclk,tone) VARIABLE count11: INTEGER RANGE 0 TO 16#7FF#; BEGIN IF preclkEVENT AND preclk=1 THEN IF count11=16#7FF# THEN count11:= tone; fullspks=1; ELSE count11:=count11+1; fullspks=0; END IF; END IF; END PROCESS; delaysks:PROCESS(fullspks) VARIABLE count2:STD_LOGIC; BEGIN IF fullspks EVE

18、NT AND fullspks=1 THEN count2:= NOT count2; IF count2=1 THEN spks=1; ELSE spksCLK8HZ,TONEINDEX=TONEINDEX);U2:TONETABA PORT MAP(INDEX=TONEINDEX,TONE=TONE,CODE=CODE1,HIGH=HIGH1);U3:SPEAKERA PORT MAP(CLK=CLK12MHZ,TONE=TONE,SPKS=SPKOUT);END;四、编译及仿真:NOTETABS模块的仿真TONETABA模块的仿真SPEAKERA模块的仿真顶层文件仿真图五、硬件调试及结果

19、分析顶层文件编译仿真好之后,通过电脑连接到硬件上,下载顶层文件到FPGA里,下载完毕之后,输入clk12MHz与clock9相接,接收12MHz时钟频率,输入clk8Hz与clock2相接,接收4Hz的时钟频率。发音输出SPKOUT接speaker,HIGH是高八度音指示,code1输出是演奏发音相对应的简谱码。然后 就能听到对应的乐曲。六、参考文献:1曹昕燕. .北京: 清华大学出版社,2004年2焦素敏. . 北京: 清华大学出版社,2021年3焦素敏. . 河南工业大学,2021年4黄智伟. . 电子工业出版社,2005年5刘昌华. . 国防工业出版社,2005年七、心得体会: 通过这次课程设计,我的EDA得到了很大的提高。刚开始没有思路,也是参考网络和书籍,还有同学的帮助,才能完成。当然中间也有很多的问题。例如以前对LPM_ROM不是很熟悉,通过音乐播放器对它有了进一步的了解。也大大的锻炼了我们的动手能力。团结的力量是巨大的。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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