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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

梁祝音乐实验报告.docx

1、梁祝音乐实验报告 一、实验目的: 1、了解普通扬声器的工作原理。 2、使用FPGA产生不同的音乐频率。 3、进一步体验FPGA 的灵活性。 二、硬件要求: 1、375KHz的信号源。(经过实验过程中的摸索,我个人觉得1.5MHz或者3MHz比较合适,梁祝这首曲子听起来也比较优美) 2、FPGA EP1K10TC100-3主芯片。 3、扬声器。 三、实验原理: 本实验是要完成一小段音乐程序的开发,然后再用扬声器进行试听。下面主要介绍一下完成本实验的几个主要部分的工作原理. 音符的产生:音符的产生是利用计数器对输入的时钟信号进行分频,然后输出不同的频率来控制扬声器发出不同的声音。计数器必须是模可变

2、的计数器,也就是其初始值可变,这样便可以对其进行初始化,使其从不同的初始值开始计数,实现对输出时钟信号的不同分频。 节拍的产生:节拍也是利用计数器来实现的,如果某一个音符需要维持的时间比较长,那么就可以在此计数器从计数值A到计数值B之间都维持该音符,很显然,A和B之间的间隔越大,那么该音符维持的时间也就越长。 乐谱的存储:乐谱是一个固定的组合电路,根据不同的输入值,然后输出一个固定的值,该值就是音符产生计数器的分频的初始值。 适当的选择这些计数器和组合电路,便可完成不同的乐曲和不同的节奏。 四、实验内容及步骤: 本实验要完成的任务是设计一个驱动扬声器产生梁祝音乐的程序,设计步骤如下: 1、编写

3、音乐输出的VHDL语言代码。 2、用Quartus-II对其进行编译仿真,知道程序中没有错误为止。 3、在仿真确定无错误后,选定FPGA的芯片类型是ACEXIK EP1K10TC100-3,在“Device and Pin Option”的选项内把还没有用的管脚的输入形式改为“三态输入”,配置设备最好是选用“EPCS4”的这种类型。 4、对应于上面选定的芯片进行管脚配置,在次基础上再次进行编译,主要是将管脚的配置信息整合的程序中去。 5、根据自己配置好的管脚信息,在实验箱上对扬声器接口、时钟接口和我们已经选定的FPGA进行正确连线。 6、在软件上进行实验所需硬件进行加载,加载后把已经编译好的音

4、乐输出的VHDL语言代码下载到我们已经选定的FPGA中,下载完成后我们就可以开始观察实验结果了,不断调整输入的时钟频率,直到音乐可以比较流畅、缓和地播放出来为止。 图1 编写音乐输出的VHDL语言代码 图2 编译VHDL语言代码 图3 编译成功 图4 选择芯片并配置管脚 图5 再次编译 图6 加载硬件并下载VHDL语言代码 五、实验连线: 时钟(clk):时钟输入信号是接在375KHz的时钟源上。 扬声器(Spk):FPGA的输出是连接在扬声器的输入端,即Spk端。 六、实验VHDL语言代码: library ieee; use ieee.std_logic_1164.all; use iee

5、e.std_logic_arith.all; use ieee.std_logic_unsigned.all; - entity pmusic is port( clk : in std_logic; -Clock Signal spk : buffer std_logic); -speaker driver end pmusic; - architecture behave of pmusic is signal tone : std_logic_vector(10 downto 0); signal tone_count : std_logic_vector(10 downto 0); s

6、ignal tone_index : integer range 0 to 15; signal clk10_count : std_logic_vector(17 downto 0); signal time : integer range 0 to 150; signal clk10 : std_logic; begin process(clk) -generate 10hz clock signal begin if(clkevent and clk=1) then clk10_count=clk10_count+1; if(clk10_count=16#3fff#) then clk1

7、0=not clk10; end if; end if; end process; process(clk10) begin if(clk10event and clk10=1) then if(time=150) then time=0; else timetone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_index

8、tone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_index

9、tone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_index

10、tone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_index

11、tone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_indextone_index

12、tone_indextone_indextone_indextone_indextonetonetonetonetonetonetonetonetonetonetonetonetonetone=11111111111; -others:no output end case; end process; process(clk) -control the frequence of the speaker begin if(clkevent and clk=1) then if(tone_count=16#7ff#) then tone_count=tone; if(tone2047) then s

13、pk=not spk; end if; else tone_count=tone_count+1; end if; end if; end process; end behave; 七、实验思考题: 1、注意时钟频率对实验结果的影响? 答:音乐音符的产生就是利用计数器对输入的时钟信号进行分频,通过控制输出频率的不同来控制扬声器发出不同的声音。时钟频率越高,输出音乐的节奏越快;时钟频率越低,输出音乐的节奏越慢。 2、对于试验中出现的问题,应该如何解决? 答:(1)FPGA运行后,输出的音乐节奏太慢、太快:这样的话,把输入的时钟频率适当调高或调低一点就行了(我自己做实验时用得那台实验设备,我个人觉

14、得时钟频率1.5MHz或者3MHz都还行);(2)FPGA运行后,输出的音乐声音太小:这样的话,主要是输出方式选择得不对,我们可以通过中间的一个跳线的改变来选择蜂鸣器或者喇叭,直到输出音乐的音量比较适中为止。 八、实验体会: 对于这个应用性实验,在我做的过程中,个人觉得前期上课老师讲到的内容以及自己对VHDL语言编程和Quartus-II 软件运用的掌握是关键。首先是上课老师讲到的内容,正是有了老师的引导,我们才能最快速的入门,快速地进入到EDA课程相关内容的学习,虽然老师上课讲的内容绝大多数属于FPGA的硬件知识、VHDL语言的编写规则以及一些使用Qurtus-II软件的注意事项和常见问题的

15、处理。正是有了老师上课的引导,我们才能很快的进入EDA相关内容的学习,尤其是VHDL语言的学习。如果上课不认真地听课,光靠自学是不可能掌握好这门语言的。在我们的这次的EDA应用实验中,VHDL语言代码我们都是已知的,只要在实验前能够读懂程序代码就可以了。虽然说是读懂事先给的程序代码,但是我们依然需要具备一定的VHDL语言的编写规则、常用到的语言结构、固定用法以及改错能力。接下来就是利用硬件设备测试VHDL语言代码的正确与否,观察实验结果是否能达到预期的实验目的。这些就需要我们能够熟练地使用Qurtus-II软件,包括使用软件修改语言代码中的错误,进行语言下载到硬件和相关硬件的配置。这些讲起来都

16、觉得很简单,在自己实际做实验的过程中,我总觉得我的能力不够,感觉有好多东西还不会,也有好多的东西是一知半解,不是很明确了解其作用和原理。所以在做实验的时候,光是找东西就花费了不少时间。还有就是我们对这样的内容接触的不是很多,而且接触的时间也不多由于还有一些原因就是我们关于这一方面的资料和了解一比较少,所以很多的时候很茫然。导致实验中出现了错误,都不知道如何去解决,不知道是硬件问题还是软件层面上的问题,总是想依靠别人来帮自己。在这次实验中,我就学着努力克服这些缺点,独立地去做每一实验,当依靠自己解决试验中出现的问题,那是一种巨大的成就感,觉得自己非常的充实。 这次实验,给我的最大的感受就是FPGA的功能太强大了。通过这次实验,我感到自己所学到的还只是沧海之一粟,为了能让自己以后有更多的资本,进一步掌握它,我们还需要大量的时间去深入学习。以上就是我一点实验体会,还有很多不成熟的观点,希望老师能给予批评指正。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1