《DSP处理器原理与应用》课件第8章.ppt

上传人(卖家):momomo 文档编号:8223297 上传时间:2025-01-13 格式:PPT 页数:134 大小:1.04MB
下载 相关 举报
《DSP处理器原理与应用》课件第8章.ppt_第1页
第1页 / 共134页
《DSP处理器原理与应用》课件第8章.ppt_第2页
第2页 / 共134页
《DSP处理器原理与应用》课件第8章.ppt_第3页
第3页 / 共134页
《DSP处理器原理与应用》课件第8章.ppt_第4页
第4页 / 共134页
《DSP处理器原理与应用》课件第8章.ppt_第5页
第5页 / 共134页
点击查看更多>>
资源描述

1、第8章 利用DSP实现语音信号采集与分析 8.1 引言引言 8.2 语音语音codec芯片芯片TLV320AIC23的设计和控制原理的设计和控制原理 8.3 I2C模块模块 8.4 本章小结本章小结习题与思考题习题与思考题近二十年来,全球半导体产业的飞速发展带动相关的软件、硬件设计达到新的水平,使得很多比较复杂的数字信号处理算法可以实时实现并且得到广泛应用。突出的代表就是数字信号处理器(DSP)与语音信号压缩编码算法相结合,并且在日常通信系统中得到广泛应用,例如数字移动电话、IP电话等。网络通信的发展、微处理器和信号处理专用芯片的发展,为语音处理技术的应用提供了更加广阔的平台。所有这些因素都促

2、进了对更加有效、可靠、高质量的语音编码系统的需要,从而促进了语音编码技术的持续发展。8.1 引引 言言在数字信号处理的诸多应用当中,音频信号处理是相当重要的一个环节。本章重点介绍如何利用TMS320VC5509 DSP以及相关codec芯片进行语音信号的处理。TLV320AIC23是一个高性能的多媒体数字语音编解码器,它的内部ADC和DAC转换模块带有完整的数字滤波器(digital interpolation filters)。数据传输宽度可以是16位、20位、24位和32位,采样频率范围为896 kHz。在ADC采集达到96 kHz时噪音为90 dBA,能够高保真的保存音频信号。在DAC转

3、换达到96 kHz时噪音为100 dBA,能够高品质地数字回放音频,在回放时仅仅减少23 mW。8.2 语音语音codec芯片芯片TLV320AIC23的设计和控制原理的设计和控制原理8.2.1 工作原理工作原理TLV320AIC23内部有11个可编程控制寄存器,通过不同设置,可以改变芯片的工作状态,如采样率、左右声道音量等。这些寄存器都是通过AIC23的控制接口来编程的。控制接口又分为SPI(三线)和I2C(两线)接口,外部引脚MODE置1/0决定采用哪种接口方式。SPI接口模式是三线串行传输方式。SDIN为输入串行数据,SCLK为串行时钟,控制字共16位,由高位开始传输,在时钟的上升沿锁存

4、每一位数据,当16位控制数据(一个控制字)传输完成后,产生一个上升沿将控制字锁存到AIC23的内部。SPI模式时序如图8-1所示。图8-1 SPI模式时序图I2C是两线串行传输方式。SDIN为输入串行数据,SCLK为串行时钟,具体应用可参考手册。当SCLK为高电平时,SDIN产生下降沿时开始数据传输。传输开始后,首先传输的是接收数据设备的地址。R/W决定传输的方向,TLV320AIC23为只能写入控制字的器件,因此R/W仅在为0时有效。TLV320AIC23只能工作在从设备模式,其地址由CS管脚的状态确定,当CS为0时,地址为0011010;当CS为1时,地址为0011011,缺省值为0。I2

5、C总线中的器件当接收到总线上发送的地址与自己地址相同时,通过在第9个时钟周期内将SDIN的电平拉低来确认数据的传输。在传输8位数据后,重复上述控制。当SCLK为高电平,且SDIN出现上升沿时,传输停止。所传输的16位控制字分为两个部分:高7位b15b9是寄存器地址,低9位b8b0是写入寄存器中的控制数据。其时序如图8-2所示。具体I2C总线的工作原理以及TMS320VC5509中I2C模块的应用在本章的后面部分加以详细介绍。图8-2 I2C模式时序图TLV320AIC23与TMS320VC5509的连接示意图如图8-3所示,从图中可以看出MODE接0,确定为I2C控制方式,CS为0,确定地址为

