DSP课程设计 音频信号频谱分析

  • 格式:txt
  • 大小:23.06 KB
  • 文档页数:10

本文由jielmeng贡献
doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
CHANGSHA UNIVERSITY OF SCIENCE & TECHNOLOGY
DSP 课程设计
题目: 题目: DSP
——音频信号频谱分析
学生姓名: 学生姓名: 学 班 专 号: 级: 业:
翦杰 200757170119 0707-01 电子信息工程 黄亚飞、 黄亚飞、肖鸿
指导教师: 指导教师:
实习起止时间: 2010 2011 实习起止时间: 2010 年 12 月 27 日至 2011 年 1 月 7 日
音频信号频谱分析
题目
DSP —音频信号频谱分析
学生姓名: 学 班 号: 级:
翦杰 200757170119 07电子信息工程 07-01 电气与信息工程 肖鸿、 肖鸿、黄亚飞 2011 201 1 年 1 月 7 日
所在院( 所在院(系): 指导教师: 完成日期:
音频信号频谱分析
音频信号频谱分析
摘要
随着信息技术革命的深入和计算机技术的飞速发展,数字信号处理技术已经逐渐发 展成为一门关键的技术学科。而 DSP 芯片的出现则为数字信号处理算法的实现提供了 可能。这一方面极大地促进了数字信号处理技术的进一步发展;另一方面,它也使数字 信号处理的应用领域得到了极大的拓展。在国外 DSP 芯片已经被广泛地应用于当今技 术革命的各个领域;在我国,DSP 技术也正以极快的速度被应用到科技和国民经济的各 个领域。本次课程设计介绍了音频信号频谱分析的原理以及其所涉及的硬件结构和软件 设计,该设计是基于快速傅立叶变换(FFT)的方法对采集的音频信号进行频谱分析, 得到音频信号的频率及功率,FFT 算法采用 TLC320AD50 编写 DSP 程序实现。现可以 完成 256 点的 FFT 运算,频率分辨率达到 100Hz,输入信号电压(峰峰值)可以达到 100mV 到 4V。
关键词:音频信号;快速傅立叶变换;频谱分析;分辨率
第 1 页 共 30 页
音频信号频谱分析
目 录
1 绪论……………………………………………….………………………………………..1 1.1 课题背景……1 1.2 课题目的……1 2 硬件电路…… …… …… ……3 2.1 系统框图…… ……3 2.2 信号处理部分…… ……3 2.2.1 信号叠加电路…… …… ……3 2.2.2 低通滤波器…… ……3 2.2.3 50Hz 陷波电路…… ……4 2.2.4 电平转换电路…… …… …… …… ……4 2.2.5 信号采集部分…… …… ……4 2.3 时钟信号产生电路.. …… …… …… ……13 3 软件设计…… …… …… …… ……14 3.1 DSP 初始化…… …… ……14 3.2 AD50 初始化…… . ……14 3.3 设置 DSP 中断…… …… …… ……14 3.4 数据存储…… …… …… …… …… …… ……14 3.5 数据输出…… …… …… …… …… ……14 3.6 FFT

算法…… …… …… …… …… ……14 4 总结…… ……17
参考文献…… ……19 附录…………………………………………………………………………….………… ………20
第 2 页 共 30 页
音频信号频谱分析
1 绪论
1.1 课题背景
目前,在微电子技术发展的带动下,DSP 芯片的发展日新月异,DSP 的功能日益强 大, 性能价格比不断上升, 开发手段不断改进。 DSP 芯片已经完全走下了“贵族”的圣坛。 DSP 芯片已经在通信与电子系统、信号处理系统、自动控制、雷达、军事、航空航天、 医疗、家用电器、电力系统等许多领域中得到了广泛的应用,而且新的应用领域在不断 地被发掘。 TI、AD、AT&T、Motorola 和 Lucent 等公司是 DSP 芯片的主要生产商。其中 TI 公 司的 TMS320 系列的 DSP 占据了全球 DSP 市场的 50%左右。该系列产品在我国同样被 用户广泛使用,市场份额更高,超过 90%。 鉴于多数 DSP 芯片和高速 A/D、 D/A 芯片工艺为贴片封装, 对一般用户来说工厂制 版成本较高、手工工艺难制版、效果差等的困难,本系统设计了一套基于 DSP 芯片的 最小系统板,并扩展了 A/D、D/A 实现语音信号的采集和回放,制作语音处理平台。设 计的核心芯片采用 TI 公司的 TMS320VC5402PGE100 进行设计, 其最高处理速度能达到 100MIPS(每秒执行 100 百万条指令),性能优越、性价比高,适合大多数用户和教学科 研。 基于 DSP 的运用领域和前景,结合我的专业跟个人爱好,本次毕业设计所选课题 为 DSP 语音采集回放处理平台。以 TMS320C5402DSP 为核心,对外部语音信号进行采 集,并对所采集信号进行语音处理,最后通过外部设备回放。该系统适合对单语音信号 进行处理。由于设计过程中采用的 A/D、D/A 芯片是 TI 公司的 TLC320AD50,所以最 高采样速率为 22.05KHZ。为了验证本次设计的正确性和可用性,对采集的语音信号进 行 FIR 滤波,滤除 50HZ 交流信号,并抑制频率在 3600HZ 以上的语音信号。所设计的 滤波器是带通滤波器,通带为 200HZ—3400HZ,经过实验验证,得到了预期的滤波效 果。证明本次单通道语音信号处理平台设计的正确性,可用性。
1.2 课题目的
DSP 课程设计是对《数字信号处理》《DSP 原理及应用》等课程的较全面练习 、 和训练,是实践教学中的一个重要环节。
第 1 页 共 30 页
音频信号频谱分析
通过本次课程设计,综合运用数字信号处理、DSP 技术课程以及其他有关先修 课程的理论和生产实际知识去分析和解决具体问题,并使所学知识得到进一步巩 固、深化和发展。初步培养学生对工程设计的独立工作能力,掌握电子系统设计的 一般方

法。通过课程设计完成基本技能的训练,如查阅设计资料和手册、程序的设 计、调试等,提高学生分析问题、解决问题的能力。 本题目通过 TLC320AD50 采集音频信号(f.max<10kHz),编写 DSP 的 FFT 处理 程序(自定频谱分辨力) ,获得幅频特性之后,在点阵液晶(128*64)中大致显示出幅 频图。并在液晶中用文字显示频率幅值前三的频率值。 1、DSP 与 TLC320AD50 接口电路的原理图绘制; 2、DSP 控制 TLC320AD50 的程序编写与调试; 3、TLC320AD50 进行语音模拟量到数字信号的转换,实现声音的采集,在 CCS 软件中分析信号的幅频特性; 4、编写 DSP 的 FFT 处理程序; 5、控制点阵液晶,实现绘图功能,将幅频图显示出来; 6、按要求编写课程设计报告书,正确、完整的阐述设计和实验结果; 7、在报告中绘制程序的流程图,并文字说明。
第 2 页 共 30 页
音频信号频谱分析
2 硬件电路
2.1 系统框图
本系统的硬件电路主要由信号预处理模块、信号采集模块、信号频谱分析模块、时 钟触发信号、系统控制模块和键盘显示模块 6 部分组成。系统组成框图如图 2.1 所示。
图 2.1 系统组成框图
2.2 信号处理部分
信号预处理具体电路主要由信号合成、阻抗匹配、0.5f 的低通滤波、50H 的陷波器 和信号抬高等部分组成,如图 2.2 所示。
图 2.2 信号处理框图
2.2.1 信号叠加电路 信号叠加电路采用反向求和电路,将 3 信号求和的输出,运放采用 OP37。 2.2.2 低通滤波器
第 3 页 共 30 页
音频信号频谱分析
由于要求音频信号为 10KHz 以下,为了使信号得到更高的纯度,则需对不用的高 频信号进行滤出,从而提高系统测量精度。通过滤波器的快速设计方法设计出 12KHz 的低通滤波器。 2.2.3 50Hz 陷波电路 在音频信号中, 工频 50HZ 信号对系统的影响最大, 因此, 在信号处理中加入 50HZ 的陷波电路。计算工公式为:f=1/2πRC。 2.2.4 电平转换电路 由于 ADC 只能采集正电压,则需对信号进行抬高,分析计算得电路需加 3V 的直 流电平。 2.2.5 信号采集部分 语音信号模数/数模转换选择 TLC320AD50(以下简称 AD50)芯片,AD50 使用 过采样(over sampling)∑—? 技术提供从数字信号到模拟信号(DA)和模拟信号到数 字信号(AD)的高分辨率低速信号转换。该器件包括两个串行的同步转换通道(用于 各自的数据传输) ,在 DA 之前有一个插人滤波器(interpolation filter) ,在 AD 之后有一 个抽取滤波器(decimdtionfilter) ,由此可降低 AD50 自身的噪声。此外,AD50 还具有 片内时序和控制功能。 AD50 特点如下。 · 输入信号。单端信号输人,幅度在 1~4V 之间。 · 输出信号

。单端信号输出,幅度在 1~4V 之间。 · 单一 5V 电源供电,也可以使用 5V 模拟电源和 3V 数字电源同时供电。 · 最大工作功耗为 100mW。 · 通用 16 位数据格式,也可以采用 2 的补码数据格式。 · 内部基准电压。 · AD 为 64 倍采样,DA 为 256 倍采样。 · 支持各种 V.34 协议的采样速率。 · 具有多种可选的采样频率。 · 支持商业级音响应用。 · 工作温度范围从-40~850。 AD50 的引脚分布如图 2.3 所示( (1)为 DW 封装的引脚分布, (2)为 PT 封装的引 脚分布) 。
第 4 页 共 30 页
音频信号频谱分析
图 2.3 AD50 的引脚分布
AD50 的各个引脚的说明如表 2-1 所示。
表 2-1 AD50 的引脚说明
第 5 页 共 30 页
音频信号频谱分析
续表
第 6 页 共 30 页
音频信号频谱分析
在 AD50 正常工作前,必须对它进行正确的初始化。初始化操作的主要工作是配置 AD50 的 4 个控制寄存器 CR1、CR2、CR3 和 CR4。控制寄存器的读写是通过二次通信 来实现。在二次通信中,D0~D7 为写人控制寄存器的数据或者从控制寄存器读出的数 据,D8~D12 的内容决定选择哪个控制寄存器,D13 位决定是读操作还是写操作。由 D8~D13 位确定的所有情况如表 2-2 所示。
表 2-2 AD50 的 D8~D13 位确定的所有操作情况
控制寄存器 1 中各个控制位的功能说明如表 2-3 所示。
表 2-3 控制寄存器 1 的各个控制位的功能说明
第 7 页 共 30 页
音频信号频谱分析
控制寄存器 2 中各个控制位的功能说明如表 2-4 所示。
表 2-4 控制寄存器 2 的各个控制位的功能说明
控制寄存器 3 中各个控制位的功能说明如表 2-5 所示。
表 2-5 控制寄存器 3 的各个控制位的功能说明
控制寄存器 4 中各个控制位的功能说明如表 2-6、2-7 所示。
表 2-6 控制寄存器 4 的各个控制位的功能说明
第 8 页 共 30 页
音频信号频谱分析
表 2-7 控制寄存器 4 的第 4~第 6 位对应的 N 值
AD50 控制寄存器的设置必须在二次通信中完成。AD50 有硬件和软件两种方式启 硬件启动过程如下: C5409 动二次通信, 下面介绍硬仵方式启动 AD50 的二次通信过程。 通过其内部寄存器将 XF 引脚变为高电平,从而控制 AD50 的 FC 引脚到高电平,然后 向缓冲串口写一个 16 位的控制字,低 8 位是 AD50 的控制寄存器初始化值,高 8 位选 择所要初始化的控制寄存器及操作。整个过程的时序如图 2.4 所示。
图 2.4 硬件启动 AD50 二次通信时序
第 9 页 共 30 页
音频信号频谱分析
AD50 的工作过程可分为 AD 通道工作过程和 DA 通道工作过程。 通道把模拟信 AD 号转换成数字信号,并以 2 进制补

码形式表示。当帧同步信号有效时(FS 为低电平) , 16 位(或者 15 位)数字信号在 SCLK的上升沿输出到 DOUT 引脚,一位数据对应一个 SCLK 周期。传输时序如图 2.5 所示。
图 2.5 AD50 的 AD 通道数据传输时序
AD50 的 DA 通道把送人的数字信号转换成模拟信号。在 SCLK 的作用下,数字信 号通过 DIN 引脚进人 DA 通道,每个 SCLK 的下降沿输人一位数字信号。DA 将输入的 数字信号转换成模拟信号输出,DA 通道的传输时序如图 2.6 所示。
图 2.6 AD50 的 DA 通道数据传输时序
AD50 的前后端信号处理包括两个处理电路:输人模拟信号的处理电路和依据输出 模拟信号的处理电路。这两个处理电路的主要作用是将信号进行处理,使之更加适合 AD 和 DA 的要求。 为了达到更好的信号处理效果,AD50 的模拟信号输人一般采用差分输人方式,即 使用两个运算放大器,将单端输入信号转换成差分输人信号,电路连接如图 2.7 所示。
第 10 页 共 30 页
音频信号频谱分析
图 2.7 AD50 单端信号转换成差分信号
由图可知,单端输人信号经过两个 22μF 的隔直电容,送人运算放大器的反相端, 输出反相信号 IMP;IMP 再输人到另一个信号的反相端,输出同相信号 INP,从而形成 差分输人信号 INP 和 IMP。图中的运算放大器选择的是 TI 公司的 TLC4502,也可以选 用其他可替代的运算放大器芯片。 除了使用上述的运算放大器外,也可以使用变压器将单端信号转换成差分信号输人 到 AD50,如图 2.8 所示。
图 2.8 使用变压器将单端信号转换成差分信号
图中推荐的值为 50 ,Rin 为 22 ,Cin 为 10μF,这些元件的值也可以根据具体的 信号进行调整,一般清况下电阻值在 10~100 之间,电容值在 10~200pF 之间。 AD50 的 DA 输出为差分信号,可以直接驱动 600 的负载。DA 输出处理电路如图 2.9 所示。
第 11 页 共 30 页
音频信号频谱分析
图 2.9 AD50 的 DA 后端输出信号处理
AD50 的去耦合电容的连接如图 2.10 所示。
图 2.10 AD50 的去耦合电容的连接
AD50 的模拟电源和数字电源可以使用一个电感连接在一起,连接方法如图 2.11 所 示。
图 2.11 AD50 模拟和数字电源的连接
第 12 页 共 30 页
音频信号频谱分析
2.3 时钟信号产生电路
通过计算, 对模拟信号的采样速率为 25.6KHz,则需产生 25.6KHZR 的方波.作为 A/D 转换数据的速率。可采用单片集成电路函数发生器 ICL8038。ICL8038 工作频率范围在 几 Hz 到几百 KHZ 之间,可以同时输出三角波、方波和正统波,满足设计要求。
第 13 页 共 30 页
音频信号频谱分析
3 软件设计
3.1 DSP 的初始化
包括定时

器 0 的初始化,以确保 TOUT0 引脚能输出正确的时钟信号到 AD50,使 AD50 能根据该时钟信号进行采样。初始化缓冲串口时,应使 DSP 工作于主设备方式, CLKR0 和 FSX0 引脚设为输出。DSP 初始化完成后,在 DSP 的 TOUT0,CLKR0,FSX0 这 3 个引脚可以看到连续输出的脉冲。
3.2 AD50 的初始化
此时主要是设置 DSP 的 XF 引脚输出为高,以启动 AD50 的二次通信,在正确设置 AD50 的 4 个控制寄存器以后,AD50 开始采样数据。此时检测 AD50 的 DOUT 引脚能, 能发现引脚有连续的信号输出。
3.3 设置 DSP 中断
DSP 的中断负责从缓冲串口读取数据,可以在 CCS 中查看读取的数据是否正确, 如果每次读取的都是 0 或者同一个数据,说明 AD50 没有正常工作,此时需检查 DSP 或者 AD50 是否初始化成功。
3.4 数据存储
DSP 从缓冲串口读取数据存放到 RAM,连续存放 500 或者 1000 个数据,可以通过 CCS 的画图功能看到采集到的数据。这时主要判断采样频率是否正确、有没有数据丢失 等。
3.5 数据输出
将 RAM 中的数据直接送到 AD50 的 D/A 单元,转换成模拟信号后输出。这时从 AD50 的模拟信号输出端可以看到和输入端一样的信号。
3.6 FFT 算法
本系统软件设计主要实现 FFT 算法和各频率和对应功率的分析和显示,由于 DSP 语言表达和运算能力比较强且具有很好的可移植性和硬件控制能力,则采用 DSP 语言 实现。总体程序流程图如图 3.1 所示。
第 14 页 共 30 页
音频信号频谱分析
图 3.1 总体程序流程图
本设计中 FFT 根据 DFT 的基二分解方法,在第 L(L 表示从左到右的运算级数, L=1,2,3…M)级中,每个蝶形的两个输入数据相距 B
(L-1)
个点,同一旋转因子对应
着间隔为 2L 点的 2(M-L)个蝶形。从输入端开始,逐级进行,在进行 L 级运算时,依次 求出 2(L-1)不同的旋转因子,每求出一个旋转因子,就计算完它对应的所有的 2(M-L)个 蝶形。 因此用三重循环程序实现 FFT 变换。 同时采用原址计算, 可节省大量的存储单元。 FFT 算法的程序框图如图 3.2 所示。
图 3.2 FFT 算法的程序框图
第 15 页 共 30 页
音频信号频谱分析
系统用于实现语音信号的采集和播放,收到数据后,AD50 对数据进行模数转换, 变成数字语音信号后存储于内部 RAM,然后输出到 AD50,AD50 进行数模转换后输出 到相应的后端处理电路,最后由后端电路将输入的语音信号显示。
第 16 页 共 30 页
音频信号频谱分析
4 总结
在这次课程设计中, 我遇到了许多问题, 这些问题是我们初学者经常会遇到的问题。 通过老师的指导,和自己的思考

,总结如下: 问题 1:单步可以运行,连续运行时总回 0 地址。 解决办法: Watchdog 没有关,连续运行复位 DSP 回到 0 地址。 问题 2:OUT 文件不能 load 到片内 flash 中。 解决办法:Flash 不是 RAM,不能用简单的写指令写入,需要专门的程序写入。CCS 和 C Source Debugger 中的 load 命令, 不能对 flash 写入。OUT 文件只能 load 到片内 RAM, 或片外 RAM 中。 问题 3:在 flash 中如何加入断点解决办法: 在 flash 中可以用单步调试,也可以用硬件 断点的方法在 flash 中加入断点,软件断点是不能加在 ROM 中的。硬件断点,设置存储 器的地址,当访问该地址时产生中断。 问题 4:中断向量 解决办法:C2000 的中断向量不可重定位,因此中断向量必须放在 0 地址开始的 flash 内。在调试系统时,代码放在 RAM 中,中断向量也必须放在 flash 内。 问题 5:DSP 初始化 解决办法:DSP 在 RESET 后,许多的寄存器的初值一般同用户的要求不一致,例如: 等待寄存器,SP,中断定位寄存器等,需要通过初始化程序设置为用户要求的数值。 初 始化程序的主要作用: 1)设置寄存器初值。 2)建立中断向量表。 3)外围部件初始化。 GEL 文件的功能: GEL 文件的功能同 emuinit.cmd 的功能基本相同,用于初始化 DSP。但它的功能比 emuinit 的功能有所增强,GEL 在 CCS 下有一个菜单,可以根据 DSP 的对象不同,设置 不同的初始化程序。以 TMS320LF2407 为例: #define SCSR1 0x7018 ;定义 scsr1 寄存器 #define SCSR2 0X7019 ;定义 scsr2 寄存器 #define WDKEY 0x7025 ;定义 wdkey 寄存器 #define WDNTR 0x7029 ;定义 wdntr 寄存器
第 17 页 共 30 页
音频信号频谱分析
StartUp() ; 开始函数 { GEL_MapReset(); ; 存储空间复位 GEL_MapAdd(0x0000,0,0x7fff,1,1); 定义程序空间从 0000-7fff 可读写 GEL_MapAdd(0x8000,0,0x7000,1,1); 定义程序空间从 8000-f000 可读写 GEL_MapAdd(0x0000,1,0x10000,1,1); 定义数据空间从 0000-10000 可读写 GEL_MapAdd(0xffff,2,1,1,1); 定义 i/o 空间 0xffff 可读写 GEL_MapOn(); 存储空间打开 GEL_MemoryFill(0xffff,2,1,0x40); 在 i/o 空间添入数值 40h *(int *)SCSR1=0x0200; 给 scsr1 寄存器赋值 *(int *)SCSR2=0x000C; 给 scsr2 寄存器赋值,在这里可以进行 mp/mc 方式的转换 *(int *)WDNTR=0x006f; 给 wdntr 寄存器赋值 *(int *)WDKEY=0x055; 给 wdkey 寄存器赋值 *(int *)WDKEY=0x0AA; 给 wdkey 寄存器赋值 cmd 文件: 由 3 部分组成: 1)输入/输出定义:.obj 文件:链接器要链接的目标文件;.lib 文件:链接器要链接的库 文件;.map 文件:链接器生成的交叉索引文件;.out 文件:链接器生成的可执行代码;链接 器选项 。 2)MEMORY 命令:描述系统实际的硬件资源 。 3)SECTIONS 命令:描述"段"如何定位 。 通过近两周的课程设计,

