ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:351.87KB ,
资源ID:8905754      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8905754.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于fpga的音乐播放器的设计1.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于fpga的音乐播放器的设计1.docx

1、基于fpga的音乐播放器的设计11引言1.1关于EDA技术随着科学技术的进步,电子器件和电子系统设计方法日新月异,电子设计自动化(Electronics Design Automation,EDA)技术正是适应了现代电子产品设计的要求,吸收了多学科最新成果而形成的一门新技术。现如今掌握EDA技术是电子信息类专业的学生、工程技术人员所必备的基本能力和技能。传统电子电路的设计,首先要对系统进行分析,然后按功能对系统进行划分,接下来就要选择特定芯片,焊接成PCB电路板,最后对成品PCB电路板进行调试。这样的设计没有灵活性可言,搭成的系统需要的芯片种类多且数目大,而且对于电路图的设计和电路板的设计都需

2、要很大的工作量,工作难度也很高。然而,随着可编程器件和EDA技术的发展,传统设计的劣势被克服,采用可编程逻辑器件基于芯片的设计方法,期间的内部逻辑和引脚可以由设计者自行决定,大大提高了设计的灵活性,提高了工作效率;同时,将系统集成在一个芯片上的设计,使系统具有体积小、功耗低、可靠性高等特点。EDA技术的发展大致经历了三个阶段:20世纪70年代的CAD(计算机辅助设计)阶段、20世纪80年代的CAE(计算机辅助工程)阶段、20世纪90年代后的EDA(电子设计自动化)阶段。以下主要介绍第三个阶段。EDA技术即电子设计自动化技术,它是以可编程逻辑器件(PLD)为载体,以硬件描述语言(HDL)为主要的

3、描述方式,以EDA软件为主要的开发软件的电子设计过程。它主要采用“自顶向下”的设计方法,设计流程主要包括:设计输入、综合、仿真、适配、下载。EDA技术主要有以下特征:(1)高层综合的理论和方法取得进展,从而将EDA设计层次由RT级提高到了系统级,并推出了相应的系统级综合优化工具,大大缩短了复杂ASIC的设计周期。(2)采用硬件描述语言来描述10万门以上的设计,并形成了VHDL和Verilog-HDL两种标准硬件描述语言。(3)采用平面规划技术对逻辑综合和物理版图设计联合管理,做到在逻辑设计综合早期阶段就考虑到物理设计信息的影响。(4)可测性综合设计。(5)为带有嵌入式IP核的ASIC设计提供软

4、、硬件协同设计工具。(6)建立并行设计工具框架结构的集成化设计环境,以适应当今ASIC规模大而复杂、数字与模拟电路并存、硬件与软件设计并存、产品上市速度快等特点。1.2关于VHDLVHDL是一种硬件描述语言,它可以对电子电路和系统的行为进行描述,基于这种描述,结合相关的软件工具,可以得到所期望的实际电路与系统。使用VHDL语言描述的电路,可以进行综合和仿真。然而,值得注意的是,尽管所有VHDL代码都是可仿真的,但并不是所有代码都能综合。VHDL被广泛使用的基本原因在于它是一种标准语言,是与工具和工艺无关的,从而可以方便地进行移植和重用。VHDL两个最直接的应用领域是可编程逻辑器件(PLD)和专

5、用集成电路(ASIC),其中可编程逻辑器件包括复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)。关于VHDL最后要说明的是:与常规的顺序执行的计算机程序不同,VHDL从根本上讲是并发执行的。在VHDL中,只有在进程(PROCESS)、函数(FUNCTION)和过程(PROCEDURE)内部的语句才是顺序执行的。1.3EDA工具目前有多种EDA工具支持采用VHDL进行电路综合、仿真以及实现。比较常见的是Altera公司的Quartus开发平台和Xilinx公司的ISE开发平台。这些平台中使用的综合工具和仿真工具通常由专业的EDA厂商提供。本次设计中所使用的平台正是Quartus7.2

