毕业论文基于EPM240的音乐播放器的设计

上传人:无*** 文档编号:78904134 上传时间:2022-04-22 格式:DOC 页数:35 大小:556.50KB
收藏 版权申诉 举报 下载
毕业论文基于EPM240的音乐播放器的设计_第1页
第1页 / 共35页
毕业论文基于EPM240的音乐播放器的设计_第2页
第2页 / 共35页
毕业论文基于EPM240的音乐播放器的设计_第3页
第3页 / 共35页
资源描述:

《毕业论文基于EPM240的音乐播放器的设计》由会员分享,可在线阅读,更多相关《毕业论文基于EPM240的音乐播放器的设计(35页珍藏版)》请在装配图网上搜索。

1、广东水利电力职业技术学院毕业论文题 目: 基于EPM240的音乐播放器的设计 姓 名: 陈飞龙 学 号: 100212102 专业班级: 10电子信息工程 所在系别: 自动化工程系 指导教师: 龚兰芳老师 完成日期 二一三 年 二 月 十五 日29广东水利电力职业技术毕业论文摘要基于EPM240的音乐播放器的设计【摘要】 这次的音乐播放器在CPLD内部设计出扬声器发生及分频模块、音符预置数模块、音符储存模块三个模块,再配开关选择模块、彩灯闪烁控制模块等必要的外围电路,从而实现四首音乐选择播放,并配有随音乐节奏产生灯柱效果等功能的MIDI音乐播放器。通过本次设计,可以实现出可编程逻辑器件CPLD

2、在电子设计领域的应用。 【关键词】 EPM240,CPLD,音乐播放器,VHDL语言毕业论文目 录目 录第1章 绪论11.1选题的目的与任务11.1.1选题的背景11.2设计的基本内容11.2.1 CPLD的设计11.2.2外围电路的设计2第2章 总体设计概述12.1 关于CPLD12.2 设计思路22.1.1总体设计框图与设计思路22.2.2 CPLD设计思路32.2.3 外围电路设计思路3第3章 音乐播放器设计43.1 工作原理43.2 模块设计43.2.1 音符预置数与发生及分频模块设计43.2.2 彩灯闪烁控制模块的设计73.2.3 开关选择模块设计73.2.4 音符储存模块设计73.

3、3 四首歌曲选择9第4章 外围电路设计104.1 时钟电路104.1.1 音乐节奏时钟104.2 音频功率放大电路114.3 音乐彩灯闪烁控制电路11第5章 系统调试125.1 系统调试125.1.1 音乐节奏时钟的调试125.1.2 音频功率放大的调试12结论13参考文献14附录A 总电路图15附录B PCB图16附录C VHDL源代码16致谢29毕业论文 第1章 绪论第1章 绪论1.1选题的目的与任务本毕业设计其目的和任务是,让学生掌握EDA的基本方法,熟悉一种EDA软件(Quartus ),并能利用EDA软件设计实际工程项目,并在开发板上成功下载;使我们将学到的理论知识应用于实践之中,更

4、是培养学生动手能力和训练学生严格认真的科学态度及工作作风,为即将踏入工作岗位打下坚实的基础; 通过本毕业设计应达到以下几点:1 培养我们的集体主义精神、严肃认真的工作态度;热爱劳动、团结协作、爱护仪器、遵守纪律的优良品德。2 掌握IC设计的基本原理及方法,掌握硬件描述语言VHDL对数字系统的设计方法和技巧。3 掌握印制电路板的设计与制作的方法。4 掌握电子线路的安装、焊接和调试的基本技能。 5. 培养我们分析、解决实际问题的能力和勇于创新的科学精神。 6. 培养我们分析寻找和排除电子电路中常见故障的能力. 7. 培养我们独立写出严谨的、有理论依据的、实事求是的、文理通顺的毕业论文的能力。1.1

5、.1选题的背景CPLD都是可编程逻辑器件,是在PAL、GAL等逻辑器件的基础上发展起来的,与分立元件相比,具有速度快、容量大、功耗小和可靠性高等优点。由于集成度高、设计方法先进、现场可编程,它可以替代几十甚至上百片通用IC芯片。这种芯片具有现场可编程和方案容易改动的特点。所以FPGA和CPLD芯片收到世界范围内电子工程设计人员的广泛关注和普遍欢迎,可以设计各种数字电路和数字系统。1.2设计的基本内容1.2.1 CPLD的设计1在CPLD内部设计出扬声器发生及分频模块、音符预置数模块、音符储存模块三个模块,再配开关选择模块、彩灯闪烁控制模块等必要的外围电路,从而实现四首音乐选择播放,并配有随音乐