我学到了许多知识,使我实现了从茫然到基本的认识到比 较熟练的运用 DSP 的转变。刚开始自己编的程序运行就错误很多,当时都没信心能把 这个课程设计完成,但什么都要自己面对的。后来在老师的指导和自己的思考下,我把 程序统统都重新写了一遍,并反复修改,最后通过编译。在后面的时间里,我顺利完成 了课程设计。
第 18 页 共 30 页
音频信号频谱分析
参考文献
[1] [2] [3] [4] [5] 邹彦. DSP 原理及应用[M]. 北京:电子工业出版社,2005,1. 戴明桢.TMS320C54xDSP 结构、原理及应用[M].北京航空航天大学出版社,2001,8. 胡圣尧. DSP 原理及应用[M].东南大学出版社,2008.7. 清源科技.TMS320C54xDSP 应用程序设计教程[M].机械工业出版社,2004,1. 清源科技.TMS320C54x 硬件开发教程[M].机械工业出版社,2003,1.
第 19 页 共 30 页
音频信号频谱分析
附录 A 音频信号频谱分析完整程序
ex12.asm ************************************************ * FileName: ex12.asm * * Description: 音频信号频谱分析实验 * Copyright(C) SanZhi Electronic, Author Zpin * ************************************************ .title "ex12" BSP .set 1 ;当前使用 McBsp1
*
;McBsp 内存映射寄存器 SPSA0 .set 038h SPSD0 .set 039h DRR10 .set 021h DRR20 .set 020h DXR10 .set 023h DXR20 .set 022h SPSA1 SPSD1 DRR11 DRR21 DXR11 DXR21 .set 048h .set 049h .set 041h .set 040h .set 043h .set 042h
;McBsp Subaddressed Registers SPCR1 .set 00h SPCR2 .set 01h RCR1 .set 02h RCR2 .set 03h XCR1 .set 04h XCR2 .set 05h SRGR1 .set 06h SRGR2 .set 07h MCR1 .set 08h MCR2 .set 09h RCERA .set 0ah RCERB .set 0bh
第 20 页 共 30 页
音频信号频谱分析
XCERA XCERB PCR
.set 0ch .set 0dh .set 0eh
.if BSP = 0 SPSA .set SPSA0 SPSD .set SPSD0 RDRR .set DRR10 RDXR .set DXR10 .endif .if BSP = 1 SPSA .set SPSA1 SPSD .set SPSD1 RDRR .set DRR11 RDXR .set DXR11 .endif WR_SUB_REG .macro val,addr stm addr,SPSA nop stm val,SPSD nop .endm RD_SUB_REG .macro addr,acc stm #:addr:,SPSA nop ldm SPSD,acc nop nop nop .endm WAITTRX .macro WAITR? RD_SUB_REG SPCR1,A and #1<<1, A bc WAITR?, AEQ .endm PROGREG .macro progword ;写 McBsp 控制寄存器
;读 McBsp 控制寄存器
;等待串口中断
;与 AD50 二次通讯
stm #01h,RDXR WAITTRX
第 21 页 共 30 页
音频信号频谱分析
stm #:progword:,RDXR WAITTRX .endm
wait
.macro STM #0008h, AR0 RPT *AR0 NOP .endm .mmregs .global _c_int00
.sect ".vectors" RESET bd _c_int00 stm #2000h,SP .space 19*4*16 BRINT0 b recv nop nop BXINT0 b trans nop nop .space 4*4*16 BRINT1 b recv nop nop BXINT1 b trans nop nop .space 4*4*16 .text _c_int00 ld #0h,DP stm #2000h,SP ssbx INTM ssbx SXM st #2491h,SWWSR st #0ffe0h,PMST st #0f007h,CLKMD
第 22 页 共 30 页
音频信号频谱分析
stm #4000h,AR1 stm #4000h,AR2 mcbsp_init rsbx CPL