6、,它是Altera公司提供的一套集成了编译、布局布线和仿真工具在内的综合开发环境。它能完成从代码输入到编译到仿真再到物理实现的全部设计流程。1.4有关于本次课程设计本次课程设计要求使用EDA工具,设计实现简易音乐演奏器,理解音名与频率的关系及数控分频原理,经过对整体进行模块化分析、编程、综合、仿真及最终下载,完整实现简易音乐器的播放功能。我们知道,与利用单片机来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助于功能强大的EDA工具与硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以实现。在后面的章节中会详细介绍利用EDA技术实现简易音乐演奏器的过程。2 设计

7、实现2.1准备知识在本次设计中采用了铃声祝你生日快乐作为要播放的乐曲,它的旋律如下: 5 5 |6 5 1|7 5 5|6 5 2|1 5 5|5 3 1|7 6 |0 0 4 4|3 1 2|1 根据声乐知识,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的两个基本要素,获取这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果是本实验的关键。表2-1为简谱中音名与频率的对应关系。表2-1 简谱音名与频率的关系音名频率(Hz)音名频率(Hz)中音1523高音11047中音2587高音21175中音3659高音31382中音4698高音41397中音

8、5784高音51568中音6880高音61760中音7988高音71976频率点及音符与音谱对应定义如表2-2所示。表2-2音符语音谱定义音符对应频率点对应音谱区别高中低音020470011091112119521312883141331415140951614796171541718156912916212210166832111689421217285213176362141794722.2乐曲演奏电路的结构示意本设计由四个模块组成,如图2-3所示。图2-3 乐曲演奏电路的结构示意2.3乐曲演奏电路的子结构顶层结构所包含的模块分别有音调发生器(ydfsq)模块、手动自动选择(bmux)模块

9、、音调编码器(ydbmq)模块及数控分频器(skfpq)模块。以下便是对各个子模块的分析。2.3.1音调发生器模块1.音调发生器模块的功能在此模块中设置了一个8位二进制计数器(计数最大值为107),这个计数器的计数频率选为4Hz,即每一计数值的停留时间为0.25s,恰好为当全音符设为1s时,四四拍的4分音符的持续时间。例如,ydfsq在以下的VHDL逻辑描述中,祝你生日快乐乐曲的第一个音符为“5”,此音在逻辑中停留了4个时钟节拍,即为1s时间,相应地所对应“1”音符分频预置数为1409在skfpq的输入端停留了1s。随着ydfsq中的计数器按4Hz的时钟频率做加法计数时,乐谱逐次被选取,祝你生

10、日快乐乐曲就开始自然连续而且循环的演奏起来了。2.音调发生器模块的VHDL源程序library ieee;use ieee.std_logic_1164.all;entity ydfsq isport(clk:in std_logic; clkj:in std_logic_vector(1 downto 0); rst:in std_logic; toneindex:out integer range 0 to 14);end ydfsq;architecture bhv of ydfsq issignal counter:integer range 0 to 107;signal clker

11、:std_logic;signal count4:integer;begin process(clk)beginif clkevent and clk=1 then if clkj=10 then count40 then clker=not clker;count4=0; end if; elsif clkj=01 then count42 then clker=not clker;count4=0; end if; else count41 then clker=not clker;count4=0; end if; end if;end if;end process;process(cl

12、ker,counter,rst)beginif rst=1 thencounter=0; elsif counter=107 then counter=0; elsif clkerevent and clker = 1 then countertoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindexNULL;end case;end process;end bhv;3.音调发生器模块的仿真图图2-4 音调发生器模块的仿真波形图通过仿真图可以清楚的看到,时钟clk由0开始计数,每计一次数输出

13、toneindex的值随之发生一定的变化,只不过根据乐谱的不同,输出的变化也不尽相同。然后把输出toneindex输入到音调编码器模块,进行下一步编码工作。于是,由仿真图印证了ydfsq模块逐次选取音符的功能。2.3.2手动自动选择模块1.手动自动选择模块的功能根据设计的要求,该简易乐曲演奏器能实现手动或自动演奏乐曲的功能。于是,可通过一个按键cs来进行自动与手动的选择,当cs按下时,乐曲自动演奏,其他情况下均为手动演奏乐曲,即可以通过按下其他的按键(与cs相连的按键除外)来控制不同的音符。与此同时,还需要一个复位信号rst来控制该演奏器是否工作,当rst为1时,停止演奏,为0时,可以演奏。以

