首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
PDM与PCM区别与转换:数字音频编码与麦克风接口详解
📅 2026/9/28 16:41:45
✍️ 爱科研究院
👁 阅读 3,247
做音频的朋友肯定遇到过这个场景拿到一颗数字MEMS麦克风芯片手册里写着“PDM Output”旁边只标了一根CLK一根DATA而你手头的MCU音频外设明明写着支持I2SI2S里跑的又是PCM数据。PDM和PCM这两个缩写放在一起光看名字都容易让人糊涂——都是“调制/编码”到底差在哪我最早做嵌入式音频采集时也在这个问题上绕了几天后来搞明白之后发现核心就几件事PCM是给波形拍“快照”PDM是用脉冲的疏密来表示幅度。这篇文章我从原理、参数、应用场景到PDM转PCM的实操链路全部过一遍最后再提醒一个搜索时特别容易踩的坑音频PDM和工程数据管理PDM完全是两个世界。内容适合正在选型数字麦克风、做音频采集链路、或者对DSD/SACD好奇的工程师和DIY玩家。1. 先弄明白一个最容易被忽略的问题PCM和PDM到底在“编码”什么1.1 PCM用采样点和量化级硬生生描绘波形PCM的全称是Pulse Code Modulation脉冲编码调制。它的思路非常直接把连续的模拟信号每隔一个固定时间间隔取一个“快照”再把这个快照的电压值归整到最近的量化等级上最后用二进制表示出来。以CD常见的44.1kHz/16bit为例每秒钟采样44100次这个频率由奈奎斯特采样定理决定——要还原20kHz以内的音频采样率至少要达到40kHz以上每次采样的电压被切分成2的16次方也就是65536个量化等级每次采样输出16bit数据双声道每秒产生的数据量是44100 × 16 × 2 1411200bit约1.4Mbps所以一张CD音频算下来710MB左右才够放74分钟。PCM的“时间精度”完全由采样率决定“幅度精度”完全由位深决定。你可以把它想象成看电影时的一帧帧胶片帧率够高、色彩位深够大画面就连续且细腻。PCM最大的优点是直接、好理解、后续处理方便。绝大多数音频处理算法——EQ、混响、降噪、编解码——都默认输入是PCM数据。1.2 PDM靠单位时间内的脉冲密度还原信号PDM的全称是Pulse Density Modulation脉冲密度调制。它的编码单位只有一个bit不是0就是1没有第二个量化等级。但它的采样率非常高通常在2.4MHz到3.2MHz甚至更高。信号幅度大时这一串0/1里出现“1”的比例更高信号幅度小时“1”的比例更低。把这一串脉冲后续通过低通滤波器平滑一下就能恢复出原始模拟信号。你可以把PDM理解成用刷子刷墙想表达“浅灰色”不是先调好颜料再刷而是用白漆和黑漆快速交替点刷白色点越多视觉上就越白黑色点越多就越黑。PDM就是这个思路它用时间上的疏密密度来编码幅度完全不单独量化电压。这也是PDM和PWM最容易被搞混的地方PWM的脉冲宽度可变但周期固定PDM的脉冲宽度基本固定密度在变本质是两种不同的编码策略。1.3 本质区别一个量化幅度一个量化时间把两者放到一起对比就非常清楚了PCM在幅度轴上做量化用“高低电平多bit组合”表示幅值时间轴上按固定采样率取点PDM在时间轴上做极致细分只用0/1这个双电平但用单位时间内的脉冲密度表达幅值。所以PCM和PDM都不是“谁比谁高级”的关系而是编码维度不同。PCM用时间和幅度的二维网格把信号切碎PDM则是在超高时间分辨率下把幅度信息“藏”进密度里。这个差异引出了后面所有参数、接口和应用上的不同。2. 从参数和原理看差距为什么PDM能“以少胜多”2.1 三个关键指标对比采样率、位深与信噪比我习惯用一张表直观列出音频场景下最常见的参数对比对比项PCMPDM典型采样率44.1kHz / 48kHz / 96kHz / 192kHz2.4MHz / 2.8224MHz / 3.072MHz位深/位数16bit / 24bit / 32bit1bit每采样点每声道典型比特率44.1k×16705.6kbps2.8224MHz×12822.4kbps幅度量化方式多bit等间隔量化0/1密度调制信噪比来源量化位深决定理论上限调制器阶数过采样率噪声整形决定接口复杂度I2S/TDM/Audio Codec通常带MCLKCLKDATA两根线可时分复用解码处理直接做DSP运算必须先抽取滤波转成高bit PCM你可能会疑惑PDM每采样点只有1bit为什么能做到90多dB甚至更高的信噪比这不科学啊。关键在于它的过采样率极高。一个2.8224MHz的1bit流折合中等码率的PCM来看单通道数据量并不算小。实际上PDM并没省数据量它只是把量化的“深度”换成了时间上的“密度”再用噪声整形把量化噪声推到人耳不敏感的高频段。2.2 噪声整形是PDM的底牌PDM的核心技术叫Delta-Sigma调制国内常写成Σ-Δ或德尔塔-西格玛。它里面有个环路滤波器每一拍会根据输入信号与反馈信号之间的误差决定输出0还是1。这个反馈回路有个非常关键的作用量化噪声不再均匀分布在全频段而是被“挤出”到高频段。人耳对中低频更敏感对高频容忍度高所以即使PDM标称只有1bit经过噪声整形后的带内信噪比甚至可以优于同等bit数的普通PCM。我以一个常见的一阶Sigma-Delta调制器举例输出逻辑可以简化为error input_sample - output; if (error 0) { output 1; } else { output -1; // 数字上记为0 }这个累加器加反馈的循环每拍都尽量让输出的0/1序列平均值逼近输入信号。经过低通滤波后序列平均值就是信号的近似重构。实际芯片里的调制器通常是二阶、三阶甚至更高阶环路结构更复杂但思想不变。这也是为什么在同等成本下很多ADC芯片愿意用Delta-Sigma结构高过采样率噪声整形可以在普通CMOS工艺上实现很高的音频信噪比不需要像传统逐次逼近型ADC那样做高精度电容匹配。2.3 PCM和PDM各需要什么硬件接口MCU或SoC里的PCM音频接口大家比较熟悉最常见的是I2SBCLK位时钟决定每秒传输多少bitLRCLK / WS左右声道选择频率等于采样率DATA串行传输PCM数据。如果要多路麦克风TDM模式可以在一条DATA线上按时隙传多路数据但主控侧需要支持TDM。PDM麦克风的硬件接口要简单得多CLK由主控或音频Codec提供频率通常2.4MHz或3.072MHzDATA输出0/1脉冲流有些双麦模组用一根DATA线时分复用左右声道靠CLK低电平期间的电平状态识别是左麦还是右麦。从PCB布线看PDM麦克风非常友好——不需要模拟线缆、不需要隔直电容、走线可以稍微长一点也不容易引入模拟噪声。这直接影响了MEMS麦克风市场的格局大量手机、平板、智能音箱里的数字麦克风都选择PDM输出把最靠近声源的信号直接数字化抗干扰能力远超模拟驻极体。3. 应用场景对照手机麦克风、DSD、数字音频链路怎么选3.1 PDM在MEMS麦克风和DSD里几乎不可替代PDM最大的主战场就是数字MEMS麦克风。过去模拟麦克风输出的是模拟电压信号在PCB走线过程中容易被高频干扰侵入尤其是射频干扰和解调后的音频噪声。PDM麦克风内部集成了Sigma-Delta调制器直接在麦克风内部完成数字化输出端只有CLK和DATA抗干扰能力明显更强。典型产品形态包括手机/平板顶部的双麦或四麦阵列用于通话降噪和指向性拾音智能音箱环形麦克风阵列PDM多路数据通过TDM时分复用接到主控DSP会议终端、耳机、助听器中的微型拾音方案。另外很多Hi-Fi玩家熟悉的DSD本质上就是基于PDM的1bit音频格式SACD光盘里存的就是PDM数据流DSD64采样率正是CD的64倍也就是2.8224MHz。DSD的听感争议先不谈但它确实是PDM在消费音频里的另一个著名应用。3.2 PCM是存储、传输与算法处理的主力PCM的应用场景更是无处不在WAV、FLAC、ALAC等音频文件里存储的是PCM数据FLAC只是对PCM做了无损压缩蓝牙A2DP协议里传输的是PCM无论是SBC还是AAC、LDAC编解码器的输入输出都是PCMUSB音频类设备UAC也跑PCM几乎所有电脑喇叭、外置声卡、数字功放的内部链路都以PCM为核心不管是麦克风采集的PDM还是ADC采集的模拟信号最终进入DSP做降噪、回声消除、自动增益控制时都要求先变成PCM。所以你会看到一个很常见的系统架构PDM麦克风 → 主控内部PDM控制器 → 硬件抽取滤波 → PCM数据 → DSP算法 → 蓝牙/文件/USB。3.3 从实际产品看PDM和PCM是怎么共存的我拿自己做过的一个降噪耳机方案举例板子上有四颗PDM麦克风采集环境噪声主控是高通QCC系列蓝牙芯片内部PDM接口直接把四路PDM转为PCM再交给ANC算法。用户听到的音乐来自手机通过蓝牙解码后也是PCM数据。整条链路里PDM只出现在“麦克风到主控”这一段之后全部是PCM的天下。把这个结构套到绝大多数产品上都成立——PDM负责前端采集PCM负责后端传输与计算。如果你在产品选型时卡在“到底用PDM还是PCM”正确的问法其实是模拟转数字那一步是接受PDM输出还是需要I2S输出的Codec芯片直接给PCM。4. 项目里最常做的动作把PDM转成PCM4.1 为什么MCU/DSP里几乎都要先做转换很多主控芯片尤其是一些低成本MCU并没有硬件PDM控制器。这时接到PDM麦克风后最直接的做法是MCU用定时器输入捕获或GPIO中断把PDM的0/1流采回来然后软件实现抽取滤波转成16bit或24bit的PCM数据再做后续算法。这个过程不复杂但细节不少。PDM流本质是过采样后的1bit信号里面除了音频信息还有大量高频整形噪声。要得到可用的PCM必须经过两步抽取Decimation把2.4MHz以上的高采样率降到48kHz/16kHz等常用采样率低通滤波滤掉高频量化噪声同时防止抽取后混叠。这两个操作通常用一个抽取滤波器完成。按64倍抽取率算2.8224MHz ÷ 64 44.1kHz按128倍算3.072MHz ÷ 128 24kHz对应不同的目标采样率。4.2 PDM转PCM的处理链路和代码简化实现在正式实现时工程上最常用的是CIC滤波器。CIC不需要乘法器只用积分器和梳状器非常节省MCU资源。以下是一个简化结构// 假设输入pdm_bit为0/1输出pcm为有符号数 int integrator 0; int comb_history 0; int pcm 0; for (int i 0; i DECIMATION_RATE; i) { int sample pdm_bit[i] ? 1 : -1; integrator sample; // 积分器 } pcm integrator - comb_history; // 梳状器 comb_history integrator;实际CIC会做多级级联并且抽取后还要再经过一级补偿FIR滤波器来修正通带纹波。如果你想快速验证转换效果用Python加上SciPy可以几条命令就出来import numpy as np from scipy.signal import decimate # pdm是原始0/1数据流转成1/-1便于计算 bits np.where(pdm_stream 0, 1.0, -1.0) # 64倍抽取FIR方式滤波 pcm_float decimate(bits, 64, ftypefir, zero_phaseTrue) # 转成16bit整数注意幅度归一化 pcm_int16 (pcm_float * 16000.0).astype(np.int16)不过说实话生产环境中我还是建议优先使用主控芯片自带的硬件PDM控制器比如STM32的DFSDM、NXP的SAI外设或高通的PCM/PDM接口。硬件抽取滤波稳定又不占CPU而软件CIC虽然省成本但在高采样率和多路麦克风场景下容易把CPU吃满。4.3 我在转换过程中踩过的坑和参数选择这里分享几个真实踩过的坑都是文档里不会写的坑1CLK频率和期望采样率没算对。PDM麦克风的CLK频率通常是外部输入的。比如你希望最终输出16kHz的PCMCLK给2.048MHz并做128倍抽取就是16kHz做64倍抽取却是32kHz。我见过有人把CLK频率配成2.8224MHz然后软件按64倍抽取得到的是44.1kHz结果算法里采样率写48kHz导致所有频点漂移。建议先把抽取率和目标采样率写进代码的宏定义里配套一个自检函数打印实际采样率。坑2CIC滤波器的增益飞了。CIC滤波器的增益和抽取率强相关不做归一化直接输出PCM数据会爆头或全是噪声。正确做法是在滤波后除以抽取率的N次方N是级数再做个动态范围归一化。比如64倍抽取、3级CIC时增益约64的3次方这个放大倍数必须补偿掉。坑3左右声道数据方向搞反。多颗PDM麦克风复用一根DATA线时左右声道切换是靠CLK低电平期间DATA的电平。有些芯片是高电平是左声道有些是低电平是左声道这个在Fusion算法里左右颠倒不会报错但波束方向会完全反掉。调试时一定要对着规格书确认。坑4PDM信号线布线不当导致串扰。PDM接口虽然抗干扰但同一组CLK/DATA离I2S或SPI线太近高频时钟耦合会造成毛刺。软件上表现就是偶尔采样到极端脉冲导致爆音。做PCB时CLK和DATA要包地最好远离电源开关节点。5. 别看到“PDM”就以为是音频另一个PDM是产品数据管理写到这里提一个现实问题最近搜PDM相关资料时会搜出一堆“PDM二次开发”“SW2023的PDM在哪”“PDM文件怎么打开”的页面。这些搜索词指向的完全是另一个PDM——产品数据管理Product Data Management和音频里的脉冲密度调制没有任何关系。5.1 两种PDM的区别在哪里领域PDM全称作用音频Pulse Density Modulation数字音频编码方式工程/制造Product Data Management管理产品设计数据、版本、BOM、审批流程工程领域的PDM系统常和CAD软件绑定比如SolidWorks的PDM插件。它解决的是设计图纸版本混乱、多人协同编辑冲突、零件库管理问题。而音频领域的PDM是芯片管脚和信号链里的事情常见于MEMS麦克风数据手册、DSD技术文档、主控外设说明里。我看到“pdm历史记载乱码”这类搜索词多半是PDM文件与本地软件关联错误或字体编码问题属于工程数据管理PDM的知识范畴。音频PDM不存在“打开文件”的概念因为它是实时信号流格式不是文件容器。5.2 搜索时如何快速判断自己该看哪类资料如果你是搞音频的看到下面这些关键词请放心这是同一领域PDM microphone、MEMS麦克风、PDM接口、DSD、Sigma-Delta调制、抽取滤波、数字麦克风阵列。如果你遇到的是下面这些说明你进入的是工程PDM领域PDM系统、PDM二次开发、SolidWorks PDM、PDM文件检入检出、BOM管理、CAD数据管理、PDM历史记录、PDM工作流。这个区分在选型和工作协同里非常重要。我在一个硬件项目群里见过有人问“PDM怎么转PCM”下面有人回答“你找研发提需求改PDM流程”……两个PDM混在一起讨论一晚上都没解决问题。所以你在翻阅资料前先确认语境能省下大量时间。6. 我的一些实操建议按项目阶段整理给你最后按项目阶段给一套我的个人操作习惯不一定适合所有团队但至少能帮你避开我走过的弯路。在选型阶段先想清楚PDM要接到哪里如果你的主控只有I2S没有硬件PDM外设那软件解码PDM的工作量可能比想象中大尤其是做多路麦克风阵列时。建议优先选带硬件PDM控制器的平台或者直接在麦克风和主控之间加一颗PDM转I2S的Codec比如TI的TLV320ADC系列、ADI的ADAU7118等。这样主控见到的就是干净的PCM数据开发效率高很多。在调试验证阶段我习惯先把PDM原始流直接保存成二进制文件再用Python离线解析确认麦克风出来的是有效音频而不是时钟噪声。把硬件问题和算法问题隔离能省掉大量相互甩锅的时间。你可以在示波器上抓CLK和DATA看DATA是否有0/1切换密度随声音变化的规律这个信号能直观验证PDM链路是否工作。在量产阶段一定要对PDM麦克风的工厂测试项重视起来每颗麦克风的调制器性能有偏差同一型号在相同声压下输出的脉冲密度统计特性可能不同。批量校准时要同时测低频响应和高频噪声不能只测一颗样片就定校准表。还有个小技巧如果做的是需要远程会议或语音助手的设备麦克风选PDM输出通常比模拟驻极体省心因为你不必再处理模拟地的噪声问题。但千万不要为了布线方便把CLK时钟走得太远过长的时钟线会产生反射导致DATA采样时机错乱现象就是偶发爆音和忽大忽小。DSD这块补充一句如果你在做Hi-Fi产品不要轻信“DSD一定比PCM好听”或者“PCM比DSD动态更大”这类绝对化结论。从编码上看DSD是PDM思想在消费音频上的应用但它和PCM的转换损失往往出现在格式转换滤波器上而不是编码本身。产品设计时真正该关注的是整条信号链的噪声和失真而不只是纠结文件格式标签。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/9/28 16:41:45
企业内网AI助手实战:基于安全浏览器的侧边栏智能体架构与落地
2026/9/28 16:41:45
Model-Optimizer:面向RTX 4060的AI模型压缩与GPU部署方法论
2026/9/28 16:36:45
Superpowers:本地化AI开发协作者的架构与实战部署
2026/9/28 18:21:53
飞猪帮帮交付可用率提升70%,携程问道还停在聊天框:三大OTA AI Agent谁在认真做事
2026/9/28 18:21:53
从零手写 ClaudeCode 实战笔记(2)Tool Use:用 dispatch map 搭出可复制的工具调用骨架
2026/9/28 18:21:53
用 TaoToken 统一 Key 抓取桌面窗口信息:句柄、类名与缩略图 API 实战
2026/9/28 18:21:53
Solr 深度分页实战:用 cursorMark 替代 start 翻页的配置与验证
2026/9/28 18:21:53
深入解析 MCP Server 实现原理与实战开发指南:TaoToken 统一 Key 接入配置骨架
2026/9/28 18:16:53
小红书全自动图文SOP:用 Openclaw 打通飞书多维表格与 TaoToken 配置实战
2026/9/28 0:04:25
新手从零搭建网站促销活动策划避坑指南:3个方案费用全拆解
2026/9/28 0:04:25
网站被黑挂马?3步图解步骤搞定软件介绍下载网站建设安全
2026/9/28 0:04:25
国内可以做的国外兼职网站进阶技巧
2026/9/28 2:37:38
网站建设的英语怎么说?别只背单词,看完这套安全完整流程才敢上线
2026/9/28 5:00:42
新手入门看这篇:建设网站加盟避坑指南与SEO实操
2026/9/28 8:17:28
论文AIGC疑似度是什么意思?想查论文AI率有哪些免费工具?