nop nop nop ld #0, DP ssbx INTM ssbx SXM WR_SUB_REG #0000H,SPCR1 WR_SUB_REG #0200H,SPCR2 WR_SUB_REG #000CH,PCR WR_SUB_REG #0000H,SPCR1 WR_SUB_REG #0000H,SPCR2 WR_SUB_REG #0040H,RCR1 WR_SUB_REG #0004H,RCR2 WR_SUB_REG #0040H,XCR1 WR_SUB_REG #0004H,XCR2 ld 100,A wait andm #0ff3fh, 54h stm #0,RDXR WR_SUB_REG #0001H,SPCR1 WR_SUB_REG #0201H,SPCR2 ld 100,A wait aic_init stm #0h,IMR orm #0c00h,IMR stm #0ffffh,IFR PROGREG 0000001100000001b ;76543210 PROGREG 0000010000010000b ;76543210
第 23 页 共 30 页
;初始化 McBsp 串口 ; cpl latency ; cpl latency ; cpl latency
;16 BITs ;Ignore FS after the first ;16 BITs ;Ignore FS after the first
;set interrupts to come from serial ports not DMA ;by clearing bits 6 and 7 in DMPREC
;启动 McBsp 串口
音频信号频谱分析
;PROGREG 0104H ;PROGREG 0280H ;PROGREG 0301h ;PROGREG 045Ah ld RDRR,A ld RDRR,A stlm A,RDXR stlm A,RDXR rsbx INTM nop nop nop js nop nop nop b js
;二次通讯初始化 AD50
recv ldm RDRR,A ld #0d000h,b sub ar1,b bc record,beq ;ld a,b ;ld #0,a stl a,*ar1+ ;ld b,a b play record ld #0d000h,b sub ar2,b bc load,bneq stm #4000h,ar2 load ld *ar2+,a playand #0fffeh,a stlm A,RDXR rete trans rsbx XF rete .end
;读取 ADC 采样数据
;判断录音是否结束
;未结束->录音 ;已结束->放音
;录制数据放完,再从头放起 ;加载录制数据 ;放音
第 24 页 共 30 页
音频信号频谱分析
EX12.MAK /************* Code Composer V1 Project Data ******************** The following section contains data generated by Code Composer to store project information like build options, source filenames and dependencies. [command filename] experi.cmd 1 [Project Root] D:\dsp_user_soft\sanzhi\12语音录放 [build options] 3 Linker = "-o ex1.out -x " Assembler = "-s " Compiler = "-g -as -frD:\dsp_user_soft\sanzhi\ " [source files] ex12.asm 880946490 1 -18158 [dependencies] 0 -802 [version] 2.0 */ -o ex1.out -x "ex12.obj" "experi.cmd" /******** End of Project Data Generated by Code Composer ********/ Exx.ASM BSP SAMPLERATE .set 0 .set 8 ; 5409 DSK audio in/out codec uses McBSP0
.mmregs SPCR1_VAL SPCR2_VAL
.set .set
0000h 0200h
第 25 页 共 30 页
音频信号频谱分析
RCR1_VAL RCR2_VAL XCR1_VAL XCR2_VAL PCR_VAL .set
.set .set .set .set 0Ch
040h 004h 040h 004h
MCBSP0_TO_CODEC0 .set 0xFE MCBSP1_TO_CODEC1 .set 0xFD CODEC1_FC_ON .set 0x8 CODEC0_FC_ON .set 0x4 CPLD_CTRL2 .set 0x4 * McBSP Memory Mapped Registers SPSA0 .set 038h SPSD0 .set 039h DRR10 .set 021h DXR10 .set 023h SPSA1 .set 048h SPSD1 .set 049h DRR11 .set 041h DXR11 .set 043h * McBSP Subaddresed Registers SPCR1 .set 00h SPCR2 .set 01h RCR1 .set 02h RCR2 .set 03h XCR1 .set 04h XCR2 .set 05h SRGR1 .set 06h SRGR2 .set 07h PCR .set 0Eh ;; Choose appropriate sub-address registers and DRR/DXR .if BSP = 0 SPSA .set SPSA0 SPSD .set SPSD0 RDRR .set 21H ; McBSP0 data receive register 1 RDXR .set 23H ; McBSP0 data transmit

