随着嵌入式系统性能的提高,在 ARM 嵌 入式系统中实现对各种音乐格式的解码和播放已有可能。如何在嵌入式系统中利用有限的计算能力达到播放音乐的功能,是一个值得关注的问题。一般常见的情况 是,依赖嵌入式 ARM 或 DSP 的处理能力,通过定点 或浮点程序实现音频编解码过程。
一. 实例说明
音频编解码常用的实现方案有三 种。
第一种就是采用专用的音频芯片对 语音信号进行采集和处理,音频编解码算法集成在硬件内部,如 MP3 编解码芯片、语音合成 分析芯片等。使用这种方案的优点就是处理速度块,设计周期短;缺点是局限性比较大,不灵活,难以进行系统升级。
第二种方案就是利用 A/D 采集卡加上计算机组成硬件平台,音频编解码算法由计算机上的软件来实现。使用这种方案的优点是价格便 宜,开发灵活并且利于系统的升级;缺点是处理速度较慢,开发难度较大。
第三种方案是使用高精度、高速度 的 A/D 采集芯片来完成语音信号的采集,使用可编程的数据处理能力强的芯片来实现语音信号处理的算法,然后 用 ARM 进行控制。采用这种方案的优点是系统升级能力强,可以兼容多种音频压缩格式甚至未来的音频压缩格 式,系统成本较低;缺点是开发难度较大,设计者需要移植音频的解码算法到相应的 ARM 芯 片中去。
经过综合比较以上三种方案的优缺 点,本实例选用第三种设计方案来实现语音信号的音频编解码。
二.音频编解码原理
对音频信号压缩编码的标准主要有 ITU/CCITT 的 G 系列: G.711 、 G.721 、 G.722 、 G.723 、 G.728 、 G.729 ; MPEG 系列的: MPEG-l , MPEG-2 , MPEG-4 , MPEG-7 中的音频编码和 DOLBY( 杜比 ) 实验室的 AC 系列: AC-1 , AC-2 , AC-3 等。它主要应用领域包括:
(1) 消费电子类数字音响设备。如 CD 、 MP3 播放器及 MD(Mini Disc) 唱 机等。
(2) 多媒体应用。主要是应用在 VCD 、 DVD 、多媒体计算机和因特网上。
(3) 广播节目制作系统。在声音节目制作系统中,录音、声音的处理加工、记录传输、非线性编辑等环节都采用 了数字音频技术。
(4) 广播电视数字化。在数字视频广播 (DVB) 、数字音频广播 (DAB) 和中短波数字调幅广播系统中都采用 了数字音频技术。
2.1 音频编解码框图
将模拟的、连续的声音波形数字化 ( 离 散化 ) ,可以得到数字音频。数字音频是把模拟的声音信号通过采样、量化和编码过程转变成数字信号,然后再 进行记录、传输及其他加工处理;重放时再将这些记录的数字音频信号还原为模拟信号,获得连续的声音。
采用数字音频技术可以避免模拟信号容易受噪声和干扰的影响,可以扩大音频的动态范围,可以利用计算机 进行数据处理,可以不失真地远距离传输,可以与图像、视频等其他媒体信息进行多路复用,以实现多媒体化和网络化。

。
2.2 音频编码过程
1 .音频信号数字化

数字音频信号经过处理、记录或传输 后,当需要重现声音时,还必须还原为连续变化的模拟信号。将数字信号转换成模拟信号为 D/A 变 换。
数字音频的质量取决于采样频率和量化位数。采样频率越高,量化位数越多,数字化
后的音频质量越高。
2 .音频采样
采样就是从一个时间上连续变化的 模拟信号取出若干个有代表性的样本值,来代表这个连续变化的模拟信号。一个在时间和幅值上都连续的模拟音频信号的函数表示为 x(t), 采样的过程就是在时间上将函数 x(t) 离 散化的过程。一般的采样是按均匀的时间间隔进行的。设这一时间间隔为 T ,则取样后的信号 为 x(nT) , n 为自然数。

