ARTICLE DETAIL

资讯详情

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

低功耗Sigma-Delta ADC设计:噪声整形原理与智能手表心率检测实践

低功耗Sigma-Delta ADC设计:噪声整形原理与智能手表心率检测实践 1. 为什么低功耗场景偏偏选中了Sigma-Delta架构如果你拆过智能手表或者便携录音笔大概率会在PCB上看到一颗小小的ADC芯片旁边配着几个电容电阻走线也不复杂。但就是这颗不起眼的芯片决定了你的手表能不能连续测心率七天不充电决定了录音笔能不能在嘈杂环境里把人的声音干净地抓出来。很多人第一次接触Sigma-Delta ADC的时候会有一个疑问这玩意儿输出速率不高还带一堆数字滤波器功耗看起来也不低为什么偏偏是它在低功耗领域站稳了脚跟答案藏在“精度换功耗”这个反直觉的逻辑里。传统的逐次逼近型ADCSAR ADC要跑到16位以上的有效精度模拟前端的设计压力会急剧上升——比较器失调、电容阵列匹配、参考电压噪声每一项都在跟你作对。而Sigma-Delta走的是另一条路它用一个极其粗糙的1位量化器配合极高的过采样率和噪声整形把量化噪声“推”到高频段然后在数字域把它滤掉。模拟部分做得糙数字部分来补救而数字电路在先进工艺下功耗和面积都极其便宜。这个思路在低功耗场景下简直是量身定做。智能手表的心率检测、音频录制、语音唤醒这些应用的信号带宽通常很窄——心率信号有效带宽可能就几赫兹到几十赫兹音频也就20kHz左右。信号带宽窄意味着你可以用很高的过采样率而不需要太高的采样时钟数字滤波器的功耗也就压得住。反过来如果让SAR ADC去跑16位精度模拟部分的功耗和面积会成倍增加在纽扣电池供电的设备里根本扛不住。我实际对比过几款用于可穿戴设备的ADC方案。同样是12位有效精度、1kSPS输出速率SAR ADC的功耗大概在几十微安量级而一个设计得当的Sigma-Delta ADC可以做到十几微安甚至更低。差距的来源不是Sigma-Delta本身有多省电而是它对模拟器件的要求低可以用更小的偏置电流、更简单的运放结构来实现。这一点在芯片选型的时候特别关键很多新手只看数据手册上的“功耗”一栏忽略了外围模拟电路的功耗结果整板功耗远超预期。还有一个容易被忽视的点Sigma-Delta ADC天然适合做多通道复用。因为它的模拟前端简单多路信号可以通过一个多路复用器切换后共用一个调制器数字滤波器也可以分时复用。这在智能手表这种需要同时监测心率、血氧、体温的场景里非常实用。你不需要为每个传感器配一个独立的ADC一颗Sigma-Delta加上合理的通道切换逻辑就能搞定。2. 噪声整形到底在“欺骗”什么2.1 量化噪声不是被消除了而是被搬走了很多人第一次听到“噪声整形”这个词会觉得这是一种魔法——噪声被“整形”掉了其实不是。量化噪声的总功率是由量化位数决定的1位量化器的噪声总功率是固定的你没法把它消灭。Sigma-Delta做的事情是改变噪声的频谱分布通过反馈环路把低频段的量化噪声搬到高频段去让低频段的噪声密度变得极低。打个比方你有一个房间地上散落着垃圾量化噪声。SAR ADC的做法是直接把垃圾扫到角落但角落空间有限扫不干净。Sigma-Delta的做法是把垃圾全部铲到房间外面的一条走廊里高频段房间里看起来干干净净然后你在房间门口放一个滤网数字低通滤波器只让房间里的空气流通走廊里的垃圾就进不来。垃圾总量没变但房间里的空气质量变好了。这个“搬垃圾”的过程靠的是负反馈环路。调制器里有一个积分器、一个比较器和一个反馈DAC。积分器对输入信号和反馈信号的差值进行累积比较器根据积分器的输出决定反馈DAC是加还是减。这个闭环系统对低频信号呈现高增益对量化噪声呈现低增益——换句话说低频段的噪声被环路增益压制了高频段的噪声被放大了。最终输出端的噪声频谱呈现“低频低、高频高”的形状这就是噪声整形的核心。2.2 过采样率是噪声整形的“燃料”噪声整形要发挥作用过采样率必须足够高。过采样率OSR定义为采样频率除以两倍信号带宽。OSR每提高一倍量化噪声在信号带宽内的功率就下降3dB。如果配合一阶噪声整形噪声下降的斜率变成9dB每倍频程二阶变成15dB每倍频程三阶变成21dB每倍频程。这就是为什么高阶Sigma-Delta调制器能用1位量化器做到20位以上的有效精度。但过采样率不是越高越好。采样频率越高调制器内部积分器和比较器的功耗就越大数字滤波器的功耗也越大。在低功耗场景下你需要找到一个平衡点。我的经验是对于音频应用带宽20kHzOSR取64到128比较合适对应采样频率2.56MHz到5.12MHz对于心率检测带宽100HzOSR可以取256甚至512采样频率只有51.2kHz到102.4kHz功耗可以压得很低。这里有一个实际设计中的坑很多人以为过采样率越高精度就越好于是拼命提高采样时钟。结果发现功耗上去了精度却没怎么提升。原因是高阶调制器在高OSR下可能进入不稳定状态或者数字滤波器的功耗增长超过了模拟部分节省下来的功耗。正确的做法是先确定目标精度和信号带宽然后根据调制器阶数反推需要的OSR再选择合适的主时钟频率。2.3 数字滤波器是“收尾”的关键调制器输出的1位码流看起来像随机噪声但它包含了完整的信号信息。数字滤波器的任务是把高频量化噪声滤掉同时把输出速率降到奈奎斯特频率附近。常用的滤波器结构是Sinc滤波器也叫CIC滤波器级联一个补偿滤波器。Sinc滤波器特别适合低功耗场景因为它不需要乘法器只需要加法器和寄存器。一个三阶Sinc滤波器对1位码流做抽取功耗可以做到微安级别。补偿滤波器用来补偿Sinc滤波器在通带内的衰减通常是一个简单的FIR滤波器系数可以用对称结构减少乘法次数。我在实际项目中遇到过一个问题Sinc滤波器的阶数和抽取率选择不当导致输出信号的建立时间太长。比如在心率检测中每次切换通道后需要等待滤波器稳定才能读取有效数据如果建立时间太长通道切换的频率就上不去。后来我把Sinc滤波器的阶数从三阶降到二阶配合一个稍微复杂一点的补偿滤波器整体建立时间缩短了将近一半精度只损失了不到1位。3. 从音频录制到智能手表不同场景下的设计取舍3.1 音频录制高保真与低功耗的拉锯战音频录制对Sigma-Delta ADC的要求比较特殊。一方面音频信号带宽20kHz需要至少16位有效精度才能满足高保真回放的需求另一方面便携录音笔和无线耳机对功耗极其敏感希望ADC的功耗越低越好。在音频应用中Sigma-Delta ADC通常采用二阶或三阶调制器OSR取64或128主时钟频率在2.56MHz到5.12MHz之间。这个配置下调制器的功耗大概在几百微安量级数字滤波器的功耗也在类似量级。为了进一步降低功耗很多芯片会采用多比特量化器代替1位量化器。多比特量化器可以降低量化噪声从而允许更低的OSR但代价是需要一个多比特反馈DAC对匹配性要求更高。我实测过几款音频Sigma-Delta ADC发现一个有意思的现象在低采样率下比如8kHz输出功耗可以降到1毫瓦以下但在48kHz输出时功耗会跳到3到5毫瓦。差距主要来自数字滤波器的功耗——输出速率越高滤波器需要处理的样本越多功耗自然就上去了。所以如果你的应用不需要48kHz采样千万别为了“留余量”而选择高输出速率功耗代价是实打实的。音频应用还有一个特殊需求抗混叠滤波。Sigma-Delta ADC的过采样率很高输入端的抗混叠滤波器可以做得非常简单甚至只需要一个RC低通滤波器。这比SAR ADC需要的高阶抗混叠滤波器省事多了也省功耗。但要注意RC滤波器的截止频率要跟信号带宽匹配截止频率太高会让高频噪声混进来太低会衰减有用信号。3.2 智能手表心率检测极低功耗下的精度博弈智能手表的心率检测是Sigma-Delta ADC最典型的低功耗应用场景之一。心率信号的有效带宽通常只有几赫兹到几十赫兹信号幅度也很小通常在毫伏级别。但环境噪声很大包括运动伪影、环境光干扰、电源纹波等。在这种场景下Sigma-Delta ADC的设计重点是极低的输入参考噪声和极低的功耗。因为信号带宽窄OSR可以取到256甚至512主时钟频率只有几十千赫兹调制器的功耗可以压到几微安。数字滤波器也可以做得很简单一个二阶Sinc滤波器加一个简单的补偿滤波器就够了。但这里有一个容易被忽视的问题输入端的噪声。Sigma-Delta ADC的输入参考噪声决定了你能检测到的最小信号。如果输入端的噪声太大再高的分辨率也没用。我在实际调试中发现很多心率检测方案的噪声主要来自光电二极管的前置放大器而不是ADC本身。所以选型的时候不能只看ADC的噪声指标要把整个信号链的噪声预算算清楚。另一个坑是电源噪声。智能手表的电源通常来自开关电源或LDO纹波可能在几十毫伏量级。如果ADC的电源抑制比不够高电源纹波会直接调制到输出信号上。我的做法是在ADC的电源引脚旁边放一个RC滤波器截止频率设在几赫兹把低频纹波滤掉。这个RC滤波器的电阻不能太大否则会影响ADC的瞬态响应电容也不能太小否则滤波效果不够。通常取10欧姆电阻配10微法电容效果比较均衡。3.3 语音唤醒Always-On场景下的功耗极限语音唤醒是最近几年低功耗ADC的热门应用。智能音箱、TWS耳机、智能手表都需要在待机状态下持续监听唤醒词这对ADC的功耗提出了极高的要求——通常希望整个音频前端包括麦克风、ADC、预处理的功耗在几百微瓦以内。Sigma-Delta ADC在语音唤醒场景下的设计跟音频录制有很大不同。唤醒词检测不需要高保真音频只需要足够的信噪比让后端的关键词识别算法能工作。所以信号带宽可以降到4kHz甚至2kHzOSR可以取到128或256主时钟频率降到1MHz以下功耗可以做到几十微安。但语音唤醒对ADC的另一个指标要求很高快速启动时间。因为设备大部分时间处于休眠状态只有检测到声音事件后才唤醒ADC进行采样。如果ADC的启动时间太长可能会错过唤醒词的开头部分。Sigma-Delta ADC的启动时间主要取决于数字滤波器的建立时间可以通过降低滤波器阶数或减少抽取率来缩短。我的经验是把建立时间控制在几毫秒以内对唤醒词检测的成功率影响可以忽略。还有一个实际问题是麦克风的偏置电压。很多MEMS麦克风需要偏置电压才能工作这个偏置电压的噪声会直接耦合到信号里。如果ADC的输入参考噪声很低但麦克风偏置噪声很大整体信噪比还是上不去。所以在语音唤醒方案里麦克风偏置电路的设计跟ADC选型同样重要。4. 低功耗Sigma-Delta ADC的实操选型与调试经验4.1 选型时容易踩的几个坑第一个坑是只看分辨率不看有效位数。很多芯片标称24位分辨率但有效位数可能只有16位甚至更低。有效位数才是真正决定精度的指标选型时一定要看ENOB有效位数而不是分辨率。第二个坑是忽略输出速率和功耗的关系。同一颗ADC在不同输出速率下的功耗可能差好几倍。选型时要根据实际需要的输出速率来评估功耗不能只看数据手册上的“典型功耗”。第三个坑是低估数字滤波器的功耗。有些ADC把调制器和数字滤波器分开供电数据手册上只标了调制器的功耗数字滤波器的功耗要另外算。如果数字滤波器在FPGA或MCU里实现功耗可能比调制器还大。第四个坑是忽视输入端的驱动要求。Sigma-Delta ADC的输入通常是开关电容结构输入端需要一定的驱动能力。如果信号源的内阻太大会导致建立时间不够精度下降。选型时要确认信号源的内阻是否满足ADC的驱动要求。4.2 调试中的常见问题与排查思路问题一输出噪声比预期大。排查顺序是先检查电源纹波用示波器看ADC电源引脚上的纹波幅度再检查输入端是否有高频干扰用频谱分析仪看输入信号的频谱最后检查数字滤波器的配置是否正确抽取率、阶数、补偿滤波器系数是否匹配。问题二输出信号有周期性波动。这通常是数字滤波器建立时间不够导致的。可以尝试降低输出速率、增加滤波器阶数、或者在软件里丢弃前几个样本。问题三功耗比预期高。先确认实际工作模式是否跟数据手册的测试条件一致比如输出速率、时钟频率、供电电压。然后检查是否有未使用的通道或模块没有关闭。最后检查数字接口的功耗比如SPI或I2S接口在高速传输时的功耗可能不可忽略。问题四精度随温度漂移。Sigma-Delta ADC的精度对温度比较敏感尤其是参考电压和积分器的运放。如果应用场景温度变化大要选择带温度补偿的参考电压源或者定期做校准。4.3 几个实用的低功耗设计技巧技巧一动态调整过采样率。在信号质量好的时候降低OSR在信号质量差的时候提高OSR。这样可以在保证精度的同时降低平均功耗。技巧二使用休眠模式。很多Sigma-Delta ADC支持休眠模式在不需要采样的时候把调制器和数字滤波器关掉只保留寄存器配置。唤醒时间通常在微秒级别对大多数应用来说可以接受。技巧三优化数字滤波器的实现。如果数字滤波器在MCU里用软件实现可以用查表法代替乘法运算用移位代替除法用定点数代替浮点数。这些优化可以显著降低MCU的功耗。技巧四合理选择参考电压。参考电压的噪声直接决定ADC的精度上限。在低功耗场景下可以用一个低噪声的LDO给参考电压供电或者在参考电压引脚旁边放一个大电容滤掉高频噪声。技巧五注意PCB布局。Sigma-Delta ADC的模拟输入端对干扰很敏感走线要尽量短远离数字信号线。地平面要完整模拟地和数字地要分开最后在ADC下方单点连接。5. 从芯片手册到实际产品一个心率检测方案的完整调试记录去年我参与了一个智能手环的心率检测方案用的是一颗国产的低功耗Sigma-Delta ADC标称24位分辨率最高输出速率1kSPS功耗在100微安左右。方案的目标是在100Hz信号带宽下达到16位有效精度整体功耗控制在200微安以内。第一版硬件回来之后测试结果很不理想。输出噪声比预期大了将近10倍有效位数只有12位左右。排查过程持续了将近两周最后发现是三个问题叠加在一起。第一个问题是电源纹波。手环的电源来自一颗开关电容DC-DC输出纹波在20毫伏左右频率在100kHz附近。这个纹波通过ADC的电源引脚耦合到了输出信号上。解决方案是在ADC电源引脚旁边加了一个RC滤波器10欧姆电阻配10微法电容把100kHz的纹波衰减了将近40dB。第二个问题是输入端驱动能力不足。光电二极管的前置放大器输出阻抗比较高大概在几十千欧量级而ADC的输入开关电容在每个采样周期都需要充电导致输入端电压建立不完全。解决方案是在前置放大器和ADC之间加了一个单位增益缓冲器用低功耗运放实现功耗只有几微安但输入阻抗提高到了兆欧级别。第三个问题是数字滤波器的配置。我一开始用的是三阶Sinc滤波器抽取率256建立时间大概在10毫秒左右。但心率信号的通道切换频率比较高每5毫秒切换一次导致滤波器还没稳定就切换了输出数据不可用。后来把Sinc滤波器降到二阶抽取率降到128建立时间缩短到2.5毫秒精度只损失了不到1位但通道切换的问题解决了。解决这三个问题之后重新测试有效位数达到了15.8位整体功耗在180微安左右基本达到了设计目标。这个项目给我的教训是Sigma-Delta ADC的精度不是靠一颗芯片就能保证的电源、输入驱动、数字滤波器配置每一个环节都可能成为瓶颈。6. 写在最后的一些个人体会Sigma-Delta ADC在低功耗场景下的优势本质上是用数字电路的复杂度换取了模拟电路的简单性。在先进工艺下数字电路的面积和功耗越来越便宜而模拟电路的性能提升越来越难这个交换变得越来越划算。但交换是有代价的你需要理解噪声整形的原理需要会配置数字滤波器需要处理好电源和输入端的细节。这些知识在数据手册里往往只有寥寥几页真正的经验得靠一个个项目积累。我个人的习惯是在选型阶段就把整个信号链的噪声预算和功耗预算算清楚不要等到硬件回来才发现问题。噪声预算要从传感器开始算包括传感器的输出噪声、前置放大器的噪声、ADC的输入参考噪声、电源噪声的耦合。功耗预算要把每一个模块的功耗都列出来包括ADC、运放、参考电压源、数字接口、MCU的处理功耗。这两个预算算清楚了方案的成功率会高很多。另外Sigma-Delta ADC的调试工具很重要。如果芯片支持输出原始码流一定要把原始码流抓出来做FFT分析看看噪声频谱的形状是否符合预期。如果噪声频谱在低频段有隆起说明调制器可能不稳定如果高频段噪声比预期高说明数字滤波器的抑制不够。这些信息比单纯看输出数据的标准差有用得多。最后说一个容易被忽视的点Sigma-Delta ADC的精度标定。很多应用场景下ADC的绝对精度比分辨率更重要。比如心率检测你不仅需要检测到心跳的波形还需要准确测量心率值。如果ADC的增益误差或偏移误差太大心率计算的准确性会受影响。所以量产前一定要做校准至少做两点校准零点和满量程有条件的做多点校准。校准系数存在MCU的Flash里每次上电时加载。这个步骤看起来简单但能显著提升产品的实际性能。
返回列表