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

上传人:文库蛋蛋多 文档编号:3973035 上传时间:2023-03-30 格式:DOC 页数:35 大小:527KB
返回 下载 相关 举报
毕业论文基于EPM240的音乐播放器的设计.doc_第1页
第1页 / 共35页
毕业论文基于EPM240的音乐播放器的设计.doc_第2页
第2页 / 共35页
毕业论文基于EPM240的音乐播放器的设计.doc_第3页
第3页 / 共35页
毕业论文基于EPM240的音乐播放器的设计.doc_第4页
第4页 / 共35页
毕业论文基于EPM240的音乐播放器的设计.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

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

1、广东水利电力职业技术学院毕业论文题 目: 基于EPM240的音乐播放器的设计 姓 名: 陈飞龙 学 号: 100212102 专业班级: 10电子信息工程 所在系别: 自动化工程系 指导教师: 龚兰芳老师 完成日期 二一三 年 二 月 十五 日基于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 四首歌曲选择9第4章 外围电路设计104.1

3、时钟电路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选题的目的与任务本毕业设计其目的和任务是,让学生掌握EDA的基本方法,熟悉一种EDA软件(Quartus ),并能利用EDA软件设计实际工程项目,并在开发板上成功下载;使我们将学到的理论知识应用于实践之中,更是培养学生动手能力和训练学生严格认真的科学态度及工作作风,为即将踏入工作

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

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

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

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

8、的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采用ALTERA公司MAX II系列的EPM240T100C芯片。该芯片共有100个管脚,内部240个逻

9、辑单元,如图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 外围电路设计思路这次设计中用到了4HZ的频率,如果直接用自带的50MHZ来分频的话会给芯片的内部资源占用太多,而且在程序中

11、对时钟调试不方便,所以我们在外部单独接入一个时钟信号,提供给音乐时钟。从模电与数电课题中得知,采用555定时器构成多谐振荡器来实现这块电路最合适又有零件,所以我们觉得用它来做时钟。扬声器因为我们准备了2个从耳机与影响上拆下来的扬声器,到最后那个音质好则选用哪个。从个处质料中得知由于CPLD内部输出的信号比较弱,因此必须在扬声器前借一个音频功率放大电路才能实现我们的要求,而且在该电路接入滑动变阻器,这样可以通过调节滑动变阻器,改变放大器的放大倍数,从而调试出放大出来音量。第3章 音乐播放器设计3.1 工作原理MIDI音乐的基本原理为:组成乐曲的每一个音符的频率值及其持续的时间是乐曲能连续演奏的两

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

13、上,我们选择了最广泛应用的16个音。表3.1 音符的分频数和预置数音名分频系数初始值低音551023089低音645453646低音740504141中音138224369中音234054786中音330345157中音428635328中音525515640中音622735918中音720256166高音119116280高音217036488高音315176674高音414326759高音512756816休止符008191发生及分频模块由可变模值计数器实现。由于系统要求产生出的信号频率较高,因此选用4MHz高频脉冲作为可变模值计数器的技计数脉冲。而为了减少输出的偶次谐波分量,最后输出到扬

14、声器的波形应为对称方波,因此在到达扬声器之前,有一个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;FullSpkS=1;else Count11:=Count11+1;FullSpkSdigdigdigdigdigToneI

15、ndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexCLK4HZ,dig=dig1,ToneIndex=ToneIndex);u2: ToneTaba PORT MAP(Index=ToneIndex, Tone=Tone);u3: Speakera PORT MAP(clk=CLK, Tone=Tone, SpkS=SPKOUT);u4: cd port map(Ton

16、e=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 isbeginprocess(switch)begincase switch iswhen 0001=digdigdigdigdig

17、 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: IN INTEGER RANGE 0 TO 16#1FFF#; SpkS: OUT STD_LOGIC);END ;

18、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:=Count4+1;end if;end process;process(PreCLK, Tone)-置数分频variabl

19、e 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 FullSpkSEVENT and FullSpkS=1 thenCount2:=NOT Count2;if Cou

20、nt2=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 range 0 to 4; ToneIndex: OUT INTEGER RANGE 0 TO 15);END;a

21、rchitecture 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;elsecounter=0;end if;end process;process(dig,counter)beginif dig=1 then-龙的传人case Counter iswhen 0

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号