当采样频率为 1 / 2T 时,即 ?N=1/2T 时,称 ?N 为奈奎斯特采样频率。
3 .音频量化
采样把模拟信号变成了时间上离散的样值序列,但每个样值的幅度仍然是一个连续的模拟量,因此还必须 对其进行离散化处理,将其转换为有限个离散值,才能最终与数码来表示其幅值。量化过程是将采样值在幅度上再进行离散化处理的过程。所有的采样值可能出现的 范围被划分成有限多个量化阶的集合,把凡是落入某个量化阶内的采样值都赋予相同的值,即量化值。通常这个量化值用二进制来表示,用 N 位二进制码字可以表示 2N 个不同的量化电平。 存储数字音频信号的比特率为:
I=N·?s ( 24-3 )
其中的 ?s 是采样率, N 是每个采样值的比特数。
表示采样值的二进制的位数为量化位数,它反映出各采样值的精度,如 3 位能表示采样值的 8 个等级, 8 位能反映 256 个等级,其精度为 音频信号最大振幅的 1/256 。量化位数越多,量化值越接近于采样值,其精度越高,但要求的信息存储量就越大。
根据公式 (24-3) 可知,要减小比特率 I ,在 ?s 已经确定的情况下,只能去减少 N 的值。 N 的值降低会导致量化的精 度降低, N 的值增加又会导致信息存储量的增加。因此在编码时就需要合理地选择 N 的值。
均匀量化就是采用相等的量化间隔进行采样,也称为线性量化。用均匀量化来量化输入信号时,无论对大 的输入信号还是小的输入信号都一律采用相同的量化间隔。因此,要想既适应幅度大的输入信号,同时又要满足精度高的要求,就需要增加采样样本的位数。
非均匀量化的基本思想是对输入信号进行量化时,大的输入信号采用大的量化间隔,小的输入信号采用小 的量化间隔,这样就可以在满足精度要求的情况下使用较少的位数来表示。其中采样输入信号幅度和量化输出数据之间一般定义了两种对应关系,一种称为 u 律压缩算法,另一种称 为 A 律压缩算法。
采用不同的量化方法,量化后的数据量也就不同。因此说量化也是一种压缩数据的方法。
4 .音频编码
采样、量化后的信号还不是数字信号,需要把它转换成数字脉冲,这一过程称为编码。最简单的编码方式 是二进制编码。具体说就是用 n 比特的二进制编码来表示已经量化了的样值,每个二进制数对应一个量化电平,然后把它们排列,得到由二 值脉冲串组成的数字信息流。用这样方式组成的二值脉冲的频率等于采样频率与量化比特数的乘积,称为数字信号的数码率。采样频率越高,量化比特数越大,数码 率就越高,所需要的传输带宽就越宽。
音频编码方法归纳起来可以分成三大类:波形编码、参数编码、混合编码。波形编码是尽量保持输入波形 不变,即重建的语音信号基本上与原始语音信号波形相同,压缩比较低;参数编码是要求重建的信号听起来与输入语音一样,但其波形可以不同,它是以语音信号所 产生的数学模型为基础的一种编码方法,压缩比较高;混合编码是综合了波形编码的高质量潜力和参数编码的高压缩效率的混合编码的方法,这类方法也是目前低码 率编码的方向。
2.3 IIS 音频 总线
对于传输的声音格式 一般分为两种: IIS 总线格式和 MSB(LEFT)JUSTIFIED 格式。 MSB JUSTIFIED 格式与 IIS 格式不同的地方是它总是当 IISLRCK 变化时发 送下一个字的高位。 IIS 总线格式如图 24-3 所示。

发送器的串行数据发 送可以在时钟信号的上升沿或下降沿被同步。可是串行数据必须在串行时钟信号的上升沿锁存进接收器,所以当发送数据用上升沿来同步时有一些限制。 LR 通道选择可以指示当 前正发送的通道。 IISLRCK 既可以在串行时钟的上升沿变化,也可以在下降沿变化,但不需要同步。在从模式下,这个信号在串行时钟 的上升沿锁存。 IISLRCK 信号跳变一个时钟周期之后,开始发送高位数据,这允许从发送方可以同步发送串行数据。更进一步,它允 许接收方存储先前的字并准备接收下一个字。

·双分频器 (IPSR) :一个用于 IIS 设备的主时钟发生器,另一个用于外部编解码芯
片时钟发生器。
· 64 字节的堆栈 (FIFO) :发送数据时,数据被写入发送 FIFO ;接收数据时,数据被写入接收 FIFO 。
· IISCLK 主时钟:在主模式下,串行位时钟由该发生器产生。
·移位寄存器:发送模式,并行数据通过该寄存器转化为并行数据;接 收模式,串行 数据被转化为并行数据接收。
2.4 IIS 音频时钟与传输方式
音频系统主时钟 CODECLK ,一般为采样频率的 256 或 384 倍。 CODECLK 通过对处理器主时钟分频得到, CODECLK 与采样频率的对应关系如表 24-1 所示。串行时钟 频率 IISCLK 可以为采样频率的 16 、 32 、 48 倍。

(1) 正常传输模式。 IIS 控制寄存器有一个 FIFO 准备好标志位, 当发送数据时,如果发送 FIFO 不空,则该标志位为 1 , FIFO 准备好发送数据;如果发送 FIFO 为空,则该标志位为 0 。当接收数据时,如果接收 FIFO 不满,则该标志位为 l ,指示可以接收数据;若 FIFO 满,则该标志位为 0 。通过该标志位,可以确定 CPU 读写 FIFO 的时间,通过该方式实现发送和接收 FIFO 的存取来发送和接收数据。
(2)DMA 传输方式。 发送和接收 FIFO 的存取由 DMA 控制器来实现,由 FIFO 准备好标志来自动请求 DMA 的服务。
(3) 发送和接收模式。 因为只有一个 DMA 源,因此在该模式下,只能是一个通道用正常传输模式,另一个通道用 DMA 传输模式,从而实现 同时工作的目的。