AP系列文章——PDM麦克风

简介

PDM代表脉冲密度调制。然而,更好的简称是“1比特过采样音频”,因为它只不过是一个高采样率、单比特的数字系统。如果要找一个优点的话,那就是采样率是音频CD的好几倍,且用一个适当的方式将字长从16bit减小到1bit,这将作为一个PDM系统的基础。

大多数现代的数字音频系统使用多比特PCM(脉冲编码调制)以表征信号。PCM有利于简化处理。这使得信号处理的操作可以在音频流上完成,例如混合,滤波和均衡。

PDM只用1bit来传输音频,在概念上和可实行度上比PCM更简单。它正被普遍用在手机内将音频从麦克风传输给信号处理器。PDM在理论上很适合这个任务,因为它带来了数字的好处,例如低噪声和免于干扰信号,且成本较低。

这个文件将覆盖PDM的基本原理:如何生成,传输和处理。

快速词汇表

DAC(数字模拟转换器):一个设备用来将数字化表征的信号转变成模拟量。

LSB(最低有效位):一个数字量的最小改变。一比特是一个二进制数字量。

MSB(最高有效位):一个数字量的有着最高值的比特。实际上在定点有符号数上它代表的是符号位。

PCM(脉冲编码调制):一个系统用一系列多比特的字来表征一个被采样信号。在音频CD中用的是这个技术。

PDM(脉冲密度调制):一个系统用单个比特来表征一个被采样信号。

Sampling rate:信号被采样以产生一个时间不连续的表征的速率。

Wordlength:用来表征一个采样的比特的数量。

Quantization:一个过程,使用一个给定的字长来表征一个随机数据采样。

Dither:是一个像噪声的信号,在量化之前被添加以提升性能。

Linearization:一个过程用来用来减轻数据量化的有害影响,通常是添加抖动。

Noise modulation:系统内由于信号内容引起的本底噪声的不受欢迎的变化。

PCM

在我们讨论PDM之前,先回顾一下PCM,这种传统的多比特数字音频。PCM的音频信号由一系列采样值来代表,每一个采样值的比特长度都是固定数量的。决定系统性能有两个因素:

  • 采样频率。这决定了系统的带宽。
  • 字长。这决定了系统的信噪比。

特别的,带宽是采样频率的一半,信噪比由(6.02N+1.76)dB给定,N是字长的比特数。

一个未加工的16位系统的理论信噪比是96dB。实践中,抖动用来线性化系统和排除噪声调制;这会使信噪比降低4dB。使用之前的公式,一个未抖动的1比特系统的信噪比是8dB,这对任何现实的音频工作来说都是不能接受的。与此同时,最理想的抖动需要2个最低有效位在工作;由于1bit系统总共只有1个最低有效位,且用在音频上,因此没有给抖动留有空间。

由于系统不能被适当地抖动,1比特的呈现乍一看似乎是行不通的。解决方案在于对噪声整形和过采样的理解。

噪声整形

考虑一个典型的PCM信号,比如一个用24比特表征的正弦波波形。如何在一个系统内用1比特字长来表示这个波形呢,当这样的系统出现严重的噪声和失真问题时该如何表示?

一种方法是扔掉除了最高有效位以外的所有位,有效地阈值化零点周围的信号。这将把正弦波转换成在过零点切换的方波。这引入了极大的失真;事实上超过了40%。失真的原因是系统没有被抖动。量化总会引起错误,但在一个被抖动的系统内,错误形如一个与信号无关的本底白噪声。在一个未被抖动或抖动不足的系统内,很多错误的形式是失真。

因此答案不是保留最高有效位以减小到1比特。然而我们都熟悉一个将字长减小到1比特且工作正常的例子。这就是半色调,且已经成为了自从发明了报纸以来在打印媒体上恢复图像的基本原理。

在半色调内,一个连续的色调图像(例如灰度图)被转换成一系列的黑点和白点。换句话说,字长被缩短为1比特,比特的状态对应黑点或白点。这不是靠简单的阈值化,而是将阈值化产生的错误分配到相邻的未被阈值化的点上。这个过程被称之为误差扩散。(有很多其他方法可用来创造半色调,此处我们不考虑。)误差扩散对图像质量的影响是巨大的,如下:

为什么将阈值化产生的误差扩散后极大提升了图片的视觉质量?答案是误差扩散完成了两个功能。首先,它将简单阈值化引起的失真转换成更接近于本底噪声;其次,它整形了本底噪声,使其减小了低频空间的噪声,代价是增大了高频空间的噪声。此外,高图像频率被人眼的原始分辨率过滤,因此一旦这些点足够小(或图像足够远),大多数的高频噪声几乎是不可见的。

结果是,阈值化产生的严重失真变得良性了,高通本底噪声。这里的良性,意思是影响是可被接收的,虽然它不是真的本底噪声,因为系统没有被抖动。噪声仍然与信号交织在一起,呈现出音调的行为特征和其它视觉假象。然而,视觉结果是好的。

半色调系统是一个噪声整形的例子。降低字长引起的噪声被整形,因此它不会被降调,但高通不是这样。通常,噪声整形系统有着任意长度的字长,且不需要让他们的噪声传递函数通过高通滤波器。然而,对绝大多数这样的系统而言,包括PDM系统,有着1比特输出和高通噪声传递函数。

过采样

由于减小字长而引起的噪声是巨大的(在1比特系统中的噪声大约比在16比特系统内的高90dB)。噪声整形将噪声分布在了一个高带宽,但并没有减小整体的噪声等级。在一个图像应用中,图像的大多数内容是低频的,将噪声推至高频(它可能会掩盖高频)并不算是个问题。然而在音频领域,中频和高频非常重要,且非常容易被听见。如果字长减小到1比特,想要获得可接受的结果简直是不可能的,甚至在有噪声整形的情况下。结果是高频段噪声很容易被听到。

问题的答案是使用更高的采样速率。这提高了系统的带宽,在可闻范围以上创造了新的频谱。噪声整形因此能被用来将噪声推入更高的频谱中。有用的是,更多的空间被创造出来以转储噪声。且由于频谱在可闻范围以上,噪声是听不见的。

更高速的采样频率能通过以下两种方式来实现:

  • 在刚开始就使用更高的采样频率。这个方法被用在PDM麦克风上,典型的采样速率是3MHz。
  • 内插一个已知信号,这个信号在低速率被采样。这个方式被许多DACs使用,典型的输入采样频率是48KHz。这也被用在这样一种音频系统中,其内部用PCM代表音频,但用PDM格式将音频传输给外部设备。

现在我们来看看这两种方式的更多细节。

PDM麦克风

PDM麦克风也被称作数字麦克风,包括如下部分:

  • 一个麦克风要素。典型的是一个驻极体容器。
  • 一个模拟预放大器。
  • 一个PDM调制器。
  • 接口逻辑。

从麦克风要素来的模拟信号首先被放大,然后在PDM调制器内被高速率采样和量化。调制器包含量化操作和噪声整形;输出是高速率的单比特。噪声整形确保音频频段内的相关噪声是相对低的,虽然噪声在音频频段以上的噪声是相对高的。接口逻辑能够接收一个主时钟且传输已被采样的比特流。

麦克风连接的设备提供主时钟给PDM麦克风。时钟频率定义了系统的采样频率,同时定义了在数据线上传输的比特率。虽然没有定义标准,典型的过采样率是64。所以为了获取24KHz的带宽(与一个采样频率是48KHz的PCM系统相比较),主时钟的频率需要3.072MHz。

数据线上的1比特数据在主时钟的上升沿或下降沿时被认为有效。大多数PDM麦克风支持双声道操作,一个麦克风在主时钟的上升沿时数据线上的数据有效,第二个麦克风在在下降沿时有效。在非有效边沿,数据输出是高阻抗。两个麦克风的数据线能被简单地连接在一起。PDM接收器有能力分离两个比特流。

DACs和PCM-PDM转换器

在很多商用DACs里和可以将PCM转换成PDM的系统内,处理过程与PDM麦克风有轻微的不同。信号已经在低频被采样,且是PCM格式的。为了获取能够使噪声整形有效的高采样频率,信号必须首先被内插。然后它的字长在噪声整形器内被减小到1比特。

内插是一个数字滤波操作,指的是在有效的采样值之间生成额外的采样值,以增加有效的采样频率。对PDM应用来说,过采样速率典型值是64;意味着每个输入采样之间有63个新的采样值。

PDM调制器

