本节将探讨ARM低功耗高性能微控制器Cortex-M3内核的功能,然后讨论Cortex-M系列的最新处理器内核M4的功能。Cortex-M系列内核的功能及示例指令和循环如表2所列。
Cortex-M3功能:采用高精度MAC单元,可提供最高32位乘以32位数据的乘法精度,得出64位累加结果。其他有利功能包括DSP指令、范数计算辅助指令、分支推测、因Thumb-2的高代码密度以及硬件除法指令。这些功能都有利于音频处理。
Cortex-M4功能:Cortex-M4内核是Cortex-M3的升级产品,除了继承全部现有功能外,还增加了单循环MAC单元和浮点单元(FPU)等额外功能。MAC单元只需要1个循环,即使对于最高精度运算也是如此,将32位乘以32位,得出64位累加结果。增加了具有SIMD功能的DSP指令和高精度MAC单元等新功能,Cortex-M4就是一种具有DSP功能的微控制器,即数字信号控制器(DSC)。这些功能对于音频处理非常有利,因为需要高精度来保持透澈的音质。
表2:Cortex-M3和Cortex-M4功能、指令及循环示例。
音频处理传统上在数字信号处理器(DSP)上实施,而由通用处理器(GPP)负责系统相关的功能。随着Cortex-M系列的问世,由于这些处理器完全适合音频处理应用,音频可在这些内核上获得高效实施而无需DSP。
音频模块代码示例
现在,我们将展示一些不同音频处理部件(音频解码器、编码器、后处理及通用信号处理等)的例程的代码示例。代码段内用粗体字表示的指令是最新引入Cortex-M4的。每条指令的循环次数在括号中给出。表格概述了每个示例所用的总循环、所需的指令数及所用的寄存器。
窗口重叠加法模块
重叠加法窗口化是大多数音频解码器采用的典型模块。它以MAC运算为主,属于计算密集型。图4所示为此模块的运算处理流程。此例的实施方案在等式1中给出。
图4:窗口重叠加法模块图。
等式1:窗口重叠加法模块。