基于TLV320AIC23和TMS320VC5416的语音系统设计

技术分类: 消费电子设计  | 2008-04-08
来源:微计算机信息 | 付荣国 周庆敏

  VC5416的2个多通道缓冲串口McBSP分别配置为I2C模式和SPI模式。McBSP0作为数据的发送和接收端口;McBSP1对CODEC写控制字,作为控制端口;AIC23作为从设备,因此设置为Slave模式,而VC5416则设置为Master模式,Codec采样率设置为8kHz。

  2.3 BOOTLOADER设计

  VC5416片内ROM中有固化的自加载程序(BOOTLOADER),但它对被加载程序的大小有限制。在使用8bit Flash的情况下,只能加载小于16KWord的内容。而三个速率的SELP算法程序区和数据区的总数据量远远超过16KWord,显然只使用片内的BOOTLOADER是不能满足需要的。所以必须自己写加载程序。首先由VC5416片内的BOOTLOADER把自己写的加载程序加载到片内RAM,然后执行这段加载程序,加载其它部分。这里需要解决的一个主要问题就是Flash数据和片内地址空间的映射关系。由于SELP算法的程序数据总量很大,所以必须用到片内扩展的程序区,也就是说MP/MC标志位需要设为0。从此时的Memory Map中可以看出,VC5416可以访问的每块连续片外地址空间只有32K,所以Flash数据只能按照每页32K的方式分页映射到片内地址空间。使用FPGA可以很方便地控制哪页Flash数据映射到片内中,这部分的原理框图如图3所示。

BOOTLOADER原理

  图3 BOOTLOADER原理

  3接口软件设计

  本系统的软件采用C语言和汇编语言混合编写。由于是利用VC5416的McBSP口来控制AIC23芯片,且2个McBSP口设置成不同的工作方式,所以必须把McBSP初始化为符合AIC23芯片的控制命令时序和要求的工作模式。由于篇幅本文只列出对VC5416及AIC23芯片初始化设置时的部分代码。

  3.1 TMS320VC5416初始化

  SWWSR=0x7fff;/程序、数据、I/O空间

  SWCR=0x0001;/等待周期为7×2=14

  BSCR=0x8006;/按32KW分区,HD[7:0],D[15:0]Hold

  CLKMD=PLL_DIV_INIT;

  Waitloop(0x0400);

  CLKMD=PLL_LOCK_INIT_X(5);

  Waitloop(0x0400);

  PMST=0x0168;/中断向量表定位在0X100,MP/MC=1

  OVLY=1,DROM=1;

  3.2 TLV320AIC23初始化

  为使AIC23正常工作并产生预期的音频效果,必须对其相应的寄存器进行配置。首先对VC5416的I2C模块初始化,将AIC23总线上的地址写入从机地址寄存器ICSAR;再把相应的AIC23内部映射寄存器的地址和待写数据合并为16bit控制字,逐次写入ICDXR,并通过I2C总线发送给AIC23,即可完成对AIC23的初始化配置。

  AIC23初始化的部分源代码:

  Unsigned int codec_buf[9]={OX1e00,OXOc00,OxO81a,OxOaO4,OxOe01,0x1020,0x1021,0x0117,OxO5f9};

  Port_sub_address=(unsigned int*)MCBSP_SPSA_ADDR(1);

  Port_sub_index_reg=(unsigned int*)MCBSP_SPAD_ADDR(1);

  *Port_sub_address=MCBSP_SPCR2_SUBADDR;

  For(i=O;i<9;i++){

  While(!(*Port_sub_index_reg&(MASK_BIT(XRDY))));

  Set_codec_cs_low();

  MCBSP1_DXR1=codec_buf[i];

  While(!(*Port_sub_index_reg&(MASK_BIT(XRDY))));

  Set_codec_cs_high();}

  4结束语

  本文的创新点是根据TI公司的DSP芯片TMS320VC5416和语音CODEC芯片TLV320AIC23的特性,设计并实现了一个语音采集处理系统。该系统具有很强的处理能力和灵活的外围接扣电路。实践证明它能够满足实时信号处理的要求,可以作为一种语音信号处理算法研究和实时实现的通用平台。

1】【2】【3
加载中

对文章的评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销