EDA课程设计音乐播放器.doc

上传人:仙人指路1688 文档编号:4146467 上传时间:2023-04-07 格式:DOC 页数:23 大小:247.50KB
返回 下载 相关 举报
EDA课程设计音乐播放器.doc_第1页
第1页 / 共23页
EDA课程设计音乐播放器.doc_第2页
第2页 / 共23页
EDA课程设计音乐播放器.doc_第3页
第3页 / 共23页
EDA课程设计音乐播放器.doc_第4页
第4页 / 共23页
EDA课程设计音乐播放器.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《EDA课程设计音乐播放器.doc》由会员分享,可在线阅读,更多相关《EDA课程设计音乐播放器.doc(23页珍藏版)》请在三一办公上搜索。

1、EDA课程设计音乐播放器一、前言1、课程的目的与任务 EDA课程设计(注:EDA即电子设计自动化,Electronics Design Automation)是继模拟电子技术基础、数字电子技术基础、电子技术基础实验课程后,电气类、自控类和电子类等专业学生在电子技术实验技能方面综合性质的实验训练课程,是电子技术基础的一个部分,其目的和任务是通过一周的时间,让学生掌握EDA的基本方法,熟悉一种EDA软件(MAXPLUS2),并能利用EDA软件设计一个电子技术综合问题,并在实验板上成功下载,为以后进行工程实际问题的研究打下设计基础。2、课程的基本要求1、 通过课程设计使学生能熟练掌握一种EDA软件(

2、MAXPLUS2)的使用方法,能熟练进行设计输入、编译、管脚分配、下载等过程。2、 通过课程设计使学生能利用EDA软件(MAXPLUS2)进行至少一个电子技术综合问题的设计(内容可由老师指定或自由选择),设计输入可采用图形输入法或AHDL硬件描述语言输入法。3、 通过课程设计使学生初步具有分析寻找和排除电子电路中常见故障的能力。4、 通过课程设计使学生能独立写出严谨的、有理论根据的、实事求是的、文理通顺的字迹端正的课程设计报告。3、与其他课程的联系与分工EDA课程设计中应用了模拟电子技术基础、数字电子技术基础中的基础知识和基本理论,并且利用了电子技术基础实验中的基本实验方法,在时间上的安排上应

3、该在这些课程之后。EDA课程设计的后续课程是微机原理等其它专业课程,EDA课程设计中对学生综合设计能力的培养将为这些后续课程的学习打下良好基础。二、 设计任务及要求用VHDL语言设计乐音的节拍与音符产生电路;用VHDL语言设计分频系数、音符显示数据产生电路;用VHDL语言设计可控分频器电路;理解简易音乐播放器总体设计方案。掌握基本的VHDL语言;理解音乐播放电路设计方案。掌握用VHDL语言设计节拍与音符产生电路;掌握用VHDL语言设计分频系数、音符显示数据产生电路;掌握用VHDL语言设计可控分频器电路。设计结果:原理图与原程序、电路仿真图、能在实训系统上播放悦耳动听的音乐。三、设计原理及总体框

4、图产生音乐的两个因素是音乐频率和音乐的持续时间,以纯硬件完成演奏电路比利用微处理器(CPU)来实现乐曲演奏要复杂的多如果不借助于功能强大的EDA工具和硬件描述语言,凭借传统的数字逻辑技术,即使最简单的演奏电路也难以实现。根据6.4.1的设计要求,乐曲硬件演奏电路系统主要由数控分频器和乐曲存储模块组成。数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。1、音名与频率的关系音乐的十二平均率规定:每两个八度音(如简谱中的中音

5、与高音)之间的频率相差一倍在两个八度音之间,又可分为十二个半音,每两个半音的频率比为4。另外,音名(简谱中的低音)的频率为440Hz,音名B到C之间,E到F之间为半音,其余为全音,由此可以计算出简谱中从低音1到高音1之间每个音名的频率如表1所示.表1 简谱中的音名与频率的关系音名频率/Hz音名频率/Hz音名频率/Hz低音1261.63中音1532.25高音11046.50低音2293.67中音2587.33高音21174.66低音3329.63中音3659.25高音31318.51低音4349.23中音4698.46高音41396.92低音5391.99中音5783.99高音51567.98低

