音频捕获和回放正成为许多基于微控制器(MCU)的应用程序的必备条件。但是,在保真度和编解码器方面的音频支持范围非常广泛。您可以使用基于简单8位MCU的平台来托管支持音频的应用程序,但高质量的音频可能需要数字信号控制器(DSC)或32位MCU。本文将调查音频空间的广度,提出与不同级别的MCU性能相匹配的潜在应用,并指出可以帮助您开始使用音频元素的项目的现成评估工具包。
让我们首先看一下使用8位MCU可以实现的目标。过去,为使用数字信号处理器或专用音频芯片的产品添加语音记录和回放功能。现在,Microchip Technology发布了一份应用笔记,重点介绍如何使用自适应差分脉冲编码调制(ADPCM)在8位PIC18F67J10 MCU上处理简单的语音编码和解码。 ADPCM编码基于连续语音样本高度相关的事实。该算法基于先前的样本预测每个后续样本,并且仅编码预测样本和实际样本之间的差异。您当然不会使用ADPCM来编码音乐,但该算法在语音应用程序中非常有效。
您将找到基于浮点数学和精度数据转换器的ADPCM实现。这样的实现显然超出了8位MCU的能力。 Microchip开发了基于4位ADPCM数据的实现。 8位MCU可以支持8 KHz采样率的单调音频。
ADPCM编码
编码器的设计(图1)接受二进制补码格式的16位数据流。您可以使用片上10位A/D转换器(ADC)对来自麦克风的采样进行编码。解码器采用4位ADPCM数据并生成16位二进制补码输出。您可以使用片内捕捉/比较/PWM(CCP)外设将PWM信号驱动至输出滤波器。
图1:ADPCM编码器框图,其中sp是预测样本,si是线性输入样本,d是差值,t是4位ADPCM值。
有许多因素可能会限制此类应用程序在8位MCU上的性能,尽管CPU性能通常不是主要因素。例如,集成ADC的转换速度和闪存的写入速度将实现限制为8KHz速率。事实上,Microchip表示可以在性能较低的8位PIC16系列MCU上实现语音功能。 ADPCM应用程序可轻松适应PIC18F67J10 MCU的存储器占用空间。例如,解压缩算法仅使用可用于程序存储的128千字节中的484个字节。
Microchip不为PIC18系列MCU提供以音频为中心的开发套件,但您可以轻松地将其组合在一起。 PICDEM开发板包括PIC18 MCU和dsPIC30F DSP使能的MCU或数字信号控制器(DSC)。将演讲回放PICtail Plus子板添加到套件中,您就可以进行音频实验了。
如果您将任务的编码部分排除在等式之外,那么8位MCU的音频任务能力就更强了。例如,您可以设计一种产品,播放预先录制的语音片段,作为最终用户的语音提示。您可以单独创建样本,只需使用MCU解码数据并输出PWM信号。
16位音频应用程序
升级到16位MCU,您可能会发现可能会瞄准的音频应用程序类型出现重大跳跃。然而,实际上,差异并不像你想象的那么大。正如我们刚才所讨论的,数据转换时间和内存访问速度等特性可以控制音频功能。你得到的是额外的免费MCU周期来托管应用程序的其他元素。
让我们来看看瑞萨最新的16位MCU系列--RL78系列。该MCU系列针对低功耗应用进行了优化,包括用于电池供电设备。该设计提供41 Dhrystone MIPS(DMIPS),最高时钟速度为32 MHz。这种性能水平使其落后于低端32位MCU,实际上比某些更快。
瑞萨发布了一份专注于在ADPCM应用程序中使用RL78的应用笔记。编码器使用集成的10位A/D转换器对输入进行采样。与我们之前讨论过的Microchip示例一样,该实现以8 KHz采样率创建4位ADPCM数据。解码器可以以11.025KHz的采样率操作。
您可以使用RSK RL78/G13开发人员套件(图2)试验瑞萨的ADPCM应用程序。该套件不是特定于音频的,但它集成了许多以音频为中心的功能,包括单调和立体声音频放大器。该板还包括一个麦克风输入和前置放大器以及一个用于数字麦克风的接口。
图2:用于低功耗RL78 MCU的瑞萨开发套件包括单调和立体声放大器以及麦克风输入。
通过迁移到16位MCU可以获得的另一个好处是更广泛的编码算法选择,这些算法的CPU密集程度更高,可以提供更好的音频质量或更高级别的压缩,这意味着您可以存储更多音频可用的内存。
编解码器选择
例如,让我们考虑一下Microchip PIC24系列MCU。对于编码和解码应用,Microchip提供对ADPCM,G.711,G.726A和Speex编解码器的支持。实际上有更多的编解码器选择,但列出的编解码器可以免费使用。
G.711是ITU(国际电信联盟)标准,广泛用于电话应用。该标准规定了8位采样,8KHz采样率,并使用PCM算法。
G.726A也是ITU标准,基于ADPCM。该标准规定了8 KHz的采样率,但在样本大小方面提供了灵活性,并提供16,24,32或40 Kbit/s数据速率的选择。
Speex是一款开源编解码器,专为IP语音(VoIP)应用而开发。编解码器基于代码激励线性预测(CELP)算法。编解码器可支持8,16和32 KHz采样率。
一般来说,G.711提供了我们讨论过的最佳选择。 Microchip表示,相对于PIC24 MCU,它需要大约60 MIPS的数量级才能实现。根据所选的编码选项,G.726A编解码器可能需要16到40 MIPS。 Speex编解码器在某些情况下可以在质量方面与G.726A匹配,并且需要不到16 MIPS。
根据Microchip的说法,G.711编解码器需要8 KB才能存储1秒的语音。 G.726A编解码器的要求范围为2到5千字节,可存储一秒钟。同时,Speex编解码器只需要1 KB即可存储一秒钟的语音。
添加DSP功能
Microchip实际上将PCI24系列与dsPIC33 DSC系列组合在一起(图3),因为IC共享相同的CPU架构,尽管后者增加了对DSP应用的数学支持。在音频应用方面,通过转移到DSC可以看到您添加的内容很有趣。
dsPIC33在支持的编解码器方面没有太多增加,但同样,您将释放可用于应用程序其他方面的CPU周期。但是,DSC允许您使用Microchip的自动增益控制库,它可以在编码过程之前自动调整语音信号的幅度。该功能在扬声器和麦克风之间的距离变化的应用中特别有用,例如在扬声器电话中。
Microchip dsPIC33 IC还可以使用该公司的语音和音频快进工具。设计团队在开发过程中使用该工具实时控制以音频为中心的算法,如噪声抑制,回声消除和均衡。先前的特征也在库中实现。此外,基于GUI的语音工具生成可以移植到PIC33 DSC的代码。
Microchip提供了一个全面的以音频为中心的开发工具集(图3),用于基于PIC24和dsPIC33的设计。 Explorer 16通用开发板支持两个MCU系列。您可以通过音频PICtail Plus子卡和该产品附带的软件添加音频支持。该组合支持16位和24位音频,包括用于存储音频的4 Mbits串行闪存,并包含一个低通滤波器,用于解调MCU的PWM输出。
图3:对于dsPIC MCU系列,Microchip提供了一组强大的以音频为中心的库,可通过基于GUI的语音和音频快进开发工具进行管理。
32位和音乐
现在让我们继续前进到32位空间。正如您所料,音乐通过32位MCU进入画面。通常,MCU不能实时将音乐编码为MP3或WMA(Windows Media Audio)等格式。但32位MCU可以处理完美的音乐解码,以及我们之前讨论过的所有音频应用。如果要实现编码,则需要使用专用的编解码器IC。
当您进入音乐区域时,您通常会超越片上外设的功能,以产生所需的音频质量。 MCU和DAC的组合可以处理16至24位音频,采样速率为32至48 KHz。一旦考虑32位空间,您还将看到以音频为中心的MCU产品。例如,Atmel提供AT32UC3系列32位MCU,包括通用和音频专用版本。这些产品基于AVR MCU内核。
音频MCU的一个例子是AT32UC3A0512AU MCU,它集成了512 KB的闪存和64 KB的RAM。音频MCU携带设备执行许可算法(如MP3,WMA和AAC解码器)所需的标识号。 MCU集成了便携式音乐播放器所需的完整功能集,例如支持闪存卡和强大的USB堆栈。
Microchip还在其基于MIPS内核的32位PIC32 MCU系列上支持音乐应用。 32位MCU不支持DSPIC33可用的增益控制库或语音和音频快进开发工具。但是,32位产品支持我们在此讨论的与Microchip MCU相关的所有其他编解码器。
正如您所料,Microchip为32位MCU提供了许多开发工具,这些工具将在音频和音乐项目中派上用场。 PIC32音频开发板(图4)集成了PIC32MX795F512 MCU,512 KB闪存和128 KB SRAM。该板还包括一个Wolfson编解码器,可以处理实时音乐编码和解码。 Microchip还支持通过开源Helix MP3解码器库在PIC32上进行解码
图4:Microchip的基于PIC32的音频开发板与iPod PICtail配对,其中包括用于Apple iPod的对接连接。
开发板包括一个与iPod上使用的Apple MFi接口兼容的连接器。 Microchip还提供名为iPod PICtail Plus的配套产品,其中包括iPod的底座。
如您所见,鉴于MCU供应商提供的工具和库的广泛性,为基于MCU的系统设计添加音频功能相对简单。您必须接近这样的设计,并对某一类MCU可以支持的音频质量抱有现实的期望。您会发现即使是非常低端的MCU也可以处理短音频片段的播放。随着处理能力的提升,您可以为音乐添加编码并最终支持。
全部0条评论
快来发表一下你的评论吧 !