TLC320AD50C与DSP接口设计
摘 要: DSP(数字信号处理器)具有强大的数字信号处理能力,在其应用系统中,大多由ADC和DAC通道来完成对模拟信号的数字化处理。本文介绍了一种集成ADC和DAC于一体的TLC320AD50C模拟接口电路与TMS320VC5402定点DSP接口电路的硬件设计方法,并结合一个具体的软件实例说明主从模式下软件的实现方法。
关键词:TLC320D50C;DSP;主从模式
引 言
在许多应用系统中,为了应用DSP卓越的数字信号处理能力,我们必须先将模拟信号进行数字化(A/D转换),再对采样数据进行相应的算法处理,最后经过数字信号模拟化(D/A转换)后输出。在这些DSP应用系统中的关键问题是怎样十分容易和高效地实现这些转换,因此必然涉及到接口电路的设计。本文介绍一种单片内集成了ADC通道和DAC通道的模拟接口电路TLC320AD50C(以下简称AD50)与TMS320VC5402缓冲串口的接口的设计实现方法,然后,基于这种接口电路的硬件设计,通过软件编程实现语音信号的采集与回放。
1 芯片简介
TMS320VC5402是TI公司生产的从属于TMS320C54x系列的一个工作灵活、高速、具有较高性价比、低功耗的16位定点通用DSP芯片。其主要特点包括:采用改进的哈佛结构,1条程序总线(PB),3条数据总线(CB、DB、EB)和4条地址总线(PAB,CAB,DAB,EAB),带有专用硬件逻辑CPU,片内存储器,片内外围专用的指令集,专用的汇编语言工具等。TMS320VC5402含4K字节的片内ROM和16K字节的双存取RAM,1个HPI(Host Port Interface)接口,2个多通道缓冲单口MCBSP(Multi-Channel Buffered Serial Port),单周期指令执行时间10ns,双电源(1.8V和3.3V)供电,带有符合IEEE1149.1标准的JTAG边界扫描仿真逻辑。
AD50是TI公司生产的一个16位、音频范围(采样频率为2K~22.05KHZ)、内含抗混叠滤波器和重构滤波器的模拟接口芯片,它有一个能与许多DSP芯片相连的同步串行通信接口。AD50C片内还包括一个定时器(调整采样率和帧同步延时)和控制器(调整编程放大增益,锁相环PLL,主从模式)。AD50有28脚的塑料SOP封装(带DW后缀)和48脚的塑料扁平封装(带PT后缀),体积较小,适应于便携设备。AD50的工作温度范围是0~70℃,单一5V电源供电或5V和3.3V联合供电,工作时的最大功耗为120 mW。
2 硬件设计
2.1 AD50的内部结构简图
图1最上面第一通道为模拟信号输入监控通道,第二通道为模拟信号转化为数字信号(A/D)通道,第三通道为数字信号转化为模拟信号(D/A)通道,最下面一路是AD50的工作频率和采样频率控制通道。本文所述的输入时钟(MCLK)为8.192MHz,A/D与D/A的采样频率为MCLK/(128*N)Hz(N为AD50C的第4个寄存器4~6位所设)。
javascript:window.open(this.src);" style="cursor:pointer;"/>
2.2 AD50与DSP的引脚连接方式
javascript:window.open(this.src);" style="cursor:pointer;"/>
AD50与TMS320VC5402是以SPI方式连接的。AD50工作在主机模式(M/S=1),提供SCLK(数据移位时钟)和FS(帧同步脉冲)。TMS320VC5402工作于SPI方式的从机模式,BCLKX1和BFSX1为输入引脚,在接数据和发数据时都是利用外界时钟和移位脉冲。
3 软件设计
3.1 软件编制过程
一旦完成了正确的硬件连接,接下来就可以进行软件编程调试了。要完成的工作包括:
(1)TMS320VC5402串口的初始化。首先将DSP串口1复位,再对串口1的16个寄存器进行编程,使DSP串口工作在以下状态:以SPI模式运行,每帧一段,每段一个字,每字16位,采样率发生器由DSP内部产生,帧同步脉冲低电平有效,并且帧同步信号和移位时钟信号由外部产生。DSP给AD50C编程用查询方式,接收A/D转换的D信号和发送D/A转换的D信号用DMA方式。
(2)AD50初始化。该初始化操作过程包括通过TMS320VC5402的同步串口发送两串16位数字信息到AD50。第一串为0000 0000 0000 0001B,最低有效位(bits0)说明下一个要传输的数据字属于二次通信(关于一次通信和二次通信的内容请参阅参考文献[3])。第二个数据值用来对AD50的4个数据寄存器的某一个进行配置。Bits15~11位为0,Bits10~8位为所选寄存器地址值,Bits7~0位为所选中寄存器的编程值。4个用户可编程寄存器的描述如下:R1中包含模拟输入通道选择,硬件 / 软件编程方式选择;R2进行单机 / 从机工作和电话模式(电话模式内容请参阅参考文献[3])选择;R3控制带从机个数选择;R4用来设置模拟信号可编程放大增益和A/D、D/A转换频率。其它两个寄存器R5、R6是厂家留着测试用的,用户不可以对其编程。我们在以下例程中对4个可编程寄存器编程,使AD50C工作在以下状态:选择INP/INM为工作模拟输入,15+1位ADC和15+1位DAC模式,不带从机,采样频率为10.67KHz,模拟信号输入和输出放大增益均为0dB。
(3)用户代码的编写。完成音频信号采集与回放代码的编制。本设计给AD50编程用查询方式,接收A/D转换的D信号和发送D/A转换的D信号用DMA方式。
3.2 软件具体实现
(1) 程序流程图:
javascript:window.open(this.src);" style="cursor:pointer;"/>
(2)部分关键代码:
Ⅰ, TMS320VC5402中断及串口初始化
……
stm #0002h, 48h
stm #0040h, 49h ; 设置DSP串口1工作在每帧一个字,每个字16位模式
……
stm #0006h, 48h
stm #0100h, 49h ; 设置CLKGDV=0,使串口1工作在最大频率
stm #0007h, 48h
stm #0a000h, 49h ;设置CLKSM=1,采样率发生器时钟由DSP内部产生
stm #000eh,48h
stm #0008h,49h ;设置FSXP=1,使帧同步脉冲低电平有效
stm #0080h,imr ;DMA一通道中断使能
rsbx intm ;开放所有可屏蔽中断
……
Ⅱ, AD50初始化
ld #0001h,a ;D0=1,请求第二次交流
stlm a,43h ;向TLC320AD50C写数据
aa: stm #0001h,48h
ldm 49h,a
and #0002h,a
bc aa,aeq ;数据是否被TLC320AD50C接收
ld #0180h,a ;给TLC320AD50C的寄存器1编程,使其复位
stlm a,43h
bb:stm #0001h,48h
ldm 49h,a
and #0002h,a
bc bb,aeq ;编程数据是否被TLC320AD50C接收
……
stm #0100h,a ;TLC320AD50C脱离复位并且设置寄存器1,使INP,INM为输入
……
stm #0200h,a ;设置TLC320AD50C寄存器2,使电话模式无效
……
stm #0460h,a ;设置TLC320AD50C寄存器4,使采样频率为10.667KHz
……
stm #0300h,a ;设置TLC320AD50C寄存器3,使带0个从机
……
Ⅲ, DMA1通道初始化
stm #05h, 55h ;选择DMA1通道
stm #0041h,56h ;设置串口1接收端为DMA事件的源地址
stm #027fh,56h ;设置DMA事件的目的地址
stm #3000h,56h ;设置直接传送数据个数
stm #5000h,56h ;设置串口1同步模式,一帧接收一个字
stm #404dh,56h ;设置DMA为多帧模式,源地址不调整目的地址按57h的值调整
stm #20h, 55h
stm #0001h,57h ;设置目的地址为自动加1调整
stm #0282h,54h ;设置通道1为高优先级并使能通道1
……
4 实验结果
下面图中图4和图6分别为TLC320AD50C与TMS320VC5402组成的数据采集系统对同一个实验对象的语音信号“您好”和“啊”的采集结果,图5和图7分别为WINDOWS 98附件中的录音机所录下的语音信号“您好”和“啊”用MATLAB仿真后的图形结果。
javascript:window.open(this.src);" style="cursor:pointer;"/>
下面图8为AD50采样信号“啊”音的FFT Magnitude, 图9为WINDOWS 98附件中的录音机录制信号“啊”音的FFT Magnitude。
javascript:window.open(this.src);" style="cursor:pointer;"/>
5 结束语
本文以TMS320VC5402与TLC320AD50C为例,详细介绍了AD50与DSP串口通信的硬件接口及软件实现。从实验结果我们可以发现TLC320AD50C可以对语音信号进行无失真采样,完全能满足后续语音信号处理的要求,并且与DSP接口简单,高性能,低功耗,已成为当前语音处理的主流产品。广泛适用于音频处理,语音增强,语音安全,回声抵消,VoIP等电话或语音应用中。