6、节奏产生灯柱效果等功能的MIDI音乐播放器。2. 设计音乐播放器系统的外围硬件电路原理图。3. 制作PCB,并且软、硬件调试成功。1.2.2外围电路的设计这次设计中用到了4HZ的频率,如果直接用自带的50MHZ来分频的话会给芯片的内部资源占用太多,而且不方便每次在程序中对时钟调试,所以我们在外部单独接入一个时钟信号,提供给音乐时钟。从模电与数电课题中得知,采用555定时器构成多谐振荡器来实现这块电路最合适又有零件,所以我们觉得用它来做时钟。扬声器因为我们准备了2个从耳机与影响上拆下来的扬声器,到最后那个音质好则选用哪个。从各处质料中得知由于CPLD内部输出的信号比较弱,因此必须在扬声器前借一个

7、音频功率放大电路才能实现我们的要求,而且在该电路接入滑动变阻器,这样可以通过调节滑动变阻器,改变放大器的放大倍数,从而调试出放大出来音量。毕业论文 第2章 总体设计概述第2章 总体设计概述2.1 关于CPLDMAX II器件系列是一种非易失性、即用性可编程逻辑系列,它采用了一种突破性的新型CPLD架构。这种新型架构的成本是原先MAX 器件的一半,功耗是其十分之一,密度是其四倍,性能却是其两倍。这些超级性能是在提供了所有MAX系列CPLD 先进特性的架构的基础上,根据Altera专家们的意见而重新采用基于查找表的架构而得到的。这种基于查找表的架构在最小的I/O焊盘约束的空间内提供了最多的逻辑容量

8、。因此,MAX II CPLD是所有CPLD系列产品中成本最低、功耗最小和密度最高的器件。基于成本优化的0.18微米6层金属Flash工艺,MAX II器件系列具有CPLD所有的优点,例如非易失性、即用性、易用性和快速传输延时性。以满足通用性,低密度逻辑应用为目标,MAX II器件成为接口桥接、I/O扩展、器件配置和上电顺序等应用最理想的解决方案。除这些典型的CPLD应用之外,MAX II器件还能满足大量从前在FPGA、ASSP和标准逻辑器件中实现的低密度可编程逻辑需求。MAX II器件提供的密度范围从240到2210个逻辑单元(LE),最多达272个用户I/O管脚。本次设计核心模块CPLD采

9、用ALTERA公司MAX II系列的EPM240T100C芯片。该芯片共有100个管脚,内部240个逻辑单元,如图1所示,为该芯片的封装图及管脚功能。图1 EPM240T100C管脚封装图及管脚功能说明2.2 设计思路2.1.1总体设计框图与设计思路如图2所示是这次音乐播放器的工作原理图。其中中心模块式CPLD芯片,内部由音调发生器、音乐编码器和彩灯闪烁控制器三个模块组成。我们通过开关来选择歌曲,音乐编码器里已经存储了4首歌曲,我们通过选择不同的开关来播放不同的歌曲。音乐编码器控制着音调发生器和彩灯闪烁控制器,每当音乐节奏时钟的脉冲到来是时,音乐编码器就把当前要播放的音符的编码送给音调发生器和

10、彩灯闪烁控制器。音调发生器就会产生相应的音符频率给音频放大器,经过放大由扬声器放出,产生音乐。彩灯闪烁控制器根据编码点亮相应的彩灯,实现灯柱效果。核心部分CPLD我们利用VHDL语言来完成,其他部分通过外围电路实现。图2 音乐播放器的工作原理图2.2.2 CPLD设计思路在这里我们用的是老师所提供的学习开发板,板中所用的就是EPM240中的CPLD芯片。老师所提供的CPLD型芯片,其内部逻辑单元数为240个,只要对程序进行一定的优化处理,即可以满足所有的设计要求。为了使整个设计尽量简洁,4首歌曲均只有高潮部分,这样听起来容易辨认与熟悉,同时也能节省芯片内部资源。2.2.3 外围电路设计思路这次

11、设计中用到了4HZ的频率,如果直接用自带的50MHZ来分频的话会给芯片的内部资源占用太多,而且在程序中对时钟调试不方便,所以我们在外部单独接入一个时钟信号,提供给音乐时钟。从模电与数电课题中得知,采用555定时器构成多谐振荡器来实现这块电路最合适又有零件,所以我们觉得用它来做时钟。扬声器因为我们准备了2个从耳机与影响上拆下来的扬声器,到最后那个音质好则选用哪个。从个处质料中得知由于CPLD内部输出的信号比较弱,因此必须在扬声器前借一个音频功率放大电路才能实现我们的要求,而且在该电路接入滑动变阻器,这样可以通过调节滑动变阻器,改变放大器的放大倍数,从而调试出放大出来音量。毕业论文致谢第3章 音乐