6、音6440中音6880高音61760低音7493.88中音7987.76高音71975.52由于音阶频率多为非整数,而分频系数又不能为小数,故必须将得到的分频数四舍五入取整。若基准频率过低,则由于分频系数过小,四舍五入取整后的误差较大,若基准频率过高,虽然误码差变小,但分频结构将变大。实际的设计应综合考虑两方面的因素,在尽量减小频率误差的前提下取舍合适的基准频率。本例中选取4MHz的基准频率,若无4MHz的时钟频率,实际上,只要各个音名间的相对品频率关系不变,C作1与D作1演奏出的音乐听起来都不会“走调”。各音阶频率及相应的分频系数如表2所示。为了减少输出的偶次谐波分量,最后输出到扬声器的波形

7、应为对称方波,因此在到达扬声器之前,有一个二分频的分频器。表2中的分频系数就是从4MHZ频率二分频得到的2MHZ频率基础上计算得出的。表2 各音阶频率对应的分频值音名分频系数初始值音名分频系数初始值音名分频系数初始值低音17644547中音138224369高音119116280低音268101381中音234054786高音212706921低音360672124中音330345157高音315176674低音457272464中音428645327高音414326759低音551023089中音525515640高音512566935低音645453646中音622735918高音6113

8、77054低音740504141中音720256166高音710137178由于最大的分频系数为7644,故采用13位二进制计数器已能满足分频要求。在表2,除给出了分频比以外,给出了对应于各个音阶频率时计数器不同的初始值,对于乐曲中的休止符,要将分频系数设为0,即初始值为8191即可,此时扬声器将不会发声。对于不同的分频系数,加载不同的初始值即可。用加载初始值而不是将分频输出译码反馈,可以有效地减少本设计占用可编程逻辑器件的资源,也是同步计数器的一个常用设计技巧。2、控制音长的节拍发生器该演奏电路演奏的乐曲是“梁祝”片段,其最小的节拍为1拍。将1拍的时长定为0.25秒,则只需要再提供一个4Hz

9、的时钟频率即可产生1拍的时长,演奏的时间控制通过ROM查表的方式来完成。对于占用时间较长的节拍,如全音符为4拍(重复4),2/4音符为2拍(重复2),1/4音符为1拍(重复1)。3、总体框图:(如图1) 图1总体框图说明:NOTETABS相当于一个计数器,通过计数自动加1读MUSIC模块里的值,然后通过MUXA选择模块选择MUSIC模块中不同的输出,TONETABA模块根据MUXA模块不同的输出选择相应的值,SPEAKERA模块根据TONETABA的输出对12MHZ的时钟信号进行分频,从而得到相信的频率输出发出声音(音调),从而实现播放不同的歌曲。四、程序设计:1、NOTETABS模块:LIB

