【精选】音乐播放器实验报告音乐播放器实验报告.docVIP

【精选】音乐播放器实验报告音乐播放器实验报告.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【精选】音乐播放器实验报告音乐播放器实验报告

实验报告 课程名称: 数字系统设计实验1 指导老师: 成绩:__________________ 实验名称: 音乐播放实验 实验类型: 设计型 同组学生姓名:_ 无 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 实验目的和要求 1、掌握音符产生的方法,了解DDS技术的应用。 2、了解AC97音频接口电路的应用。 3、掌握系统“自顶而下”的设计方法。 实验内容和原理 i实验内容:设计一个音乐播放器 ii实验原理:系统划分为主控制器(mcu)、乐曲读取(song_reader)、音符播放器(note_player)、AC97音频接口(codec_conditioner)和ac97_if五个子模块。 系统图如下: mcu接收按键信息,通知song_reader是否要播放(play)以及播放播放哪一首歌曲(song)。 song_reader模块根据mcu要求逐个取出音符{note,duration}送给note_player,乐曲播放完毕回复(song_done)给mcu。 note_player接收音符后以48kHz速率送出该音符的正弦波样品给AV97音频接口模块。当一个音符播放结束,向song_reader回复note_done。 codec_conditioner、ac97_if负责与AC97接口工作。 另外,按键处理模块完成输入同步化、防颤动和脉冲变换等功能。 主要仪器设备 带modelsim和ISE 的PC机,XUP Virtex-II Pro 开发系统一套 设计过程 音符播放器(note_player)的设计 主要任务有: 从song_reader模块接收所需播放的音符信息{note,duration}; 根据note值找出DDS的相位增量; 以48khz的速率从sine rom取出正弦样品送给AC97接口模块; 当一个音符播放完毕,向song_rom模块索取新的音符。 Note_palyer的结构框图如下: 各个端口含义如下: DDS设计 DDS的主要思想是,从相位的概念除法合成所需的波形,其结构由相位累加器,相位-幅值转换器、D/A转换器和低通滤波器组成。Sine ROM中存放一个完整的正弦信号样品,其映射关系为s(i)=(2^(n-1)-1)*sin(2*pi*i/2^n)。其中,m为Sine ROM的地址线位数,n为rom的数据线宽度,s(i)数据形式为补码。f为取样时钟clk的频率,k为相位增量。输出正弦信号频率fo=k*f/2^m。基本原理框图如下: DDS的优化:为了减少硬件复杂性,降低芯片面积和功耗,提高芯片速度,对DDS进行了优化,利用正弦波的对称性,只需要存储四分之一的正弦信号样品就可以提供整个波形。需要注意的是: Sine ROM存放的是四分之一的波形,因此一个完整的正弦波形存储容量需要多两位。 四分之一周期未给出地址为1024时的值,这一点取1023的值(1023时样品已经达到最大值)。 为了得到准确的正弦频率,本实验的相位增量为22位,其中小数部分为10位。 根据地址的高两位,我们可以把正弦信号分为四个区域,如右图所示 在每个区域的地址和数据的处理方法见下表 Sine_reader代码 (i)相位累加器full_adder : module full_adder(in1,in2,adderout,co); parameter N=1; input[N-1:0] in1,in2; output[N-1:0] adderout; output reg co; wire [N-1:0] in1,in2; reg [N-1:0] adderout; always @ (in1 or in2)begin {co,adderout}=in1+in2; end endmodule (ii)地址处理模块address_dealer: module address_dealer(raw_addr,rom_addr); input wire [21:0] raw_addr; output reg [9:0] rom_addr; always@(*) begin case(raw_addr[21:20]) 2b00:rom_addr=raw_addr[19:10]; 2b01: if(raw_addr[20:10]==1024) rom_addr=1023; else rom_addr=(~raw_addr[19:10]+1); 2b10:rom_a

您可能关注的文档

文档评论(0)

pfenejiarz + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档