PDM调制器(在PDM麦克风内)或噪声整形器(在PCM到PCM转换器内)有能力产生在通带内有着非常低噪声的1比特信号。调制器的复杂度由它的阶数来表示。调制器的阶数等于它包含的内插的数量(聚合节点);通常,阶数越高,从通带到阻带的被整形的噪声就越激烈,噪声性能就越好。然而,更高阶数的调制器的生产和设计就越复杂;他们在确定的操作条件下变得更加不稳定;且他们在过载前的最大输入电平较低。由于没有工业标准,典型的PDM麦克风的调制器是4阶的。这在噪声性能和复杂度之间提供了很好的折衷。

下面是给定一个正弦波输入信号时,PDM调制器输出的时域和频域的视图。时域输出在两个电平之间以高速率切换。频域内,在x轴上通带从0扩展到0.5fs。在此之上是由过采样创建的频谱空间。在通带之上很容易见到猛烈的噪声上升。同样可见的是一个很小数量的三次谐波失真(峰值接近0.06fs)。

传输和处理PDM信号

一个PDM比特流是一个逻辑电平信号,典型切换频率在3MHz附近,快速边沿跳边。因此需要与任何其他快速信号一样去对待(例如SPDIF,或模拟视频)。重要的是使用高质量的同轴线缆和正确地终止信号。

如果一个信号想要被听到,就必须被转换成一种模拟格式。如果需要被处理或被测试设备分析,它需要被转换成PCM。在做这些事时也可以用PDM信号。

将PDM信号转换成模拟信号从原理上非常简单。1比特信号在频谱的低频部分已经包含了音频信号。所有要做的恢复工作就是一个低通滤波器。实践中,信号的快速切换的边沿需要认真设计模拟滤波器级数,但确实可以用这个方式来恢复非常高质量的模拟信号。

将PDM转换成PCM是更复杂的。采样频率需要用过采样因子来减少。这由一个叫做抽取的数字滤波过程来完成。抽取是内插的对应物:采样从信号内被移除以减小采样频率。重要的是1比特形式的在音频带宽以上的噪声不能被带入音频频段。抽取滤波器被设计成过滤掉这个噪声,使得基带音频信号完整无缺。抽取器的输出是一个在基带速率上的PCM音频流(无过采样)。典型地字长从1比特提升到了过滤期间有大约20个有效位。

性能

1比特系统非常成熟。虽然1比特系统有其固有的问题,特别是不能增加足够的抖动以完全线性化系统和消除噪声调制,尽管如此,它可以设计成一个有着卓越音频性能的系统。

PDM调制器通常是有专利的;因此其性能取决于设计。APx的PDM接口选项使用的调制器是4阶调制器再加上一个有着超过120dB图像/别名拒绝的6级插值/抽取滤波器。由此产生的系统的规格如下:

  • 过载前的最大输入电平:-6dBFS
  • SNR @ 1KHz, -6dBFS, 20Hz-20KHz, unweighted: 109dB
  • THD+N @ 1KHz, -6dBFS, 20Hz-20KHz, unweighted: -107dB
  • 三次谐波衰减@ 1KHz, -6dBFS: -116dB
  • 平坦度:20Hz-20KHz:优于±0.001dB

所有高阶PDM调制器在满标以下有一个最大输入电平。超过这个电平会导致调制器过载,导致噪声性能劣化。APx用户接口会指出调制器已经过载。

系统的THD+N性能有调制器的本地噪声决定。这里有一个很小的三次谐波失真。这是因为系统是未抖动的。

结论

PDM是一个高性价比的方式用来数字化运输音频,在单声道和或双声道内,通过一个时钟/数据对。尽管1比特形式有其固有限制,在认真设计的前提下,它也可获取极高的音频性能。APx PDM接口选项可以生成和分析PDM信号,极大地简化了PDM信号链的设计和所有方面的故障排除。

时间: 2024-11-07 16:42:21

AP系列文章——PDM麦克风的相关文章

《深入理解Java集合框架》系列文章

Introduction 关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framework, JCF)的资料却很少,甚至很难找到一本专门介绍它的书籍,这给Java学习者们带来不小的麻烦.我深深的不解其中的原因.虽然JCF设计参考了STL,但其定位不是Java版的STL,而是要实现一个精简紧凑的容器框架,对STL的介绍自然不能替代对JCF的介绍. 本系列文章主要从数据结构和算法层面分析