14、上提到的手动与自动的选择只能在rst为0时有效。2.手动自动选择模块的VHDL源程序library ieee;use ieee.std_logic_1164.all;entity bmux isport(d1:in integer range 0 to 14; d2:in integer range 0 to 14; cs,rst:in std_logic; q:out integer range 0 to 14); end bmux;architecture bhv of bmux isbegin process(cs,rst)beginif rst=1then qqqqtone=2047;

15、code=0;code1tone=1091;code=1;code1tone=1195;code=2;code1tone=1288;code=3;code1tone=1331;code=4;code1tone=1409;code=5;code1tone=1479;code=6;code1tone=1541;code=7;code1tone=1569;code=1;code1tone=1621;code=2;code1tone=1668;code=3;code1tone=1689;code=4;code1tone=1728;code=5;code1tone=1763;code=6;code1to

16、ne=1794;code=7;code1NULL;end case;end process;end bhv; 3.音调编码器模块的仿真图图2-6 音调编码器模块的仿真波形图在此仿真图中从上到下依次代表输出code、输出code1、输入index和输出tone。通过此仿真图能清楚的看到当音符分别为3、5、8、13、0时,它们所对应的分频预置数tone分别是1288、1409、1569、1763、2047;所对应的音谱code分别是3、5、1、6、0;所对应的高中低音code1又分别是1(中)、1(中)、2(高)、2(高)、0(低)。其中code、code1能分别在两个数码管上显示,而tone则输

17、入到数控分频模块作为分频的依据。于是,由仿真图印证了音调编码模块传送预置数及显示功能。2.3.4数控分频器模块1.数控分频器模块的功能该模块的clk端输入一个具有较高频率(本实验为12MHz)的信号,通过skfpq分频后由spkout输出。由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲信号,为了便于驱动喇叭,需另加一个D触发器均衡其占空比,也即作二分频处理。skfpq对clk输入信号的分频比由11位预置数tone10.0决定。spkout的输出频率将决定每一音符的音调,这样分频计数器的预置数tone10.0与spkout的输出频率就有了对应关系。例如在ydbmq模块中取tone10.0=

18、1479,作为发音符为“6”音的信号频率。2.数控分频器模块的VHDL源程序library ieee;use ieee.std_logic_1164.all;entity skfpq isport(clk:in std_logic; tone:in integer range 0 to 2047; spks:out std_logic);end skfpq;architecture bhv of skfpq issignal preclk:std_logic;signal fullspks:std_logic;begin process(clk)variable count4:integer

19、range 0 to 14;begin preclk11 then preclk=1;count4:=0;elsif clkevent and clk=1 then count4:=count4+1;end if;end process;process(preclk,tone)variable count11:integer range 0 to 2047;begin if preclkevent and preclk=1then if count11=2047 then count11:=tone;fullspks=1; else count11:=count11+1;fullspks=0;

20、 end if;end if;end process;process(fullspks)variable count2:std_logic;beginif fullspksevent and fullspks=1 then count2:=not count2; if count2=1then spks=1; else spksclk1,clkj=clkj,toneindex=x,rst=rst);u2:bmux port map(d1=d1,d2=x,cs=cs,rst=rst,q=y);u3:ydbmq port map(index=y,code=code,code1=code1,tone

21、=z);u4:skfpq port map(clk=clk2,tone=z,spks=spks);end bhv;2.4.2顶层音乐演奏器原理图经过了各个子模块的分析与验证后,我们只需将各个子模块之间的输入输出端、子模块与整体电路之间的输入输出端进行正确的硬件连接就得到了顶层音乐演奏器的原理图,如图2-8所示:图2-8 乐曲演奏电路的顶层原理图2.4.3顶层程序仿真波形图图2-9 顶层程序的仿真波形图首先,介绍一下总体程序中各个引脚的作用及硬件连接情况:输入clk1是一个频率较小的时钟信号,在进行硬件下载时它与实验箱上clock0模块的16Hz频率相连,它决定着乐曲演奏的快慢;输入clk2是一个频率较大的时钟信号,因为要

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2