使用现成SoC实现的高质量PDM麦克风接口
2015年01月29日 10:58 发布者:designapp
什么是PDM,它在我的麦克风中起什么作用?PDM指脉冲密度调制,一种用来调节双电平信号的格式之一,即在k概率下处于一种状态,在1-k概率下则处于另一种状态。如果状态分别以1和0来表示,那么可视为某种“逻辑”信号,该信号值为k,可以是表示任意高精度的实数。
在脉冲密度调制中,信号活动以同步到某时钟(需要由解码器提供)的脉冲形式存在。至少在理论上,这些脉冲的等宽与时钟间隔相同,且信号值基本上要么为高电平要么为低电平。这些脉冲的瞬时密度即为所需信号的编码,50%=无活动,高于50%=正压,低于50%=负压。调制信号的频率分量一般远低于时钟频率,比如麦克风的音频。
其他可用任意高精度分数k来表达的在1和0之间交替的信号类型有:PWM,即脉冲宽度调制(此时改变的是1和0部分的相对宽度)和PFM。PFM不是意大利前卫摇滚乐队,而是一种通过修改连续等宽脉冲的频率(F)来调整其平均值的方法。读者可以练习计算F参数值。
现在不知读者有没有注意到我们已经暗示了答案。对许多应用来说,如果信号是由一串不断改变密度、宽度或频率的脉冲直接组成,那会相当麻烦。这样的信号中存在过多的高频寄生信号。不过如果用足够长的时间来求得这样的脉冲序列的平均值,就可以减轻这种变化造成的影响。
在PDM输出麦克风内部,可以发现一个小型ADC IC(调制器),其用于将MEMS传感器输出的模拟信号转换为PDM信号流。这种众所周知的音频转换器技术所生成的信号,其低频频谱接近所需音频信号,而高频寄生部分的频率在某个拐点频率之上随频率上升快速升高,基本落在最终产品需要使用的音频频率范围之外。
在所有商用PDM麦克风中,噪声频率以每倍频超过24dB的速率陡增。图1显示了用于PDM应用的ADC的典型输出频谱。该PDM信号流的噪声密度在100kHz~300kHz频率范围内比在1kHz~3kHz频率范围内要大80dB(相当于增加了10000倍)。
图1:PDM输出麦克风中转换器的典型输出噪声频谱
由于调制器的这种噪声频谱快速上升的特征,所以我们不能仅限于平均处理。平均只是实现正确滤波这一过程中最起码的一步。要成功地充分消除这种高频噪声,使之不至于导致任何问题,需要采取比平均更有确定性的措施。那就需要一种适当的滤波器!可以看到,在典型PDM接口使用的简单平均法和高效率滤波方法之间,有着惊人的相似之处。
PDM接口的作用是什么?
简言之,滤波器。双电平信号(在音频域也称1比特信号)能够通过快速改变其在时域上的属性,表达低频信号的微小变化。如果要消除全部这些高速时域噪声,就需要采取另一种用双电平信号表达微小变化的方法,即以幅度表达。换言之,在代码域中而不是在时域中。
那么接下来就把PDM双电平音频信号转换为PCM(脉冲代码调制)多电平音频信号。过去曾认为使用16位提供的65536个电平即足以表达高质量音频信号。但现在实际上每个人都希望用24位表达,即在理论上把信号幅度范围分为将近1,700万个电平。虽然很少有模拟系统能够足够低噪声地真正实现这样的分辨率。
PDM麦克风的时钟速率比一般期望的音频采样率要高得多。大多数PDM麦克风的时钟频率(即脉冲频率)为1MHz~3MHz。PDM前端采集的音频带宽一般为该频率的百分之一,基本没有噪声,故要让整个音频带宽处于低噪水平,需要的时钟频率应超过2MHz。
那么如果1个引脚要3MHz时钟,那么24个引脚是不是要24MHz时钟呢?答案是不需要。如果滤波功能足够强大,能够消除足够多的寄生高频噪声,就可以在滤波器输出端进行降采样操作,这样24位输出字只会出现在“有规律”的音频采样率上。典型的抽取因数为64倍,这样在3.072MHz频率下1位输入信号就会转换为频率为48ksps的24位输出信号。由于降采样抽取因数(64)高于“位增长因数”(24),实际每秒发生的数据位转换次数有所下降,虽然并非刻意为之。
从实际工程设计的角度来看,典型PDM麦克风应有电源引脚、接地引脚,当然还需要时钟输入引脚、数据输出引脚和通道选择引脚。根据通道选择引脚的状态,麦克风的输出在时钟信号处于低电平或高电平状态为活跃状态,在另一状态下处于高阻抗。这种聪颖的设计意味着可以用一根话筒线多路复用两个麦克风,这样立体声PDM接口仅需两根线缆,即时钟输出线缆和一根同时支持两个声道的数据返回线。任何使用这种类型的数字麦克风接口的解决方案都会自动解复用出现在输入数据线上的两个信号。
目前的PDM接口解决方案
近年来,音频转换器芯片制造商在自己的旗舰“移动编解码器”上纷纷推出PDM(或数字)麦克风输入。这种全集成芯片,可提供包罗一切的从麦克风到耳机的完整信号路径。这对此类厂商来说,易如反掌。因为音频ADC的工作原理是生成1位或数位高采样率输入信号,然后“抽取”输出信号降低采样率。所以采用PDM麦克风可以理想地充分发挥设备上原有逻辑电路的效益。
所以如果系统已经准备采用全功能正价音频编解码器,这或许是一种不错的做法。是否美中不足呢?带有数字麦克风输入功能的编解码器的选择范围受限,所以如果不需要PDM,就有可能不能获得某种良好功能或优惠价格。此时得到的只是厂商已经内置的滤波功能。对此功能难以用自己的滤波器系数重新编程,来微调频率响应或音频组延迟的各种特性。
如果系统设计稍微偏离常规,就会受到没有现成可用器件的制约。如果一定要用,首先应拿到一份内容相当广泛的滤波器基础性能说明文档,其中包括数页的频率响应图。至少能看到要用的是什么样的器件。但可能发生的情况是,一旦选定,这种IC又会以比管理层预想的速度更快地从新设计推荐产品中消失。
如果想要把此项功能更多地交给系统中的主处理器来完成,可能会得到微处理器厂商提供的应用指南和代码库。中端32位微处理器足以胜任PDM的处理和滤波需求,虽然需要仔细查看是否还要把微处理器用于其他工作。
毫无疑问,这种滤波功能对一般的嵌入式微控制器来说是个难题。不仅如此,实时运算还要求缓冲区大小、中断时延及其它处理器任务的调度得到良好控制。
这明显需要经验丰富的编程人员才能完成。需要的代码是专用的,库文件是封闭的“黑匣子”式的,需要严格优化的目标代码、在编译器中手动编译且无法修改。如果库文件不支持选定的抽取比例和输出频率组合,就难以进行调整。例如,如果发现很难支持相当标准的44.1ksps音频速率,就必须采用48ksps。这种情况会造成某些手机制造商不满。对此事我们不作评论。
此外,很难对处理路径的性能进行详细的诊断检查。微控制器厂商在交付高质量音频解决方案方面一贯声名狼藉(请参阅关于USB音频系统的《谨慎选择USB音频微控制器:测试台上的惊险故事》)。
所以一般来说不得不干脆相信信号的音频内容会得到良好的处理。如果只是设计具有某种语音识别能力的小配件,这算不上什么问题。但如果要设计的是用于高质量应用的先进超小型麦克风,就会陷入信噪比泥潭而无法自拔。