6、0011010,SCLK、SDIN分别与DSP的I2C接口SCL、SDA相连接。DSP的McBSP0作为数据的发送和接收端口。图8-3 TMS320VC5509 与TLV320AIC23 的连接示意图8.2.2 TLV320AIC23内部寄存器内部寄存器AIC23内部共有11个可编程寄存器,地址为000 0000000 1001和一个复位寄存器000 1111。通过这些寄存器,我们可以设置输入增益、耳机输出增益以及采样时钟和采样频率等。表8-1详细说明了在对TLV320AIC23进行编程时,TLV320AIC23内部寄存器的含义。表8-1 TLV320AIC23的内部寄存器含义表8-2表8-1

7、2为表8-1中所示的所有寄存器的具体内容。表表8-2 左声道输入控制左声道输入控制LRS:左右声道同时更新。0=禁止;1=激活。LIM:左声道输入衰减。0=Normal;1=静音。LIV4:0:左声道输入控制衰减(10111=0 dB 缺省)。最大11111=+12 dB;最小00000=-34.5 dB表表8-3 右声道输入控制右声道输入控制RLS:左右声道同时更新。0=禁止;1=激活。RIM:右声道输入衰减。0=Normal;1=静音。RIV 4:0:右声道输入控制衰减(10111=0 dB 缺省)。最大11111=+12 dB;最小00000=-34.5 dB。X:保留表表8-4 左耳机

8、通道控制左耳机通道控制LRS:左右耳机通道控制。0=禁止;1=激活。LZC:0 点检查。0=Off;1=On。LHV6:0:左耳机通道控制音量衰减(1111001=0 dB默认)。最大1111111=+6 dB;最小0110000=73 dB(静音)。表8-5 右耳机通道控制RLS:左右耳机通道控制。0=禁止;1=激活。RZC:0点检查。0=Off;1=On。RHV6:0:右耳机通道控制音量衰减(1111001=0 dB默认)。最大1111111=+6 dB;最小0110000=-73 dB(静音)。表表8-6 模拟音频通道控制模拟音频通道控制STA1:0:侧音衰减。00=-6 dB;01=-

9、9 dB;10=-12 dB;11=-15 dB。STE:侧音激活。0=禁止;1=激活。DAC:DAC选择。0=DAC关闭;1=DAC选择。BYP:旁路。0=禁止;1=激活。INSEL:模拟输入选择。0=线路;1=麦克风。MICM:麦克风衰减。0=普通;1=衰减。MICB:麦克风增益。0=0 dB;1=20 dB。DACM:DAC软件衰减。0=禁止;1=激活。DEEMP1:0:消除高频成分控制。00=禁止;01=32 kHz;10=44.1 kHz;11=48 kHz。ADCHP:ADC滤波器。0=禁止;1=激活。X:保留表表8-7 数字音频通道控制数字音频通道控制表表8-8 启启 动动 控控

10、 制制OFF:设备电源。0=On;1=OFF。CLK:时钟。0=On;1=OFF。OSC:振荡器。0=On;1=OFF。OUT:输出。0=On;1=OFF。DAC:DAC。0=On;1=OFF。ADC:ADC。0=On;1=OFF。MIC:麦克风输入。0=On;1=OFF。LINE:Line输入。0=On;1=OFF。表表8-9 数字音频格式数字音频格式MS:主从选择。0=从模式;1=主模式。LRSWAP:DAC左/右通道交换。0=禁止;1=激活。LRP:DAC左/右通道设定。0=右通道在LRCIN高电平;1=右通道在LRCIN低电平。IWL1:0:输入长度。00=16 bit;01=20 b

