1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
音乐匣子

洛阳理工学院实验报告 系部计算机与信息工程系班级学号姓名课程名称DSP技术实验日期实验名称音乐匣子成绩实验目的: 1. 学会音频芯片AIC23B 寄存器的配置方法;掌握McBSP 中断设计方法。 2. 了解 DDS 工作原理,练习定时器中断函数的编写。 3. 了解DMA 功能与特点,了解DMA 软件编程方法。实验条件: 装有CCS开发环境的电脑实验原理: DMA 是直接存储器存取,是一种传送不占用CPU 处理时间的大批量数据传送的有效方式。例如,要做这样一个音频处理系统:利用与 McBSP0 接口的语音芯片,一次采集256个或更多语音样本对它们进行数字语音处理(如频谱分析、音频压缩等)后,将数据存储到外部数据存储器中,再循环进行第二次、第三次这样的采集处理。若采用查询方式,将占用所有 CPU 资源,在实时系统中这种方法不可取。现比较一下用McBSP 中断方式和DMA 方式的效率有何不同: 一、中断方式:每当McBSP0 接收到一个16/32 位的语音数据后,将触发一次串口接收 中断;CPU 在中断服务程序中将数据转移到一个256 字的接收缓冲区并计数;当计数达到256 即缓冲区满时,将256 个数据转移到数据处理存储区,并通知主程序进行处理。 二、DMA 方式:使用一个DMA 通道自动接收McBSP0 传来的256 个数据并存入接收缓冲区;当缓冲区满时触发DMA 通道0 中断,CPU 一次将256 个数据传送到数据处理存储区并进行处理。 由上比较可见,每接收一批样本,用中断方式将触发256 次中断,也就是主程被打断256 次去接收数据。而用DMA 方式,只在256 个样本全部接收完毕时发生一次中断,这时主程序应该已经处理完上一批的数据。进一步考虑,当数据处理完毕后还需要将数据存储,这时可以采用另一个DMA 通道完成这个任务,将CPU 释放出来等待进行下一批样本的处理。事实上 DMA 传送并非比用CPU 直接处理快,例如在内部存贮器之间传送时,用CPU需要2cycle/word,而用DMA 要4cycle/word。DMA 的优势在于将CPU 解放出来做其它的事情。 以下是两个 DMA 通道与CPU 协调工作的情况(阴影部分表示空闲)。 McBSP 接收数据 DMA 中断,将数据从接收缓冲区转移到数据处理存储区 对对数据进行处理 将处理完的数据送走 估计一下各步的时间,设采样频率是 8kHz,CPU 时钟频率100MHz。因此一个处理周期为1/8kHz*256=32ms。 ②传送 256 个点至少需要256word*2cycle/word=512cycle=5.12us。假设处理完后数据量不变,④需要 256word*4cycle/word=1024 cycle=10.24us。③所需要的时钟周期取决于算法的复杂度。 计算好各步所需要的时钟周期,就可以根据情况灵活选择如何使用DMA,例如如果CPU有足够的空闲时间送走数据就不必要;④如果 CPU 仍然不足,就需要再增加个一个DMA 来做②的任务。如果数据的输出也是从McBSP 输出,还要用一个DMA 通道进行McBSP 的发送。总之要合适地使用 DMA 通道,使用不当也会使程序变得更加复杂,例如多个DMA 通道优先级的问题等等。 实验内容 实验拟产生一段音乐(如“两只老虎”),采用DDS原理,首先将正弦波的波表放在RAM中,由音乐的音阶产生一个查表的步长(step),DSP的McBSP0将AIC23B配置为双声道线性输入AD采样。当McBSP0收到一个数据单元(32位,高16位为左声道采样数据,低16位为右声道采样数据),产生RINT0中断通知CPU响应,CPU跳至中断服务程序。在中断服务程序中分别读取左声道和右声道采样数据,再由McBSP0发送到AIC23B的DAC,通过模拟输出口输出音频。 程序主要模块: McBSP 寄存器定义头文件mcbsp54.h,定义了McBSP 寄存器地址及对寄存器操作的宏。 中断向量表 vectors.asm:定义McBSP0 接收中断服务程序(_RINT0_isr)映射。 应用程序 main.c:主程序、McBSP0 初始化子程序、AIC23 初始化子程序、RINT0 中断服务程序。 ******************* 文件名 vectors.asm **************************************** .sect .vectors .ref _c_int00 ; C程序入口 .ref _dds_isr .ref _timer0_isr .align 0x80 ; 中断向量必须对齐页边界 RESET: ; Reset中断向量,跳转到程序入口 BD _c_int00

文档评论(0)

zw4044 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档