基于DSP芯片C5402和音频接口芯片AD50实现实时语音处理系统的设计

网友投稿 292 2022-11-12

基于DSP芯片C5402和音频接口芯片AD50实现实时语音处理系统的设计

1.C5402及其多通道缓冲串口

McBSP在结构上可以分为一个数据通道和一个控制通道。如图1所示:

图1 McBSP的结构

2. AD50的一般说明

AD50内部有7个数据和控制寄存器,用于编程控制它们的工作状态。

寄存器0:空操作寄存器。

寄存器1: 软件复位

软件掉电

选择16位或15位工作方式

硬件或软件二次通信请求方式的选择

寄存器2:使能ALTDATA输入端

为ADC选择16/15位方式

寄存器3:选择FS与FSD之间延迟SCLK的个数

告诉主机有几个从机被联上

选择N来设置采样频率,fs=MCLK/(128*N)或MCLK/(512*N)

在MCLK输入端使能外部时钟输入并旁通内部的PLL

寄存器5,6:保留

AD50与C5402之间的数据传送采用串行方式,包括两种传输模式:16位和15+1位传输模式。15+1位模式时,其中的D0位表示二次通信。它们各自的时序如下:

注:A,16位或15位工作方式是通过控制寄存器2来编程实现的。

B,M/S用来表明15位的数据是来自主机还是从机。

C,最高位MSB(D15)在SCLK第一个周期的下降沿稳定,最低位(D0,M/S)在SCLK第16个周期的下降沿稳定。

图 2 仅有首次通信时的ADC通道时序

注:A,二次通信时的M/S位(DS15)用于表明在设置了读位后寄存器数据(地址和内容)是来自主机还是从机。在寄存器读期间,DS7-DS0位是指定寄存器的内容,在寄存器写期间,DS7-DS0为0。

图3 有首次通信和二次通信的ADC通道时序

AD50的数据传输模式和采样速率都可以通过DSP对其控制寄存器的编程来实现,因此,在许多场合下,AD50都作为DSP的AIC来实现音频处理。

3.CCS和DSK

CCS(Code Composer Studio)为TI公司的DSP集成开发环境。它提供了环境配置、源文件编辑、程序调试、跟踪和分析等工具,可以帮助用户在一个软件环境下完成编辑、编译链接、调试和数据分析等工作。与TI提供的早期软件开发工具相比,利用CCS能够加快软件开发进程,提高工作效率。

4.软件设计

本文所设计的程序要完成的功能是通过麦克风接口进行语音信号的采集并实时地通过扬声器接口回放出来。

4.1 通信格式的研究

AD50C有两种通信格式:首次通信和二次通信。

首次通信格式的16位都用来传输数据。ADC的数据长度由寄存器2的D4位决定。启动和复位后默认值为15+1位模式,最后一位用于请求二次通信(D0:0表示无操作,1表示请求二次通信)。当然,二次通信也可以由硬件的FC引脚产生,本文不作讨论。下图为首次通信的数据格式:

图4 首次通信的数据格式

二次通信则用来初始化和设置AD50C的内部寄存器的值。二次通信时DSP可通过向DIN写入寄存器的值,也可以从DIN读出寄存器的值。二次通信的数据格式如下:

图4 二次通信的数据格式

由图可以看出,DS13位控制读写,DS12~8为寄存器的地址,DS7~0为寄存器的值。系统复位后,必须通过DSP的DX口向AD50C的DIN写数据以初始化各控制寄存器,如AD转换只用到寄存器1,寄存器2和寄存器4。

4.2 程序流程

图5示出了CCS配置的主程序源文件(.c或.asm)的设计流程

图5 主程序设计流程

4.3 程序设计

从上面的程序流程中,我们可以看到,要完成预定的功能,首先要初始化DSP的串行口和AIC,然后的工作就是开辟缓存区以便将输入的数据存储起来等待进一步处理如滤波、DA转换等。限于篇幅,下面只列出了本文要实现音频回放功能的几个关键程序段。

一.主程序:

在程序中要定义诸多的变量以及所需要包含的头文件和库文件在此略。

5.CCS运行结果

图6. CCS运行窗口

事实上,在程序调试过程中经常会遇到这样或那样的问题,一般的方法是采用单步执行的方式来调试。而且,由于DSP本身的特点,从一开始就需要认识到开发过程的复杂性。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java中四种引用详解
下一篇:互联网共鸣之声:2018年或成为云计算转折之年
相关文章

 发表评论

暂时没有评论,来抢沙发吧~