10、RARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NOTETABS ISPORT(CLK:IN STD_LOGIC;COUNTER1 :inout STD_LOGIC_vector(7 downto 0);END NOTETABS;ARCHITECTURE a OF NOTeTABs ISBEGINP1:PROCESS (CLK,COUNTER1)BEGINIF COUNTER1=183 THEN COUNTER1 = 00000000;ELSIF CLKEVENT AND CLK=1 TH

11、EN COUNTER1 b=0001; INDEX b=0010; INDEX b=0011; INDEX b=0100; INDEX null;END CASE;END PROCESS;END a;创建符号:(如图3) 图33、TONETABA模块:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY TONETABA ISPORT(INDEX: INSTD_LOGIC_vector(3 downto 0);CODE : OUT STD_LOGIC_vector(3 downto 0);HIGH : OUT STD_LOGIC;TONE : OUT

12、STD_LOGIC_vector(10 downto 0);END TONETABA;ARCHITECTURE a OF TONETABA ISBEGINSEARCH:PROCESS (INDEX)BEGINCASE INDEX ISWHEN 0000 = TONE = 11111111111;CODE = 0000;HIGH TONE = 01100000101;CODE = 0001;HIGH TONE = 01110010000;CODE = 0010;HIGH TONE = 10000001100;CODE = 0011;HIGH TONE = 10010101101;CODE = 0

13、101;HIGH TONE = 10100001010;CODE = 0110;HIGH TONE = 10101011100;CODE = 0111;HIGH TONE = 10110000010;CODE = 0001;HIGH TONE = 10111001000;CODE = 0010;HIGH TONE = 11000000110;CODE = 0011;HIGH TONE = 11001010110;CODE = 0101;HIGH TONE = 11010000100;CODE = 0110;HIGH TONE = 11011000000;CODE = 0001;HIGH NUL

14、L;END CASE;END PROCESS;END a;创建符号:(如图4) 图44、SPEAKERA模块:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;ENTITY SPEAKERA IS PORT( CLK : IN STD_LOGIC; TONE : IN STD_LOGIC_vector(10 downto 0);SPKS : OUT STD_LOGIC);END SPEAKERA;ARCHITECTURE a OF SPEAKERA ISSIGNAL PRECLK : STD_LOG

15、IC;SIGNAL FULLSPKS : STD_LOGIC;BEGINDIVIDECLK:PROCESS (CLK)VARIABLE COUNT4 : STD_LOGIC_vector(3 downto 0);BEGINPRECLK 11 THEN PRECLK = 1; COUNT4:=0000;ELSIF CLKEVENT AND CLK=1 THEN COUNT4:=COUNT4+1;END IF;END PROCESS ;GENSPKS:PROCESS (PRECLK,TONE)VARIABLE COUNT11 : STD_LOGIC_vector(10 downto 0);BEGI

16、NIF 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;DELAYSPKS:PROCESS (FULLSPKS)VARIABLE COUNT2 : STD_LOGIC;BEGINIF FULLSPKSEVENT AND FULLSPKS=1 THENCOUNT2:=NOT COUNT2; IF COUNT2=1 THENSPKS = 1;ELSE SPKS

17、= 0;END IF;END IF;END PROCESS;END a;创建符号:(如图5) 图55、MUSIC模块: Music1:liangzhu_rom(歌曲名:梁祝) WIDTH=4;DEPTH=256;ADDRESS_RADIX=DEC;DATA_RADIX=DEC;CONTENT BEGIN 00: 3; 01: 3; 02: 3; 03: 3; 04: 5; 05: 5; 06: 5; 07: 6; 08: 8; 09: 8; 10: 8; 11: 9; 12: 6; 13: 8; 14: 5; 15: 5; 16:12; 17:12; 18:12; 19:15; 20:13;

18、21:12; 22:10; 23:12; 24: 9; 25: 9; 26: 9; 27: 9; 28: 9; 29: 9; 30: 9; 31: 0; 32: 9; 33: 9; 34: 9; 35:10; 36: 7; 37: 7; 38: 6; 39: 6; 40: 5; 41: 5; 42: 5; 43: 6; 44: 8; 45: 8; 46: 9; 47: 9; 48: 3; 49: 3; 50: 8; 51: 8; 52: 6; 53: 5; 54: 6; 55: 8; 56: 5; 57: 5; 58: 5; 59: 5; 60: 5; 61: 5; 62: 5; 63: 5;

19、 64:10; 65:10; 66:10; 67:12; 68: 7; 69: 7; 70: 9; 71: 9; 72: 6; 73: 8; 74: 5; 75: 5; 76: 5; 77: 5; 78: 5; 79: 5; 80: 3; 81: 5; 82: 3; 83: 3; 84: 5; 85: 6; 86: 7; 87: 7; 88: 6; 89: 6; 90: 6; 91: 6; 92: 6; 93: 6; 94: 5; 95: 6; 96: 8; 97: 8; 98: 8; 99: 9;100:12;101:12;102:12;103:10;104: 9;105: 9;106:10

20、;107: 9;108: 8;109: 8;110: 6;111: 5;112: 3;113: 3;114: 3;115: 3;116: 8;117: 8;118: 8;119: 8;120: 6;121: 8;122: 6;123: 5;124: 3;125: 5;126: 6;127: 8;128: 5;129: 5;130: 5;131: 5;132: 5;133: 5;134: 5;135: 5;136: 0;137: 0;138: 0;END;创建符号:(如图6) 图6Music2:shengri_rom(歌曲名:生日快乐)WIDTH=4;DEPTH=256;ADDRESS_RADI

21、X=DEC;DATA_RADIX=DEC;CONTENT BEGIN 00:13; 01:13; 02:13; 03:13; 04:13; 05:13; 06:13; 07:12; 08:12; 09:10; 10:10; 11:10; 12:10; 13:12; 14:12; 15:12; 16:12; 17:15; 18:15; 19:15; 20:15; 21:13; 22:13; 23:12; 24:12; 25:13; 26:13; 27:13; 28:13; 29:13; 30:13; 31:13; 32:13; 33:10; 34:10; 35:10; 36:10; 37:12;

22、 38:12; 39:13; 40:13; 41:12; 42:12; 43:12; 44:12; 45:10; 46:10; 47:10; 48:10; 49: 8; 50: 8; 51: 6; 52: 6; 53:12; 54:12; 55:10; 56:10; 57: 9; 58: 9; 59: 9; 60: 9; 61: 9; 62: 9; 63: 9; 64: 9; 65: 9; 66: 9; 67: 9; 68: 9; 69: 9; 70: 9; 71:10; 72:10; 73:12; 74:12; 75:12; 76:12; 77:12; 78:12; 79:13; 80:13

23、; 81:10; 82:10; 83:10; 84:10; 85: 9; 86: 9; 87: 9; 88: 9; 89: 8; 90: 8; 91: 8; 92: 8; 93: 8; 94: 8; 95: 8; 96: 8; 97:12; 98:12; 99:12;100:12;101:12;102:12;103:10;104:10;105: 9;106: 9;107: 8;108: 8;109: 6;110: 6;111: 8;112: 8;113: 5;114: 5;115: 5;116: 5;117: 5;118: 5;119: 5;120: 5;121: 5;122: 5;123:

24、5;124: 5;125: 0;126: 0;127: 0;END;创建符号:(如图7) 图7Music3:yydcb_rom(歌曲名:隐形的翅膀)WIDTH=4;DEPTH=256;ADDRESS_RADIX=DEC;DATA_RADIX=DEC;CONTENT BEGIN00: 10; 01: 10; 02: 12; 03:12; 04:15; 05:15; 06:15; 07:15; 08:15; 09:15; 10:15; 11:15; 12:15; 13:15; 14:15; 15:15; 16:13; 17:13; 18:12; 19:12; 20:13; 21:13; 22:15

25、; 23:15; 24:10; 25:10; 26: 9; 27: 9; 28: 8; 29: 8; 30: 8; 31: 8; 32: 8; 33: 8; 34: 8; 35:8; 36: 8; 37: 8; 38:15; 39:15; 40:15; 41:15; 42:13; 43:13; 44:12; 45:12; 46:10; 47:10; 48:9; 49:9; 50: 8; 51: 9; 52: 9; 53: 9; 54: 9; 55: 9; 56: 9; 57: 9; 58: 9; 59: 9; 60: 10; 61:10; 62:12; 63:12; 64:15; 65:15;

26、 66:15; 67:15; 68:15; 69:15; 70:15; 71:15; 72:15; 73:15; 74:15; 75:15; 76:13; 77:13; 78:12; 79:12; 80:13; 81:13; 82:15; 83:15; 84:10; 85:10; 86:9; 87:9; 88: 8; 89: 8; 90: 8; 91: 8; 92: 8; 93: 8; 94: 8; 95: 8; 96: 8; 97: 8; 98:15; 99:15;100:15;101:15;102:13;103:13;104:12;105:12;106:10;107:10;108: 9;1

27、09: 9;110: 8;111: 8;112: 8;113: 8;114: 8;115: 8;116: 8;117: 8;118: 8;119: 8;120: 10;121:10;122:12;123:12;124:15;125:15;126:15;127:15;128:15;129:15;130:15;131:15;132:14;133:14;134:14;135:14;136:13;137:13;138:12;139:12;140:13;141:13;142:15;143:15;144:10;145:10;146:9;147:9;148:8;149:8;150:8;151:8;152:8

28、;153:8;154:8;155:8;156:8;157:8;158:15;159:15;160:15;161:15;162:13;163:13;164:12;165:12;166:10;167:10;168:9;169:9;170:9;171:9;172:9;173:9;174:9;175:9;176:8;177:8;178:8;179:8;180:8;181:8;182:8;183:8;END;创建符号:(如图8) 图8Music4:yijianmei_rom(歌曲名:一剪梅)WIDTH=4;DEPTH=256;ADDRESS_RADIX=DEC;DATA_RADIX=DEC;CONTEN

29、T BEGIN 00: 6; 01: 6; 02: 6; 03: 6; 04:10; 05:10; 06:10; 07:10; 08:10; 09:10; 10: 9; 11: 8; 12: 7; 13: 7; 14: 8; 15: 8; 16: 7; 17: 7; 18: 5; 19: 5; 20: 6; 21: 6; 22: 6; 23: 6; 24: 6; 25: 6; 26: 6; 27: 6; 28: 6; 29: 6; 30: 6; 31: 6; 32: 6; 33: 9; 34: 6; 35: 6; 36: 6; 37: 7; 38: 7; 39: 7; 40: 7; 41: 7

30、; 42: 7; 43: 6; 44: 8; 45: 9; 46: 9; 47: 9; 48: 9; 49:10; 50:12; 51:10; 52: 9; 53:10; 54:10; 55:10; 56:10; 57:10; 58:10; 59:10; 60:10; 61:10; 62:10; 63:10; 64:10; 65:10; 66:10; 67:10; 68:12; 69:13; 70:13; 71:13; 72:13; 73:13; 74:13; 75:12; 76:10; 77: 9; 78: 9; 79: 9; 80: 9; 81: 9; 82: 9; 83: 8; 84:

31、9; 85:10; 86:10; 87:10; 88:10; 89:10; 90:10; 91: 9; 92:10; 93: 6; 94: 6; 95: 6; 96: 6; 97: 6; 98: 6; 99: 6;100: 6;101: 7;102: 7;103: 7;104: 6;105: 5;106: 5;107: 7;108: 7;109: 0;110: 0;111: 5;112: 3;113: 7;114: 7;115: 8;116: 7;117: 6;118: 6;119: 6;120: 6;121: 6;122: 6;123: 6;124: 6;125: 6;126: 6;127:

32、 6;128: 6;129: 0;130: 0;131: 0;END;创建符号:(如图9) 图9五、编译及仿真仿真软件使用的是MAX PLUS II,Max+plus是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。Max+plus界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plus上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。NOTETABS模块仿真图:(如图10) 图10MUXA模块仿真图:(如图11) 图1

33、1TONETABA模块仿真图:(如图12) 图12SPEAKERA模块仿真图:(如图13) 图13MUSIC模块仿真图:(如图14)Music1: 图14Music2:(如图15) 图15Music3:(如图16) 图16Music4:(如图17) 图17顶层文件仿真图:(如图18) 图18六、硬件调试与结果分析顶层文件编译仿真好之后,通过电脑连接到硬件上,下载顶层文件到FPGA里,下载完毕之后通过选择按键选择播放的歌曲,当A=0001时,播放“梁祝”;当A=0011时,播放“生日快乐”;当A=0010时,播放“隐形的翅膀”;当A=0100时,播放“一剪梅”。七、 参考文献1曹昕燕. .北京清

34、华大学出版社,2004年2焦素敏. . 北京: 清华大学出版社,2005年3焦素敏. . 河南工业大学,2008年4黄智伟. . 电子工业出版社,2005年5刘昌华. . 国防工业出版社,2005年八、 心得体会通过这次课程设计,使我对VHDL语言有了更加深刻的了解,在书本上学的理论知识运用到了实践中,而课程设计做成功,增加了我学习EDA的兴趣,不论在以后的学习中还是工作中,EDA肯定是我们必不可少的工具。在这次课程设计中遇到了不少的麻烦,我根据书上给的例题,发现程序写的比较的复杂,通过跟同学讨论,可以使用ROM进行编程,能根据自己喜欢的歌曲更方便的修改程序,一开始写的程序只能实现一首歌的循环,但是我想肯定可以根据不同的按键实现不同的歌曲的播放,有了这个想法之后,就不停的修改程序,但是总是实现不了,然后我就开始参考一些EDA的实验书,终于在和同学的努力下,找到了一种方法,就是使用多路选择器,根据输入的不同选择不同的输出,从而实现播放不同的歌曲,在硬件仿真中,由于EDA实验做的比较多,所以对试验箱也比较的熟悉,在仿真中没有遇到什么问题。总之,不管是哪门课的课程设计,都能大大提高我们的动手能力,在做成功的基础上,增加我们学习的兴趣,所以学校开设的课程设计是很有必要的,希望以后能有更多的机会去参加实践,提高我们各方面的能力。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号