欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    音乐播放器设计实验报告(共6页).docx

    • 资源ID:13562795       资源大小:530.58KB        全文页数:6页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    音乐播放器设计实验报告(共6页).docx

    精选优质文档-倾情为你奉上实验报告课程名称: 数字系统设计实验 指导老师: 成绩:_实验名称: 音乐播放器设计实验 实验类型: 设计型 一、实验目的和要求(必填)二、实验内容和原理(必填)三、主要仪器设备(必填)四、操作方法和实验步骤五、实验数据记录和处理六、实验结果与分析(必填)七、讨论、心得一、实验目的和要求实验目的:(1)掌握音符产生的方法,了解DDS技术的应用;(2)了解AC97音频接口电路的应用;(3)掌握系统“自顶而下”的设计方法。实验要求:(1)可以播放四首乐曲,设置play、next、reset三个按键。按play键播放当前乐曲,按键next播放下一首乐曲。(2)LED0指示播放情况(播放时点亮),LED2和LED3指示当前乐曲序号。2、个性化要求(1)用键盘上的三个按键P、N、Esc控制乐曲的播放。(2)用SVGA显示乐曲的播放波形。二、实验内容和原理本次实验共可分成mcu、song_reader、note_player、codec_conditioner和ac97_if五个子模块。如下图:1、mcu模块接受按键信息,通知song_reader模块是否要播放(play)及播放哪首乐曲(song)。2、song_reader模块根据mcu的要求,逐个取出音符note,duration送给note_player模块播放,当一首乐曲播放完毕,回复mcu模块乐曲播放结束信号(song_done)。3、note_player模块接收到需播放的音符,在音符的持续时间内,以48Hz速率送出该音符的正弦波样品给AC97音频接口模块。当一个音符播放结束,向song_reader模块发送一个note_done脉冲索取新的音符。4、codec_conditioner、ac97_if模块负责与AC97音频系统接口工作。另外,按键处理模块完成输入同步化、防颤动和脉宽变换等功能。设计原理:1、主控制模块mcu的设计根据设计要求,模块mcu的工作流程图如下图所示。系统复位后经RESET状态初始化后进入WAIT状态等待按键输入或乐曲播放结束应答,若有按键输入则转入相应的按键处理状态(NEXT或PLAY),若一曲播放结束则进入结束播放END状态。 2、乐曲读取模块song_reader的设计结构框图如下图所示,地址计数器为5位二进制计数器,其中note_done为计数允许输入,状态q为song_rom的低5位地址,song1:0为song_rom高两位地址。当地址计数器出现进位或duration为0时,表示乐曲结束,应输出一个时钟周期宽度的高电平脉冲信号song_done。song_reader控制器的算法流程图暂略。由于从song_rom中读取数据需要一个数据周期,所以在流程图中插入NEXT_NOTE转态,目的是延迟一个时钟周期输出new_note信号,以配合song_rom的读取要求。3、音符播放模块note_player的设计note_player的结构框图如下图所示:note_player控制器负责与song_reader模块接口,读取音符信息,并根据音符信息从Frequency ROM中读取相位增量step_size送给DDS子模块sine_reader。另外,note_player控制器还需要控制音符播放时间。音符定时器为6位二进制计数器,beat、time_clear分别为使能、清0信号,均为高电平有效。定时时间为音符的长短(duration_to_load个beat周期),timer_done为定时结束标志。子模块sine_reader的功能及就是利用DDS技术产生正弦样品,其原理框图如下所示:由于Sine ROM只给出四分之一周期的正弦样品,所以地址或数据也需要进行相应的处理,可以直接根据下图设计地址处理器和数据处理器。三、主要仪器设备XUP Virtex-II Pro开发系统、ISE9.2、ModelSim6.0C四、实验数据记录与处理各模块仿真结果如下所示:1、mcu:RESET:000 WAIT:001 END:010 NEXT:011 PLAY:100以state为核心综合分析,首先置为RESET状态,下个时钟周期置为WAIT,play_button置0后状态变为PLAY,之后又是WAIT按照波形分析过去,发现和流程图是一致的,仿真正确。2、song_reader:先观察整体,再取几小段观察,着重分析state、new_note、song_done等波形,可以发现是符合要求的。3、sine_reader:首先观察曲线是否是和step_size有关的正弦曲线,这一点是满足的。然后将uut中的信号也添加进去,从中抽查一些小段,看sample、sample_out、rom_addr是否满足要求。这才能够初步判断波形正确。4、note_player:首先观察曲线是频率符合要求的正弦信号。一旦sine_reader是正确的,note_player出错的几率就比较小。观察timer_done信号可以发现是符合要求的,初步判定note_player模块正确。5、music_player:当其他模块正确时可基本判定music_player仿真正确,因为之前正弦波信号正确此时不再观察正弦波。我之前犯了一个错误就是song_reader的状态机NEW_NOTE状态有误,new_note应该是1而不是0。且之前由于疏忽没有在测试song_reader时发现,在测试music_player时我发现其他都正常,但是sample_out在很长时间后才不是0,经过长时间的思考和尝试后我意识到是这里出了问题。五、实验结果与分析用ISE9.2软件对Verilog代码进行综合实现后,下载到XUP Virtex-II Pro开发系统进行验证,具体过程不再详述。六、思考题1、在实验中,为什么next按键需要消颤动及同步化处理,而reset、play两个按键不需要消颤动及同步化处理?因为输入多个reset或play信号都是置零或播放,和输入一个脉冲信号的效果是相同的,没有消颤动及同步化处理也没有影响。但是对于next键,输入多个脉冲信号和输入一个脉冲信号的效果不同,不能达到放下一首的目的,可能会跳到很多个下一首,导致很大的问题。2、如果将play按钮功能重新定义为play/pause,即单击此按钮,乐曲在“播放”和“暂停”两种转态之间切换,那么应怎样修改设计?修改设计mcu状态机即可,如下图所示:七、讨论、心得一开始面对如此大的工程设计我觉得难以入手,好在老师给出了提示:从DDS开始。开始我想要完全弄懂DDS的原理,看了很久很久的书仍然不太明白,耽误了很多时间,导致后面进度一直跟不上,心里非常慌。后来干脆就直接做sine_reader模块,从全加器开始,地址处理、数据处理一个个做下去。这样虽然对原理和设计一知半解,但是随着后面的仿真等对原理的认识逐渐加深。虽然还是不太理解为什么这样设计以及某个已经给了代码的模块究竟是干什么的,但是总比开始好多了。我觉得做实验一开始不用追求完全理解,总要先入手才能慢慢明白的。代码的编写总是存在一些瓶颈,一开始语法不熟,总要想半天怎样表达这个意思,一般是通过翻书或者问人来解决。一般来说,只要理解了要做什么之后,就比较简单了。难的是仿真改错。语法错误是最好办的,唯一的问题软件提示错误原因的英文句子每个词都认识,联系在一起就不知道是什么意思了。例如我也犯了漏掉endmodule 这样傻的错误,看半天也看不懂错误原因,直到询问老师。好的一面是如果老师出一样的改错题目我肯定会做了。端口不对等错误自己难以查出,软件也会提示我们。但是出来的那些绿线是否正确是个大问题。像mcu这样的小模块是很好判断的,一个状态一个状态的看一遍就能确保正确与否。大的模块怎么办?我碰了很多壁,明明知道自己有错就是查不出来,看代码左看右看都没问题。不知道是不是我太笨,起码有七八个小时花在查错上,查出来之后简直哭笑不得。我有两个花了很多时间的错误,全部都是把1写成了0或者把0写成了1这样的。我发现,当大体没有问题但有一两个数据一直不对头一般说明就是1写成了0或者把0写成了1这样的粗心错误。有个方法就是找关键引脚,盯紧关键引脚对不对。还有一点,我之前检查的时候往往抽样查,看一两个地方好像是对的就以为对了,其实不是这样的,要找代表性的区域。例如sine_reader,00、01、10、11区域都要看才行。专心-专注-专业

    注意事项

    本文(音乐播放器设计实验报告(共6页).docx)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开