ARM Cortex-M的音频性能解析
近年来,便携式音乐播放器大放异彩,备受人们喜爱。其中的原因有很多,例如海量的压缩音乐内容,数据存储成本不断下降、操作简便和轻松访问不同流行元素的在线音乐内容。消费者对下一代音乐播放器日益挑剔,期盼更长的音频播放时间、更丰富的聆听体验。
由此诞生了Cortex-M系列,这是新一代ARM低成本微处理器,采用低功耗设计。Cortex-M3内核和最近发布的Cortex-M4内核基于哈佛架构的3级流水线并采用Thumb-2指令集架构(ISA),内存要求更低。但这些MCU能否胜任音频处理任务?它们能否打造更出色的倾听体验,满足人们的期望?
为了分析这些处理器是否适合处理音频,首先我们以MP3解码器和均衡器为例,大致了解一下音频解码器和后处理等音频部件中常用音频处理模块实施方案,然后按照高效实现这些模块对处理器指令集架构的要求,对模块加以分类。
我们重点从指令集角度来探讨Cortex-M3和Cortex-M4内核在音频处理方面的优势。为此,我们先讨论不同音频部件的一些模块代码示例,随后分析这些处理器在循环和指令方面的独到优势,最后,将展示流行音频编解码器和音频后处理部件的典型性能指标以佐证这些处理器内核的音频能力。
音频处理模块的功能块
为了分析音频处理器要求,现先从音频处理模块所涉及的功能块,即音频编解码器和音频后处理部件谈起。本节框图中的模块用颜色标为3种不同类别。绿色表示乘加(MAC)密集模块、红色表示MAC和控制代码混合模块、蓝色表示控制代码模块。
音频编解码器
互联网提供了大量压缩音频数据,必然要求音乐播放器支持多种流行的音频解码器。音频编码器的处理功能涉及一系列功能块,我们接下来回顾一下。
图1:典型音频编码器框图。
音频编码器:音频编解码器的用途是实现音频数据压缩,同时在给定比特率的限制下努力获得保真音质。典型编码器如图1所示。一般来说,音频编码器采用如下三步完成压缩:首先,通过数据滤波调节音频数据。然后,通过窗口化和重叠对音频数据进行帧化,等待进一步处理;接着,将此数据变换至频域,消除时域内的冗余。使用心理声学原理,对可能引入的、听不见的量化噪声数量进行计算;最后,对此数据进行量化并通过熵编码实现进一步无损压缩。此编码数据经紧密打包成为位流。尽管所实现的压缩有些损耗,但听觉难以分辨细微差别。
音频解码器:将上述关于音频编码器的过程反向,即是音频解码器从位流中还原音频数据的原理。这里以MP3解码器为例进行讨论,高层模块分解如图2所示。框图以MP3文件格式的压缩音频作为输入并输出PCM格式的非压缩音频。
这些模块以功能命名,并代表各自执行的操作
图2:MP3解码器框图。
"Bit Stream Demux"模块解析MP3位流
"Entropy&Inv Q"模块执行霍夫曼解码和反向量化
"IMDCT"模块对此数据进行反向修改离散余弦变换
"Overlap and Add"模块执行窗口化、重叠和加法运算
"Synthesis Filter Bank"从滤波器组域数据中重构时域样本
音频后处理
两种情况一定需要音频数据后处理。首先,要求提供丰富的聆听体验。例如,可使用立体声加宽等空间定位器(Spatializer)来消除长时间使用耳机的听觉疲劳。即使是基本的音频播放,也需要后处理。例如,音乐播放器的DAC如果仅支持有限系列采样率的情况下,可能需要对音频数据进行重新采样。
图3:均衡器框图。
我们以均衡器为例,探讨后处理器中用到的典型模块。均衡器一般是为了满足聆听者的偏好,同时也可用于校正耳机或扬声器的频响。图3所示为基本参数均衡器的高层模块分解。下列模块用于仅修改一小段音频频谱,具体做法是利用增益值、带宽和中心/截止频率的可控参数提供增益或衰减。要获得所需频响,可将多个此类二阶IIR滤波器级联。
低频(LF)斜率滤波器:一种用于修改音频频谱低音部分的滤波器
峰化滤波器:一种用于修改音频频谱中频范围的滤波器
高频(HF)斜率滤波器:一种用于修改音频频谱高音部分的滤波器
音频处理模块类别
根据特性,音频处理模块广义上分为三类。我们将详细讨论每种模块及其特性,然后进一步分析高效实现这些模块对处理器的要求。表1概述了本节所述音频处理的处理器要求。
表1:音频处理模块及其处理器要求。
MAC密集模块
这些模块属于计算密集型,主要执行乘加(MAC)运算,通常有一个预定的代码流。滤波(FIR、IIR滤波器)、窗口化、相关性及卷积等信号处理运算属于此类别的典型例子。此类模块的处理器要求稍后论述。
高精度MAC:这些模块正常工作需要高精度乘加法。例如,IIR滤波器的稳定性要求高精度运算。输出的保真度和精度直接取决于MAC指令的精度。尽管可使
- 基于Cortex-M3内核处理器的嵌入式Web服务器设计(02-17)
- STM32-FSMC机制的NOR Flash存储器扩展技术(11-20)
- 基于Cortex-M3的 STM32微控制器处理先进电机控制方法(11-23)
- 基于STM32控制的声音导引系统(01-16)
- 基于Cortex-M3的STM32微控制器处理先进电机控制方法(03-07)
- 基于STM32的嵌入式语音识别模块设计(03-29)