register 1 MCBSP_TO_CODEC .set MCBSP0_TO_CODEC0
第 26 页 共 30 页
音频信号频谱分析
IMASK
.set (1 << 4) .endif .macro addr,val stm addr,SPSA nop stm val,SPSD nop .endm .macro addr,acc stm #:addr:,SPSA nop ldm SPSD,acc nop nop nop .endm ; Wait for serial port to Rx word SPCR1,A
WR_MCBSP_SUB_REG
RD_MCBSP_SUB_REG
WAITTRX .macro WAITR? RD_MCBSP_SUB_REG and #1<<1, A bc WAITR?, AEQ .endm PROGREG .macro progword
stm #01h,RDXR WAITTRX stm #:progword:,RDXR WAITTRX .endm wait .macro STM #0008h, AR0 ;AR0 points to ACCL RPT *AR0 ;repeat the # of times specified in ACCL NOP ;do nothing in the delay loop .endm
.global RESET,AIC_INIT,WAIT_INT,_CPU_to_codec_ch1,READ_SAMPLES .text .mmregs .def _main
第 27 页 共 30 页
音频信号频谱分析
p0_serialflag .set 060h p0_serialint .set 061h SYSTEM_STACK .text _main ld #0, DP ssbx INTM ssbx SXM st #0, p0_serialint st #2491h, SWWSR ;2 wait except for on-chip data st #0ffe0h, PMST ; MP/MC = 1, IPTR = 1ff st #0f007h,clkmd st #1, p0_serialflag .set 04000h
;************************************************************************* ;* audio_init: ;************************************************************************* _DSS_init rsbx CPL nop ; cpl latency nop ; cpl latency nop ; cpl latency ld #0, DP ssbx INTM ssbx SXM WR_MCBSP_SUB_REG WR_MCBSP_SUB_REG WR_MCBSP_SUB_REG WR_MCBSP_SUB_REG WR_MCBSP_SUB_REG ;; write McBSP registers WR_MCBSP_SUB_REG WR_MCBSP_SUB_REG WR_MCBSP_SUB_REG SPCR1, SPCR2, #SPCR1_VAL #SPCR2_VAL
PCR, #PCR_VAL SPCR1, SPCR2, #0h #0h ; reset McBSP0
RCR1, #RCR1_VAL RCR2, #RCR2_VAL XCR1, #XCR1_VAL
第 28 页 共 30 页
音频信号频谱分析
WR_MCBSP_SUB_REG LD #100 ,A WAIT
XCR2, #XCR2_VAL
;; set interrupts to come from serial ports not DMA ;; by clearing bits 6 and 7 in DMPREC andm #0ff3fh, 54h
;; clear xmit register -- why? stm #0, RDXR ;; now enable McBSP transmit and receive WR_MCBSP_SUB_REG SPCR1,#SPCR1_VAL | 1 WR_MCBSP_SUB_REG SPCR2,#SPCR2_VAL | 1 LD #100 ,A WAIT _AIC_INIT STM #0, IMR orm #IMASK, IMR ; orm #08h, IMR stm ; #0ffffh, IFR
;only receive-int is served.
PROGREG 0000010100001000b PROGREG 0000001100000001b ; 876543210 PROGREG 0000010000010000b ; 876543210 ld ld RDRR, A RDRR, A
stlm A,RDXR stlm A,RDXR rsbx INTM nop nop nop _js
第 29 页 共 30 页
; cpl latency ; cpl latency ; cpl latency
音频信号频谱分析
; nop nop nop nop nop b _js
idle 1
_CPU_to_codec_ch1 st #1, p0_serialint LDM STL rete .if __far_mode fret .else ret .endif RDRR, a A, RDXR
;controlling AIC init, not used later
.end
第 30 页 共 30 页

本TXT由“文库宝”下载:/wenkubao

下载文档原格式

  / 10
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。