12、播放器设计3.1 工作原理MIDI音乐的基本原理为:组成乐曲的每一个音符的频率值及其持续的时间是乐曲能连续演奏的两个基本数据,因此只要控制输出到扬声器的激励信号频率的高低和每一个频率信号的持续时间,就可以使扬声器发生连续的乐曲。如图3所示,为CPLD内部芯片设计原理图。50MHZ基准时钟开关选择模块音符储存模块发生及分频模块 扬声器4HZ时钟音符预置数模块彩灯彩灯闪烁模块图3 芯片原理3.2 模块设计3.2.1 音符预置数与发生及分频模块设计在设计中音符产生是通过音符预置数模块以查找表的形式把预先设定好的数置给发生及分频模块的可变模值计数器实现分频,得到相应的频率后输出给音频放大器,在通过扬声

13、器发出。根据可变模值计数器的设计原理及音符的分频系数,可计算出乐曲中各音符的预置数,如表3.1所示。而在音符的选择上,我们选择了最广泛应用的16个音。表3.1 音符的分频数和预置数音名分频系数初始值低音551023089低音645453646低音740504141中音138224369中音234054786中音330345157中音428635328中音525515640中音622735918中音720256166高音119116280高音217036488高音315176674高音414326759高音512756816休止符008191发生及分频模块由可变模值计数器实现。由于系统要求产生出

14、的信号频率较高,因此选用4MHz高频脉冲作为可变模值计数器的技计数脉冲。而为了减少输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,因此在到达扬声器之前,有一个2分频的分频器。所以,上图所给出的分频系数是用分频后的2MHz基础上计算得出的。各音阶频率及相应的分频如表3.2所示。程序如:process(PreCLK, Tone)-置数分频variable Count11: integer range 0 to 16#1FFF#;begin if PreCLKevent and PreCLK=1 thenif Count11=16#1FFF# thencount11:=Tone;FullSp

15、kS=1;else Count11:=Count11+1;FullSpkSdigdigdigdigdigToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexCLK4HZ,dig=dig1,ToneIndex=ToneIndex);u2: ToneTaba PORT MAP(Index=ToneIndex, Tone=Tone);u3: Speakera PORT

16、 MAP(clk=CLK, Tone=Tone, SpkS=SPKOUT);u4: cd port map(Tone=ToneIndex, lights=lights);u5: kg port map(switch=switch,dig=dig1);END;-开关选择模块library ieee;use ieee.std_logic_1164.all;entity kg isport(switch:in std_logic_vector(3 downto 0); dig:out integer range 0 to 4);end;architecture one of kg isbeginpr

17、ocess(switch)begincase switch iswhen 0001=digdigdigdigdig lights lights lights lights lights lights lights lights lights lights lights lights lights lights lights lightsNULL;end case;end process;end;-扬声器发生及分频模块library ieee;use ieee.std_logic_1164.all;entity Speakera isPORT(clk: IN STD_LOGIC; Tone: I

18、N INTEGER RANGE 0 TO 16#1FFF#; SpkS: OUT STD_LOGIC);END ;architecture one of Speakera issignal PreCLK:std_logic;signal FullSpkS:std_logic;beginprocess(clk)variable count4:integer range 0 to 11;-12分频=4.16MHZbeginPreCLK=0;if Count4=11 THEN PreCLK=1; Count4:=0;elsif clkEVENT and clk=1 then Count4:=Coun

19、t4+1;end if;end process;process(PreCLK, Tone)-置数分频variable Count11: integer range 0 to 16#1FFF#;begin if PreCLKevent and PreCLK=1 thenif Count11=16#1FFF# thencount11:=Tone;FullSpkS=1;else Count11:=Count11+1;FullSpkS=0;end if;end if;end process;process(FullSpkS)-二分频variable Count2:std_logic;beginif F

20、ullSpkSEVENT and FullSpkS=1 thenCount2:=NOT Count2;if Count2=1 then SpkS=1;else SpkS Tone Tone Tone Tone Tone Tone Tone Tone Tone Tone Tone Tone Tone Tone Tone ToneNULL;end case;end process;end;-音符储存模块library ieee;use ieee.std_logic_1164.all;entity NoteTabs isPORT(clk: IN STD_LOGIC; dig: in integer

21、range 0 to 4; ToneIndex: OUT INTEGER RANGE 0 TO 15);END;architecture one of NoteTabs issignal Counter :integer range 0 to 127;beginprocess(dig,clk)begin if (dig=1 or dig=2 or dig=3 or dig=4) thenif Counter=128 then Counter=0;elsif(clkevent and clk=1) thenCounter=Counter+1;end if;elsecounterToneIndex

22、ToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexTon

23、eIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIn

24、dexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndex

25、ToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexNULL;end case;elsif dig=2 then-涛声依旧case Counter iswhen 00

26、=ToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexTo

27、neIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndex=6;whe

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