ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于ADAU1452的ANC主动降噪方案:从Demo到量产的实战经验

基于ADAU1452的ANC主动降噪方案:从Demo到量产的实战经验 第一次在EVAL-ADAU1452上用SigmaStudio把ANC Demo跑通的时候我是有点飘的参考麦克风一接入测试音响放着80Hz的嗡声误差麦克风频谱立刻塌下去二十几个dB软件里的收敛曲线看着非常漂亮。后来我拿着这套验证过的架构去做真实产品才发现当初那个Demo能跑通靠的是官方评估板毫无保留的供电、时钟和接口设计以及实验室里一成不变的温度和声场。真正从Demo往产品走硬件选型、性能优化、产线一致性的问题一个接一个冒出来每一步都能让项目周期直接翻倍。这篇文章就把我做基于ADAU1452的ANC方案时踩过的坑、验证过的选型思路、以及最后怎么把性能做到能批量交付的经验完整整理出来。打算碰ANC产品的硬件工程师、音频算法工程师或者正在评估ADAU1452这颗SigmaDSP能不能扛住自家项目的朋友都可以拿这份经验当参考。1. 想清楚再动手ADAU1452在ANC方案里的真实定位1.1 为什么不是专用降噪IC而是选一颗DSP为主的芯片这两年市面上专用ANC芯片并不少从低功耗的模拟反馈降噪芯片到集成ANC的蓝牙SoC都有。它们的优势非常明显BOM简单、外围极少、功耗低很多还把滤波器系数做成工具一键调好适合耳机这种对成本和续航极度敏感的产品。但它的代价是结构固定能调的旋钮有限更高阶的个性化降噪、多麦克风融合、多区域降噪往往做不进去。ADAU1452走的是完全相反的路子。它本质是一颗200MHz的SigmaDSP内核加丰富数字音频接口的处理器本身不限定你是做前馈、反馈还是混合降噪自由度全交给工程实现。一个典型差异是若你需要在头枕音箱场景里同时跑道路噪声前馈、发动机阶次噪声前馈和车内语音补偿三个自适应滤波器专用IC很难塞进去而ADAU1452只要代码空间和数据RAM规划得当就可以。耳机产品用ADAU1452显得杀鸡用牛刀但车载、家居、工业降噪这类对算力、通道数和灵活性要求高的场景它反而比专用IC更合适。我在选型时还特别看了一点ADAU1452的开发环境是SigmaStudio图形化拖拽配置音频工程师不需要精通底层C语言就能把滤波器、混音器、动态处理器搭起来这在项目初期验证算法假设时非常快。做产品时用图形化工程也不影响后续用脚本和参数接口做自动化调整这点后面会细说。1.2 ANC信号链路参考麦、误差麦、扬声器和两条关键路径理解ADAU1452在ANC里扮演的角色先要搭一遍完整信号链。以最常见的单通道前馈降噪为例参考麦克风放在噪声源一侧采集的是即将传到人耳的噪声x(n)DSP里的自适应滤波器W(z)把x(n)加工成一串反相信号y(n)送到扬声器播放误差麦克风放在人耳附近持续监听消噪之后剩下的残余噪声e(n)并把这个误差信号回传给W(z)驱动滤波器系数实时更新。目标是让e(n)的能量越来越小直到听觉上感知不到。这里面有两段路径最容易被新手忽略。第一段是次级路径S(z)从DSP输出数字信号开始经过DAC、功放、扬声器声辐射、空气传播到误差麦克风、再经ADC采样回到DSP的总响应它不是纯延迟还包含幅度和相位畸变自适应更新时必须用S(z)的估计值S_hat(z)做滤波否则W(z)根本不知道扬声器真的把这个信号变成了什么声音轻则收敛慢重则直接发散。第二段是因果约束从参考麦克风听到噪声到扬声器放出反相波形这段总延迟必须小于噪声从参考麦自然传播到误差麦的时间否则你输出得再精确也是在堵漏而不是提前消除。这就是很多Demo只在实验室转得动、一上车或者戴起来就失效的原因。2. 硬件选型这四样东西比算法更早决定降噪上限2.1 模拟前端选型别只盯着THDN先看ADC/DAC的群延迟ADAU1452本身没有片上ADC和DAC它对外只有串行音频接口模拟世界必须靠外部模拟前端或编解码器接入。很多人在这一步最容易犯的错是拿一颗高保真音频Codec直接怼上去THDN漂亮得不行但实际降噪效果很差根源就在群延迟。标准音频Codec为了追求高动态范围会在ADC里做多级抽取滤波DAC里做插值滤波一进一出累积的延迟能达到数毫秒。ANC系统的因果余量通常只有几百微秒到一两毫秒这几毫秒完全会把有效降噪带宽压到趋近于零。所以选模拟前端时要优先查两件事一是ADC和DAC各自的群延迟二是这颗芯片有没有低延迟模式或Bypass路径。ADI在ANC场景里常用ADAU1772或ADAU1787这类自带DSP又强调低延迟的Codec另一条路是用通用音频ADC加DAC但必须提前把群延迟算进次级路径里同时评估它是否仍在因果窗口内。选型号时我的习惯是列一张表把群延迟、SNR、通道数、采样率支持、TDM/I2S格式是否齐全都放在一起对比。项目里实测过的几颗芯片群延迟差别非常明显但表现好的未必是价格贵的关键是它到底适不适合跑在ADA1452的TDM总线上。顺带提醒如果选带模拟输入的Codec输入增益范围和麦克风偏置电压也要一起确认很多应用工程师在选型阶段漏掉偏置最后只能靠外部搭电路补。2.2 麦克风选型灵敏度、相位一致性和偏置电路ANC系统里麦克风不是普通录音它同时承担感知噪声和检验效果两个任务选型要把两点放第一位。第一是灵敏度的一致性。参考麦克风和误差麦克风如果灵敏度差得太多自适应算法会用失真的输入做计算降噪后的残余噪声频谱会出现奇怪的凸起。麦克风本身存在批次一致性同一型号也会有正负几个dB的分布产品BOM上最好直接指定灵敏度档位或者在产线上做增益校准。我遇到过整批产品降噪深度忽高忽低最后排查就是SMT来料混了两批灵敏度差异明显的MEMS麦克风。第二是相位特性。麦克风前腔和后腔的设计会影响高频相位尤其做双麦克风混合降噪时两只麦克风在不同频率下的相位偏差会让算法无所适从。建议优先选声学响应一致性好的全向MEMS麦克风并且尽量让两只麦克风在PCB上的声学路径保持一致不要一个靠近出音孔、一个埋在结构深处。偏置电路方面驻极体和MEMS模拟麦克风都需要偏置电压这个电压的纹波会直接进入音频通路。一般建议在麦克风偏置引脚加RC去耦如果项目空间允许用专用的低噪声麦克风偏置IC会省心很多。2.3 电源、时钟与地平面藏在底噪里的三个隐形杀手ADAU1452的供电分为内核1.2V、IO 3.3V和模拟部分电源麻烦的是它常与D类功放、电池充放电、甚至无线模组共处一块主板开关电源噪声很容易通过地平面和电源走线窜进模拟前端。对付这个问题常规做法是数字电源和模拟电源分区模拟供电用低噪声LDO尽量避开DC-DC的开关频率及其谐波。如果必须用DC-DCDC-DC的电感布局要离编码器远一点开关节点不要经过模拟地平面。时钟是更隐蔽的坑。ADAU1452和外部Codec之间的音频主时钟必须严格同步实际项目中常见的是用一个低抖动振荡器输出12.288MHz或24.576MHz让DSP和Codec共用同一时钟源。若两颗芯片各用自己的晶振即使标称频率一样实际误差也会让I2S/TDM数据流出现周期性滑码听感上就是持续不断的杂音ANC也会时好时坏。地环路则是接了USB充电线后底噪立刻抬高的典型原因处理办法是把数字地、模拟地单点连接USB屏蔽层只在接口处接机壳地不要贯穿整块PCB。3. 从官方Demo到自研硬件真正要改掉的五件事3.1 评估板能跑通是因为它替你把病根藏起来了EVAL-ADAU1452官方评估板的设计目标是最大限度方便调试不是给产品做模板。它上面有丰富的接插件、电平转换、外部存储、独立稳压和多组电源跳线走线也按实验室环境优化过。照搬到产品上成本和面积都不可接受更严重的是评估板上几组默认的退耦和电源滤波参数是固定不变的产品换了电池供电或Type-C输入后原本被掩盖的电源纹波和地弹就会重新显形。我做自研主板时第一步不是画原理图而是把评估板图纸里所有和产品无关的调试电路先删掉再把关键电源树按产品形态重构DSP周围保留足够的退耦电容模拟前端电源和数字电源按前面说的分区处理。很多团队喜欢先抄评估板再慢慢删结果删到最后总有几个多余的器件残留白白增加RF干扰风险和成本。3.2 输出级与功放别让反相波形在关键时刻削顶评估板上的音频输出通常只接耳机或示波器负载很轻。到了实际产品扬声器功率、功放选型、电源余量全都要重新算。ANC系统的输出波形不是稳态正弦而是叠加了环境噪声的实时反相信号低频噪声大的时候峰值可能比平均值高出几倍。如果功放或DSP输出级在峰值处削顶产生的失真分量会被误差麦克风采到自适应算法会把这些失真当作残余误差继续优化结果越调越糟最后变成反复震荡的啸叫。选功放时除了功率和效率还要注意功放的信号延迟。D类功放的调制方式和输出滤波器会引入微秒到几十微秒的延迟这个延迟进次级路径S(z)之后会直接削减相位裕度。项目里我对比过AB类和D类功放的效果在相同布局下延迟更小的AB类功放明显更容易收敛出深度。如果因为散热和效率原因必须用D类建议选延迟小的型号并且在次级路径辨识时把功放延迟完整捎进去。3.3 启动时序与EEPROM自举第一版样机最常见的哑巴问题ADAU1452支持从外部EEPROM或SPI Flash自举加载程序产品化时必须用它否则每次开机都要靠上位机手动灌程序没法交付。但这个自举过程藏着不少细节。我遇到过的情况是硬件一切正常单独连SigmaStudio能出声一断电重新上电就完全静音。排查到最后发现问题出在启动时序上——系统上电时外部Codec的模拟部分还没稳定DSP自举出来的程序已经开始跑I2C配置命令发出去直接落空。解决办法是硬性规定上电顺序先给DSP和Codec供电等电源稳定再释放DSP复位DSP启动后延时一段时间确保低频晶振起振和Codec初始化完成最后再解除音频通路静音。如果产品里有功放最好还用一颗GPIO控制功放的使能脚让DSP在自举完成之前保持功放关断这样能避免上电瞬间扬声器发出噗的爆音。EEPROM烧录时还有个容易被忽略的点自举映像除了DSP程序还包含SigmaStudio工程里的算法参数。如果程序更新过但EEPROM没重新烧录产品开机的行为会和开发环境里完全不一样。所以工程管理上要把SigmaStudio导出的自举文件作为受控产物跟着固件版本一起归档。3.4 模拟输入端的静电和射频防护自研硬件不像评估板那样有专门音量旋钮和屏蔽罩麦克风口、耳机口、充电口都是直接暴露在用户环境里的尤其麦克风走线细且长静电和射频骚扰很容易从这里进。第一版样机在秋冬干燥季节出现过麦克风通道偶发咔哒声后来查是连接器附近没有加TVS管人体静电打进来直接干扰了ADC输入。麦克风偏置、音频输入、功放输出这几条线上加TVS或压敏电阻PCB上预留EMI滤波器位成本很低但能省掉大量后期整改时间。3.5 机械结构与声学腔体硬件选型绕不开的第五个器件ANC的性能高度依赖声学结构这是做电子的人最容易忽视的。扬声器后腔、前腔开孔、麦克风安装位置、硅胶套密封性每一个变化都会改变次级路径S(z)。所以在硬件选型阶段结构工程师就应该和电子工程师一起定麦克风位置和扬声器朝向而不是等PCB画完再去找个地方放麦克风。如果参考麦和误差麦距离太近声学传播时间太短留给DSP处理的时间窗口几乎为零算法再强也救不回来。4. 性能优化从能降噪到降得像样4.1 次级路径辨识一切优化的地基次级路径S(z)辨识质量决定了整个ANC系统能稳定工作到什么程度。标准做法是在SigmaStudio里让DSP发出一段白噪声或扫频信号经过功放和扬声器放出来同时用误差麦克风录取信号再离线算出扬声器到误差麦克风之间的系统响应把得到的FIR系数装回S(z)估计模块。这个操作听起来简单实际做的时候要注意三点。第一辨识环境要安静环境噪声会直接污染频响估计建议在消声箱或安静房间里做第二扬声器不能过驱动扫频信号幅度要控制在功放线性区内否则测出来的S(z)带着谐波失真第三产品状态要固定戴着耳机测和放在桌上测得到的S(z)差别很大。量产时不能指望每个用户都跑到消声室所以产品里要预留适应真实声场的能力比如通过误差麦克风持续监测在系统失稳时自动降低增益或冻结更新。4.2 自适应滤波器的三个旋钮阶数、步长与泄漏FxLMS类的自适应滤波器有三个参数最常调调好这三项降噪性能基本就稳了。阶数决定滤波器能建模多少声学路径细节。阶数太低低频降噪深度不够阶数太高占用的数据RAM和系统算力都会上升。对于单通道前馈ANC几百到上千阶是常见区间具体取决于采样率和需要覆盖的频段。我的经验是先给足阶数让系统跑出性能上限再逐步降低到80%性能、50%资源的水位上给量产留余量。步长是收敛速度与稳定性之间的天平。固定步长做大了收敛快但容易发散做小了稳定但适应慢。实际工程里几乎都会用归一化NLMS让步长随参考信号能量自动调整。微调时可以用一段持续噪声做测试观察误差麦克风信号从启动到稳定的时间如果出现周期性起伏往往是步长太大接近临界值。泄漏系数用来防止数值误差长时间累积导致滤波器系数漂移设置太小对性能影响不明显但能显著提升长时间运行稳定性。尤其是产品在低温环境下扬声器和结构件特性发生漂移适当加大泄漏等于给系统加了一个安全垫。4.3 稳定性裕度与算力分配别把资源全砸在一个通道上多通道产品最容易犯的错是把所有算力都分配给某一个看起来最重要的通道结果其他通道因为滤波器阶数不足降噪量退化甚至互相干扰。ADAU1452的算力是有限的规划时要先列清楚每个通道需要覆盖的频率范围和降噪深度目标再反推每路所需的滤波器阶数最后看程序RAM和数据RAM够不够。不够时优先保低频段高频段更多依赖无源隔音和结构优化这是ANC本身的物理规律。稳定性保护方面比较实用的是在算法里加入发散检测实时监测误差麦克风的能量变化率如果短时间内能量激增判断为自适应发散立即冻结滤波器更新或者把输出增益降到安全值避免扫频啸叫直接伤害听力和扬声器。这个机制成本极低在Demo里没人会在意但产品反馈里有用户戴着耳机开机、误触音量键导致声压突变时它能救回整台设备的口碑。4.4 用数据说话性能参数怎么测、怎么验收ANC性能不能靠听着挺安静来验收。我惯用的方法是用人工头或声学测试夹具在标准噪声源下分别记录ANC关闭和打开时的误差麦克风信号用REW或Smaart做1/3倍频程频谱对比算出每个频段的插入损耗。通常重点看50Hz到500Hz的低频降噪深度这是主动降噪的主战场1kHz以上能压住一些但别抱太高期望。还要测极限工况最大噪声输入不削顶、系统连续运行数小时不漂移、不同温度下不自激。这些测试数据同时也是向工厂端传递验收标准的重要依据不然产线上没法判断一台设备是不是合格。5. 量产之前的排雷一致性、标定与工程管理5.1 产线标定不能省每台设备的S(z)都不一样同一个模具、同一条产线出来的产品声学特性也不可能完全一致。麦克风灵敏度的出厂分布、扬声器的顺性和磁路差异、外壳扣合时密封胶的微小偏差都会导致每台设备的次级路径各不相同。如果不做标定同一套算法参数放在A设备上降噪深度25dB放到B设备上可能因为相位裕度不足而只剩5dB甚至直接啸叫。量产方案里要设计一条标定工序设备装进标准声学治具后播放预设扫频信号采集误差麦克风响应计算出这台设备专属的S(z)和麦克风增益校准因子写进板载EEPROM的某个参数区块。DSP启动时先读校准参数再加载ANC算法。标定工装的设计比想象中更关键治具的密封性、扬声器位置、麦克风到标准声源的距离都必须固定否则标定值本身就是错的。如果产品有左右两个通道两个通道的标定串音也要测清楚防止互相污染。5.2 返修与拆装带来的声学漂移品质部门最容易忽略的问题生产返修是ANC产品的一个隐藏雷区。一台设备在产线上降噪不合格维修人员拆开外壳、重装之后声学腔体和密封状态已经和标定时不一样如果直接重新检测可能还是不合格。最简单的办法是把返修必须重新执行声学标定写进生产流程而不是让维修人员只换料不换参。这听起来是流程问题实际上是产品架构问题因为如果标定工装只在产线首端放了一台返修线没有那返修之后的合格率根本没人能保证。5.3 EMC/ESD整改在试产阶段就要开始测而不是等认证很多团队是把产品设计完了才送去做EMC预测试结果在实验室发现辐射超标再回头改PCB、改结构周期非常难受。ADC/DAC时钟走线、D类功放输出、I2S总线都是潜在辐射源建议在自研硬件第一版就打样后立刻做一次预扫描至少确认几个典型频点没有大问题。麦克风线和音频线缆优先走内层两侧包地必要时加串联磁珠和RC滤波。ESD方面前面提到的TVS要放在连接器入口静电泄放路径要短最好直接到机壳地。别小看这些ANC产品的模拟灵敏度高很多在实验室里正常的板子一到环境复杂的展会现场就出现杂音原因就在这。5.4 SigmaStudio工程与固件版本的纠缠留好参数接口ADAU1452的程序是一个人机交互很强的工程算法工程师改一个步长导出自举文件可能就覆盖掉了产线烧录的标定参数。所以我很建议把算法工程、参数文件、标定数据三样东西彻底分离开。算法参数放在EEPROM独立区域和标定参数分开管理SigmaStudio工程里不要写死需要按单台设备变化的量而是统一从EEPROM读取。大版本迭代用工程版本号管理参数微调用单独的配置文件下发。这样即使产线上已经烧了一万台发现某个步长需要微调也不需要重新生成固件改配置文件召集烧录工具推送就行。如果重新做一次这个项目我会在概念设计阶段就把产线标定工装的原型做出来而不是等整机硬件定型后才补。拿手工治具先标定十几个样品验证标定算法的重复性能帮整个项目至少省出两个月返工时间。ANC产品的成败从来不只是算法好不好而是从麦克风开孔到产线工装这条完整链条能不能捏在一起这就是Demo和产品之间最真实的距离。
返回列表