基于MSP430的语音与音频压缩/解压缩技术

技术分类: 消费电子设计  | 2008-05-09
来源:电子产品世界

  MSP430FG4618 片上信号链解决方案

  我们用 MSP430FG4618 可以实现另一种片上信号链解决方案。MSP430F169 可支持 60 KB 的集成闪存,而 MSP430FG4618 则可支持 116 KB 的闪存。MSP430FG4618 的另一优势在于,它还集成了运算放大器模块。运算放大器可用于放大扩音器的输入及数模转换器的模拟输出。图 5 显示了 MSP430FG4618 信号链电路图。具体配置采用的是TI推出的 MSP430FG4618/F2013 试验板。该评估板可与相关代码示例配合使用。

MSP430FG4618 信号链电路图

  扩音器的输出信号非常小,必须放大。MSP430 的运算放大器可用于不同的运算模式。如果用于 PGA 模式,那么最大只能放大到 15 倍,对扩音器放大器来说还不够。因此,需要通过外部组件来加大增益。图 5 中的运算放大器 OA0 即用于通用放大器模式。放大器共有 8 种设置方式,可以使增益-带宽乘积和转换率等性能与电流消耗达到最佳平衡。图中的所有放大器 OA0、OA1 及 OA2 均采用了高性能模式(快速模式)。

  如欲了解有关运算放大器使用的更多详情,敬请参见 MSP430FG4618/F2013 试验板用户指南。

  利用通用串行通信接口 (USCI) 可将音频数据存储到外部闪存中。我们也可通过 I2C 总线或 SPI 总线与外部存储器相连。

  MSP430 性能

  相关代码文件中有一些 *.wav 文件示例,可表明解码 ADPCM 数据的质量。我们可在 PC 上用媒体播放器等软件来比较这些文件,这样就能体验 ADPCM 压缩算法的实际质量了。请注意,通过提高音频采样率和音频采样大小(解析度),我们可以进一步提高音频质量。

  使用相关代码

  相关代码中包含了两个软件项目,这两个版本都基于第三部分中所介绍的内容,也都采用 IMA ADPCM 算法。

  ADPCM函数的使用非常简单。首先,必须在应用代码中包含ADPCM.h首标文件。该首标文件定义了ADPCM.c文件的ADPCM函数。在每次音频数据的录制或重放工作之前,必须调用 ADPCM_Init() 函数。该函数定义了信号估算(Se)的起始值以及用作量化器步长调节的步长指针。编码器和解码器通过设置可实现同步。调用ADPCM_Encoder (int value)函数就能进行编码,每个音频采样调用 ADPCM_Decoder() 函数就能进行回放。以下代码段显示了如何完成上述工作。

#include "ADPCM.h"
  void main(void)
{ // 应用软件初始化
  while(1) // 主循环
     { // 应用软件
     if (P1IN & 0x01)
      record();
     if (P1IN & 0x02)
       play();
   }
  }
  void record(void)
  { // 初始化后,以便 A/D 转换器、定时器、放大器等的录制
   ADPCM_Init(); // 须在开始录制之前完成
   // 开始录制
  }
  void play(void)
  { //初始化后,以便 A/D 转换器、定时器、放大器等的录制
   ADPCM_Init(); //须在开始录制之前完成
   // 开始回放
}

  接下来,我们用 IAR Embedded Workbench KickStart version 3.42A 来测量 ADPCM 函数执行的次数。测量时,采用的是默认优化设置。

  ADPCM_Encoder() 函数调用需要114~126个循环。

  ADPCM_Decoder() 函数调用需要99~109个循环。

  请注意,这只包含压缩/解压缩算法。要实现录制和回放功能,还需要更多代码。

  参考文献:

  1. MSP430x4xx 系列用户指南 (SLAU056)

  2. MSP430F169 产品说明书 (SLAS368)

  3. MSP430FG4618 产品说明书 (SLAS508)

  4. 基于 TMS32010 的 32kbps ADPCM (SPRA131)

  5. 基于 MSP430F13x 的低成本 12 位语音编解码器设计 (SLAA131)

  6. MSP430FG4618/F2013试验板用户指南(SLAU213)

1】【2
加载中

对文章的评论

剩余字数:  

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

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销