11、it;10=24 bit;11=32 bit。FOR1:0:数据初始化。11=DSP初始化,帧同步来自于两个字;10=I2S初始化;01=MSB优先左声道排列;00=MSB优先右声道排列。X:保留表表8-10 样本速度控制样本速度控制CLKIN:时钟输入分频。0=MCLK;1=MCLK/2。CLKOUT:时钟输出分频。0=MCLK;1=MCLK/2。SR3:0:采样速率控制。BOSR:基础速度比率。USB模式:0=250;1=272。Normal 模式:0=256;1=384。USB/Normal:时钟模式选择。0=Normal;1=USB。X:保留 ACT:激活控制。0=停止;1=激活。X:

12、保留表表8-11 数字界面激活数字界面激活 RES:写000000000到这个寄存器引发初始化。关于TLV320AIC23的更详细信息,请参考相关数据手册。表表8-12 初始化寄存器初始化寄存器8.3.1 I2C总线特点与工作原理总线特点与工作原理集成电路芯片间总线I2C(Inter-Integrated Circuit)是Philips公司提出的一种允许芯片间在简单的二线总线上工作的串行接口和软件协议,主要用于智能集成电路和器件间的数据通信。8.3 I2C 模模 块块I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚

13、的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10 kb/s的最大传输速率支持40个组件。I2C总线的另一个优点是,它支持多主控,其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送时,最高传送速率为100 kb/s。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址。在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(

14、或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。应答信号:接收数据的IC在接收到8 bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已

15、收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况做出是否继续传递信号的判断,若未收到应答信号,则判断为受控单元出现故障。I2C规程运用主/从双向通信。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。8.3.2 TMS320VC5509 DSP的的I2C

16、模块功能模块功能TMS320VC5509 DSP的内部集成了I2C模块。其为DSP提供与内部IC总线(I2C总线)V2.1兼容的接口。和这个2线的串口总线连接的外部设备,可以通过该I2C模块传输18 bit的数据(I2C模块传输的数据单元可以小于8 bit。但为了方便起见,一般将数据的单元称为一个数据byte)。I2C模块支持所有与I2C兼容的主从设备。图8-4所示是多个I2C模块双向传输的例子。图8-4 多个I2C模块双向传输每一个连接到I2C总线上的设备,包括C55X DSP,都用一个惟一的地址。每个设备是发送器还是接收器取决于设备的功能。连接到I2C总线上的设备,在传输数据时,也可以看作

17、是主设备或从设备。主设备在总线上初始化数据传输,且产生传输所需要的时钟信号。在传输过程中,主设备所寻址的设备就是从设备。I2C模块支持多个主设备模式,连接到同一个I2C总线上的多个设备都可以控制该I2C总线。用于数据通信时I2C模块有一个串行数据引脚(SDA)和一个串行时钟引脚(SCL)。这两个引脚在C55X及连接到I2C总线的其他设备之间传递信息。这两个引脚都是双向的。它们都需要用上拉电阻连接到高电平。当总线空闲时,这两个引脚都为高。这两个引脚的驱动器配置为漏极开路来实现线与功能。I2C模块包括以下基本模块:一个串行接口:一个数据引脚(SDA)和一个时钟引脚(SCL)。数据寄存器,暂时存放S

18、DA引脚和CPU或DMA控制器之间传输的数据。控制和状态寄存器。一个外设总线接口,使能CPU和DMA控制器,访问I2C模块寄存器。一个时钟同步器,用来同步I2C的输入时钟(来自DSP时钟发生器)和SCL引脚上的时钟,还要同步不同频率主设备的数据传输。一个预分频器,用来对I2C模块的输入时钟分频。SDA和SCL引脚上都有一个噪声滤波器。一个仲裁器,当I2C模块是主模块时,仲裁该模块与其他的主模块。中断产生逻辑,可向CPU发出中断。DMA事件产生逻辑,可以使DMA控制器与I2C模块的数据接收和发送同步。图8-5是I2C模块框图。I2CDXR、I2CDRR、I2CXSR、I2CRSR分别是用于发送和

19、接收的4个寄存器。CPU或DMA控制器把要发送的数据写到I2CDXR,从I2CDRR中读接收到的数据。当I2C配置成发送器,写到I2CDXR中的数据,就复制到I2CXSR,从SDA引脚一次l位串行移出。当I2C配置成接收器,接收到的数据先移到I2CRSR,然后复制到I2CDRR。图8-5 I2C模块框图8.3.3 复位和关闭复位和关闭I2C模块模块可以通过以下两种方式复位/关闭I2C模块:(1)将I2C模式寄存器(I2CMDR)中的I2C复位bit(IRS)置0。I2CSTR中的所有状态bits都强制恢复到默认值,I2C保持关闭状态直到IRS变为1。SDA和SDL引脚处于高阻状态。(2)将RE

20、SET引脚拉低,使DSP复位。整个DSP保持复位态,直到RESET引脚拉高。复位释放后,所有的I2C寄存器都恢复到默认值。将IRS bit强制为0,复位I2C模块。I2C模块将处于复位状态,直到写1给IRS。配置或重新配置I2C模块时,IRS必须为0。使IRS为0可以节省功率和清除错误条件。8.3.4 I2C模块寄存器模块寄存器表8-13列出了I2C模块的寄存器。所有寄存器,除了接收和发送移位寄存器(I2CRSR和I2CXSR)之外,都可以通过I/O空间的16 bit地址被CPU访问。表表8-13 I2C模块寄存器模块寄存器下面对本章中使用到的寄存器加以介绍。1.I2C模式寄存器模式寄存器(I

21、2CMDR)I2CMDR是一个16 bit的I/O空间映射寄存器,它包括I2C模块的控制bits。其示意图如图8-6所示。I2CMDR寄存器的每一位的功能在表8-14里作了说明。图8-6 I2C模式寄存器(I2CMDR)表表8-14 I2C模式寄存器模式寄存器续表 续表续表2I2C预分频寄存器预分频寄存器(I2CPSC)I2C预分频寄存器I2CPSC是一个16 bit I/O映射寄存器,用来对I2C的输入时钟分频,获得期望的模块时钟,如图8-7 和表8-15所示。图8-7 I2C预分频寄存器(I2CPSC)IPSC必须在I2C模块复位(I2CMDR中IRS=0)时进行初始化。预分频的频率只有在

22、IRS变为1时才有效。IRS=1时,改变IPSC的值无效。表表8-15 I2C预分频寄存器预分频寄存器(I2CPSC)各域的说明各域的说明图图8-8 时钟分频值时钟分频值(ICCL和和ICCH)的作用的作用3.I2C时钟分频寄存器时钟分频寄存器(I2CCLKL和和I2CCLKH)当I2C模块是主设备时,需要对模块时钟进行分频,获得SCL引脚上的主时钟。如图8-8所示,主时钟的波形取决于两个分频值:(1)I2CCLKL的ICCL(如表8-16所示)。对于每个主时钟周期,ICCL决定信号电平为低的持续时间。(2)I2CCLKH的ICCH(如表8-17所示)。对于每个主时钟周期,ICCH决定信号电平

23、为高的持续时间。表表8-16 I2C时钟低电平分频寄存器时钟低电平分频寄存器(I2CCLKL)的说明的说明表表8-17 I2C时钟高电平分频寄存器时钟高电平分频寄存器(I2CCLKH)的说明的说明主时钟周期(Tmst)是模块时钟周期(Tmod)的整数倍:(8-1)其中,d取决于分频值IPSC,如表8-18所示。输入时钟频率CI)ICCH()ICCL)(1IPSC()ICCH()ICCL(2mstmodmstddTddTT表表8-18 延时延时d与与IPSC之间的关系之间的关系4.I2C自身地址寄存器自身地址寄存器(I2COAR)I2C自身地址寄存器(I2COAR)是一个16 bit映射到DSP

24、的I/O空间的寄存器。图8-9是I2COAR的示意图,表8-19对其作了说明。I2C模块用这个寄存器来指定自身的从设备地址,用来与I2C总线上的其他从设备区分开。如果选择7 bit寻址模式(I2CMDR中XA=0),则只用到I2CSAR中的bit 60,对bit 97写0。图8-9 I2C自身地址寄存器(I2COAR)表表8-19 I2C自身地址寄存器自身地址寄存器(I2COAR)的说明的说明5.I2C数据接收寄存器数据接收寄存器(I2CDRR)I2CDRR(如图8-10和表8-20所示)是一个16 bit I/O映射的寄存器,由CPU或DMA控制器用来读接收的数据。I2C模块可以接收1到8

25、bit的数据byte,这由I2CMDR中的BC bit决定。每次从SDA引脚上移进一个bit到接收移位寄存器(I2CRSR)。接收完一个数据byte,I2C模块就将12CRSR中的数据复制到I2CDRR中。如果I2CDRR中的数据byte少于8 bit,则只有一些bit是有效的,其他bit都没有定义。例如,如果BC=011(数据长度为3bit),接收的数据存放在I2CDRR(20)中,I2CDRR(73)的值就没有定义。CPU和DMA控制器不能访问I2CRSR。图8-10 I2C数据接收寄存器(I2CDRR)表8-20 I2C数据接收寄存器(I2CDRR)的说明6.I2C数据发送寄存器数据发送

26、寄存器(I2CDXR)CPU或DMA控制器将要发送的数据写入I2CDXR(如图8-11和表8-21所示)。这个16 bit的I/O映射寄存器接收1 bit到8 bit的数据。在往I2CDXR写之前,通过正确设置I2CMDR中的BC bit,来确定一个数据byte里有多少bits。写一个少于8 bit的数据byte时,I2CDXR中的值要右对齐。一个byte写入I2CDXR后,I2C模块将这个数据byte复制发送移位寄存器(I2CXSR),然后每次一个bit从SDA引脚移出。CPU和DMA控制器不能访问I2CXSR。图8-11 I2C数据发送寄存器(I2CDXR)表表8-21 I2C数据发送寄存

27、器数据发送寄存器(I2CDXR)的说明的说明一、任务目标一、任务目标(1)了解语音codec芯片TLV320AIC23的设计和程序控制原理。(2)了解数字回声产生原理、编程及其参数选择、控制。(3)熟悉VC5509DSP扩展存储器的编程使用方法。任务任务19语音采集和放送语音采集和放送二、所需设备二、所需设备计算机,ICETEK-VC5509-EDU 实验箱(或ICETEK 仿真器,ICETEK-VC5509-A 系统板,相关连线及电源),耳机,麦克风。三、相关原理三、相关原理1 1TLV320AIC23 TLV320AIC23 芯片性能指标及控制方法芯片性能指标及控制方法(1)初始化配置:D

28、SP通过I2C总线将配置命令发送到AIC23,配置完成后,AIC23开始工作。(2)语音信号的输入:AIC23通过其中的A/D转换采集输入的语音信号,每采集完一个信号后,将数据发送到DSP的McBSP接口上,DSP可以读取到语音数据,每个数据为16位无符号整数,左右通道各有一个数值。(3)语音信号的输出:DSP可以将语音数据通过McBSP接口发送给AIC23,AIC23的D/A器件将他们变成模拟信号输出。2 2数字回声原理数字回声原理在实际生活中,当声源遇到物体时,会发生反射,反射的声波和声源声波一起传输,听者会发现反射声波部分比声源声波慢一些,类似人们面对山体高声呼喊后可以在过一会儿听到回声

29、的现象。声音遇到较远的物体产生的反射会比遇到较近的物体的反射波晚些到达声源位置,所以回声和原声的延迟随反射物体的距离大小改变。同时,反射声音的物体对声波的反射能力,决定了听到的回声的强弱和质量。另外,生活中的回声的成分比较复杂,有反射、漫反射、折射,还有回声的多次反、折射效果。当已知一个数字音源后,可以利用计算机的处理能力,用数字的方式通过计算模拟回声效应。简单地讲,可以在原声音流中叠加延迟一段时间后的声流,实现回声效果。当然通过复杂运算,可以计算各种效应的混响效果。如此产生的回声,我们称之为数字回声。3.3.程序说明程序说明该项目的程序流程图如图8-12所示。图8-12 语音的采集与放送程序

30、流程图4.4.程序清单程序清单(1)项目源程序audio.c的流程图如图8-12左侧所示。其程序的主要部分如下:#include 5509.h#include util.hvoid wait(unsigned int cycles);void EnableAPLL();void main()SDRAM_init();EnableAPLL();PLL_Init(40);AIC23_Init();for(;)AIC23_Mixer();(2)整个项目的流程如图8-12右侧所示。AIC23_Mixer函数位于aic23.c程序中,aic23.c程序如下所示:#include 5509.h#inclu

31、de util.h#include extaddr.h#include math.h/AIC23 控制寄存器地址(注意:AIC23控制寄存器地址为7位,而寄存器的内容为9位,因此用8位来表示其地址时,相当于将其左移一位,具体寄存器内容见 8.2.2小节)#define AIC23_LT_LINE_CTL 0 x00 /0#define AIC23_RT_LINE_CTL 0 x02 /1#define AIC23_LT_HP_CTL 0 x04 /2#define AIC23_RT_HP_CTL 0 x06 /3#define AIC23_ANALOG_AUDIO_CTL 0 x08 /4#d

32、efine AIC23_DIGITAL_AUDIO_CTL 0 x0A /5#define AIC23_POWER_DOWN_CTL 0 x0C /6#define AIC23_DIGITAL_IF_FORMAT 0 x0E /7#define AIC23_SAMPLE_RATE_CTL 0 x10 /8#define AIC23_DIG_IF_ACTIVATE 0 x12 /9#define AIC23_RESET_REG 0 x1E /往该寄存器写入0触发AIC23复位/AIC23控制寄存器设置#define lt_ch_vol_ctrl 0 x0017 /*0*/#define rt_c

33、h_vol_ctrl 0 x0017 /*1*/#define lt_ch_headph_ctrl 0 x0079 /*2*/#define rt_ch_headph_ctrl 0 x0079 /*3*/#define alog_au_path_ctrl 0 x0000 /*4*/#define digi_au_path_ctrl 0 x0000 /*5*/#define pow_mgt_ctrl_ctrl 0 x0002 /*6*/#define digi_au_intf_ctrl 0 x000D /*7*/#define au_FS_TIM_ctrl 0 x0000 /*8 MCLK=12

34、 MHz,Sample Rate setting*/#define digi_intf1_ctrl 0 x0001 /*9*/#define digi_intf2_ctrl 0 x00FF /*10*/#define DIGIF_FMT_MS 0 x40#define DIGIF_FMT_LRSWAP 0 x20#define DIGIF_FMT_LRP 0 x10#define DIGIF_FMT_IWL 0 x0c#define DIGIF_FMT_FOR 0 x03#define DIGIF_FMT_IWL_16 0 x00#define DIGIF_FMT_IWL_20 0 x04#d

35、efine DIGIF_FMT_IWL_24 0 x08#define DIGIF_FMT_IWL_32 0 xc0#define DIGIF_FMT_FOR_MSBRIGHT 0 x00#define DIGIF_FMT_FOR_MSLEFT 0 x01#define DIGIF_FMT_FOR_I2S 0 x02#define DIGIF_FMT_FOR_DSP 0 x03#define POWER_DEV 0 x80#define POWER_CLK 0 x40#define POWER_OSC 0 x20#define POWER_OUT 0 x10#define POWER_DAC

36、0 x08#define POWER_ADC 0 x04#define POWER_MIC 0 x02#define POWER_LINE 0 x01#define SRC_CLKOUT 0 x80#define SRC_CLKIN 0 x40#define SRC_SR 0 x3c#define SRC_BOSR 0 x02#define SRC_MO 0 x01#define SRC_SR_44 0 x20#define SRC_SR_32 0 x18#define ANAPCTL_STA 0 xc0#define ANAPCTL_STE 0 x20#define ANAPCTL_DAC

37、0 x10#define ANAPCTL_BYP 0 x08#define ANAPCTL_INSEL 0 x04#define ANAPCTL_MICM 0 x02#define ANAPCTL_MICB 0 x01#define DIGPCTL_DACM 0 x08#define DIGPCTL_DEEMP 0 x06#define DIGPCTL_ADCHP 0 x01#define DIGPCTL_DEEMP_DIS 0 x00#define DIGPCTL_DEEMP_32 0 x02#define DIGPCTL_DEEMP_44 0 x04#define DIGPCRL_DEEM

38、P_48 0 x06#define DIGIFACT_ACT 0 x01#define LT_HP_CTL_LZC 0 x80#define RT_HP_CTL_RZC 0 x80void AIC23_Write(unsigned short regaddr,unsigned short data)unsigned char buf2;buf0=regaddr;buf1=data;I2C_Write(I2C_AIC23,2,buf);/调用I2C_Write函数,该函数位于i2c.c程序中,具体应用/详见TI应用手册Programming the TMS320VC5509 I2C Periph

39、eralvoid McBSP0_InitSlave()PC55XX_MCSP pMcBSP0=(PC55XX_MCSP)C55XX_MSP0_ADDR;/复位McBSP Write(pMcBSP0-spcr1,0);Write(pMcBSP0-spcr2,0);/设置帧参数(32 bit,发送帧与接收帧都为单段,发送接收数据无延时)Write(pMcBSP0-xcr1,XWDLEN1_32);Write(pMcBSP0-xcr2,XPHASE_SINGLE|XDATDLY_0);Write(pMcBSP0-rcr1,RWDLEN1_32);Write(pMcBSP0-rcr2,RPHASE_S

40、INGLE|RDATDLY_0);/发送帧同步信号高电平有效,CLKK上升沿发送数据 Write(pMcBSP0-pcr,PCR_CLKXP);/Bring transmitter and receiver out of reset SetMask(pMcBSP0-spcr2,SPCR2_XRST);SetMask(pMcBSP0-spcr1,SPCR1_RRST);void AIC23_Init()I2C_Init();/复位AIC23以及打开设备电源 AIC23_Write(AIC23_RESET_REG,0);AIC23_Write(AIC23_POWER_DOWN_CTL,0);AIC

41、23_Write(AIC23_ANALOG_AUDIO_CTL,ANAPCTL_DAC|ANAPCTL_INSEL);AIC23_Write(AIC23_DIGITAL_AUDIO_CTL,0);/打开左右声道输入音量控制 AIC23_Write(AIC23_LT_LINE_CTL,0 x000);AIC23_Write(AIC23_RT_LINE_CTL,0 x000);/设置AIC23为主模式,44.1 kHz立体声,16 bit采样 AIC23_Write(AIC23_DIGITAL_IF_FORMAT,DIGIF_FMT_MS|DIGIF_FMT_IWL_16|DIGIF_FMT_FO

42、R_DSP);AIC23_Write(AIC23_SAMPLE_RATE_CTL,SRC_SR_44|SRC_BOSR|SRC_MO);/打开话筒音量和数字接口 AIC23_Write(AIC23_LT_HP_CTL,0 x07f);/0 x79 for speakers AIC23_Write(AIC23_RT_HP_CTL,0 x07f);AIC23_Write(AIC23_DIG_IF_ACTIVATE,DIGIFACT_ACT);/设置McBSP0为从传输模式 McBSP0_InitSlave();void AIC23_Disable()PC55XX_MCSP pMcBSP0=(PC5

43、5XX_MCSP)C55XX_MSP0_ADDR;I2C_Disable();/复位McBSP Write(pMcBSP0-spcr1,0);Write(pMcBSP0-spcr2,0);#define AUDIOBUFFER 0 x200000FARPTR lpAudio;unsigned int bEcho=0,uDelay=64,uEffect=256;void AIC23_Mixer()PC55XX_MCSP pMcBSP0=(PC55XX_MCSP)C55XX_MSP0_ADDR;int nWork,nWork1;FARPTR lpWork,lpWork1;long int luWo

44、rk,luWork1;float fWork,fWork1;lpWork=lpAudio=AUDIOBUFFER;luWork=0;for(luWork1=0;luWork1ddr2);/读取左右声道的数据 nWork=Read(pMcBSP0-ddr1);/因为耳机输入左右声道相同,所以读两次即可 far_poke(lpWork+,nWork);/保存到缓冲区 if(bEcho)/需要制作数字回声否?uEffect%=1024;/保证输入在01023之间 uDelay%=1024;/保证输入在01023之间 fWork=uEffect/1024.0;luWork1=100;luWork1*=

45、uDelay;luWork1=luWork-luWork1;if(luWork1dxr2,nWork);/送数据到McBSP0 Write(pMcBSP0-dxr1,nWork);/声音输出由AIC23完成 luWork+;/循环使用缓冲区 if(luWork=0 x48000)lpWork=lpAudio;luWork=0;四、任务步骤四、任务步骤(1)准备。连接实验设备。准备音频输入、输出设备。a.将耳机上麦克风插头插到ICETEK-VC5509-A板的J5插座,即“麦克风输入”。b.将耳机上音频输入插头插到ICETEK-VC5509-A板的J7插座,即“耳机输出”。c.调节耳机上音量旋钮

46、到适中位置。设置CCS 2.21在硬件仿真(Emulator)方式下运行。启动CCS 2.21。选择菜单DebugReset CPU。(2)打开工程文件。(3)编译、下载程序。选择菜单DebugGo Main,使程序运行到main函数入口位置。(4)设置观察窗口。打开源程序aic23.c,将变量bEcho、uDelay和uEffect加入观察窗口。(5)运行程序观察结果。按“F5”键运行,注意观察窗口中的bEcho=0,表示数字回声功能没有激活。这时从耳机中能听到麦克风中的输入语音放送。将观察到窗口中bEcho的取值改成非0值。这时可从耳机中听到带数字回声道语音放送。试着分别调整uDelay和

47、uEffect的取值,使他们保持在01023范围内,同时听听耳机中的输出有何变化。(6)退出CCS。五、结果五、结果声音放送可以加入数字回声,数字回声的强弱和与原声的延迟均可在程序中设定和调整。六、问题与思考六、问题与思考修改程序,实现第二重回声。例如:原声音直接放送表示为“A-”,而带数字回声的发送为“Aa-”,那么带第二重回声的为“Aaa-”。第二重回声的音效要比第一重的弱。(提示:可以修改AIC23_Mixer函数中的相关部分。)一、任务目标一、任务目标(1)熟悉ICETEK-VC5509-A板上语音codec芯片TLV320AIC23的设计和程序控制原理。(2)了解语音编码G.711的

48、特点、工作原理及其编程。(3)了解PCM编码过程及应用,学习A律压缩解压缩方法的运算过程和程序编制实现。(4)通过实验体会语音编解码过程及应用。任务任务20 实现语音信号编码解码实现语音信号编码解码(G.711)二、所需设备二、所需设备计算机,ICETEK-VC5509-EDU实验箱(或ICETEK仿真器、ICETEK-VC5509-A系统板、相关连线及电源),耳机,麦克风。三、相关原理三、相关原理1 1TLV320AIC23TLV320AIC23芯片性能指标及控制方法同任务芯片性能指标及控制方法同任务1919。2 2G G.711.711语音编码标准语音编码标准G.711是国际电报电话咨询委

49、员会(CCITT)和国际标准化组织(ISO)提出的一系列有关音频编码算法和国际标准中的一种,应用于电话语音传输。G.711是一种工作在8 kHz采样率模式下的脉冲编码调制(Pulse Code Modulation,PCM)方案,采样值是8位的。按照恩奎斯特法则规定,采样频率必须高于被采信号最大频率成分的2倍,G.711可以编码的频率范围是从0到4 kHz。G.711可以由两种编码方案:A律和律。G.711采用8 kHz、8位编码值,占用带宽为64 kb/s。3 3PCM PCM 编码编码在电话网络中规定,传输语音部分采用0.33.3 kHz的语音信号。这一频率范围可覆盖大部分语音信号。它可以

50、保留语音频率的前3个共振峰信息,而通过分析这3个共振峰的频率特性和幅度特性可以识别不同人声。而00.3 Hz和3.34 kHz未用,也被当成保护波段。总之,电话网络具有4 kHz的带宽。由于需要通过这一带宽传送小幅变化的语音信号,因此需要借助于脉冲调制编码(PCM),使模拟的语音信号在数字化时使用固定的精度,以最小的代价得到高质量的语音信号。PCM编码需要经过连续的三步:抽样、量化和编码。抽样取决于信号的振幅随时间的变化频率,由于电话网络的带宽是4 kHz的,因此为了精确地表现语音信号,必须用至少8kHz的抽样率来取样。量化的任务是由模拟转换成数字的过程,但会引入量化误差,应尽量采用较小的量化

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《DSP处理器原理与应用》课件第8章.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|