Jenkins pipeline 入门到精通系列文章

Jenkins2 入门到精通系列文章. Jenkins2 下载与启动jenkins2 插件安装jenkins2 hellopipelinejenkins2 pipeline介绍jenkins2 javahelloworldjenkins2 groovy入门jenkins2 pipeline入门jenkins2 pipeline高级jenkins2 Jenkinsfilejenkins2 multibranchjenkins2 Jenkinsfile和loadjenkins2 groovy脚本参考

saltstack之基础入门系列文章简介

使用saltstack已有一段时间,最近由于各种原因,特来整理了saltstack基础入门系列文章,已备后续不断查阅(俗话说好记性不如烂笔头),也算是使用此工具的一个总结.saltstack的前六篇文章主要讲述了saltstack的安装.远程执行.配置管理.数据系统以及jinjia模板等知识点,从第七篇往后的文章是一些使用saltstack的案例,包括系统初始化,rpm包以及源码安装等. 博客中saltstack系列的文章,适合初学者从零开始学习直到逐渐熟练使用.文章具有一定的连贯性,如果没有任

知识分享---EmberJs系列文章

JS前端框架之Ember.js系列文章 本文为文章索引,主要是罗列Ember.js的相关文章便于阅读. 基础篇 1. EmberJs之What|Why|HoW 进阶篇 高级篇

【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航

原文:[强烈强烈推荐]<ORACLE PL/SQL编程详解>全原创(共八篇)--系列文章导航 <ORACLE PL/SQL编程详解> 系列文章目录导航 ——通过知识共享树立个人品牌. 本是成书的,但后来做其他事了,就无偿的贡献出来,被读者夸其目前为止最“实在.经典”的写ORACLE PL/SQL编程的文章-! 觉得对你有帮助,请留言与猛点推荐,谢谢. [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) 本篇主要内容如下:第一章 PL/S

学习Hadoop不错的系列文章

1)Hadoop学习总结 (1)HDFS简介 (2)HDFS读写过程解析 (3)Map-Reduce入门 (4)Map-Reduce的过程解析 (5)Hadoop的运行痕迹 (6)Apache Hadoop 版本 2)Hadoop-0.20.0源代码分析 (1)Hadoop-0.20.0源代码分析(01) 地址:http://blog.csdn.net/shirdrn/article/details/4569702 (2)Hadoop-0.20.0源代码分析(02) 地址:http://blog

TCP和UDP通信(C#网络编程) ---- 系列文章

文章系列目录 C#网络编程系列文章(一)之Socket实现异步TCP服务器 C#网络编程系列文章(二)之Socket实现同步TCP服务器 C#网络编程系列文章(三)之TcpListener实现异步TCP服务器 C#网络编程系列文章(四)之TcpListener实现同步TCP服务器 C#网络编程系列文章(五)之Socket实现异步UDP服务器 C#网络编程系列文章(六)之Socket实现同步UDP服务器 C#网络编程系列文章(七)之UdpClient实现异步UDP服务器 C#网络编程系列文章(八)

Net设计模式实例系列文章总结

1 什么是设计模式 设计模式是对在软件设计过程中重复出现的问题提出了一种比较好的解决方案.正如一位专家所说:设计模式是对程序设计人员经常遇到的设计问题的可再现的解决方案(The Smalltalk Companion).GOF设计模式通常被认为是其他设计模式的基础,随着业务复杂度的增大,会不断涌现新的设计模式,而这些新的设计模式一般会以GOF模式理论为参照. 2 为什么要学习设计模式 从个人职业规划来考虑.一位软件开发工程师随着编码量的增加,开发经验的增加,软件理论理解的加深,会不由自主地想一些

项目活动的开展 - 项目管理系列文章

前面写的项目管理类文章,都是工作经验总结,对项目经理在相关方面的工作开展进行了分类总结整理.但是有读者说太理论化了,所以今天就写此文对项目管理过程工作中的内容做一下详细的描述安排. 一.计划: 项目经理一定要做好项目计划,最主要的是要做好范围.时间.质量和风险这四个主要的计划.这里对项目过程中的工具Project的使用做一个介绍(使用Project进行项目管理 - 项目管理系列文章).很多项目管理过程领域项都是通过Project进行的控制管理. 1.  范围计划: 范围计划最主要的是工作分解结构