采集卡精度、噪声、有效位:为什么标称16位不等于真16位?
有个客户买了块16位采集卡,回去测一个毫伏级的小信号,发现读数跳得根本没法用。他以为卡坏了。其实卡没坏,是他把"标称16位"当成了"真能分辨16位"。
之前我们聊过,采集卡位数不是越高越好,动态范围和有效位才是关键。今天往深走一步:ADC到底是怎么"数格子"的、有效位为什么总比标称低、datasheet里哪几行字才真正值得看。看完这篇,你再翻任何一款采集卡的参数表,心里都会有杆秤。
一、先搞懂:ADC是怎么"数格子"的
模拟信号是连续变化的电压,ADC要把它变成数字,只能把它切成一格一格。16位的ADC,能把量程切成2的16次方,也就是65536格。每一格对应的电压,行话叫一个LSB。
问题来了:落在两格之间的电压怎么办?只能就近归到某一格。这一"归",误差就产生了,最大差半个LSB。无数个这样的小误差攒起来,就是量化噪声。它由位数决定,物理上无法消除,只能接受。
连续信号被"归"到最近的格子,两格之间的差异就成了量化噪声
所以位数的意义是格子切得细不细。12位是4096格,16位是65536格,差了16倍。理论上格子越细,量化噪声越低,能分辨的信号就越小。注意,这只是理论上。
二、有效位:为什么到手总比标称低
真实电路里不只有量化噪声。前端放大器有热噪声,电源有纹波,时钟有抖动,这些噪声全都叠在信号上,一起被"数格子"。格子切得再细,底下垫着一层噪声,细格子就被糊住了。
于是有了有效位(ENOB)这个概念:把实际存在的全部噪声和失真,折算成"相当于多少位的理想ADC"。算法不复杂,从SINAD(信纳比)换算:ENOB = (SINAD - 1.76) / 6.02。这个公式不用背,你只要记住——datasheet上没直接写ENOB的,就找SINAD或SNR,自己减一减。
一块标称16位的卡,实测SINAD做到86dB上下,ENOB就是14位左右,这算表现不错的。差一些的卡,标16位、实测12位多的,也不是没有。同样标16位,有效位差出一两位,测小信号时就是"看得见"和"看不见"的区别。
标称位数是理想值,有效位才是实测能用的分辨能力(示意)
三、噪声从哪来?三个来源,一个一个说
量化噪声刚说过,是位数定的天花板,没办法。剩下两个,才是真正拉开卡与卡差距的地方。
前端和电源噪声。模拟前端要放大信号,放大器自身就有噪声;电源不干净,纹波也会混进信号。同样的ADC芯片,不同厂家做出来的卡噪声水平不一样,差距就在前端设计和电源处理上。这也是为什么选卡不能只看"用了什么芯片"。
时钟抖动。采样时刻每次差那么一点点,采到的电压就有误差。信号频率越高,同样的时间抖动换算成的电压误差越大。所以高频应用里,时钟质量比位数更先成为瓶颈。你要测几百兆的信号,却只盯着位数选卡,方向就偏了。
四、datasheet里真正该看的几行字
厂家参数表动辄几十行,项目吃精度的话,重点看这四个:
- SNR(信噪比):信号和噪声的比值,越高越好,但它不含失真。
- SINAD(信纳比):信号和"噪声+失真"的比值,算ENOB就用它,比SNR实在。
- SFDR(无杂散动态范围):最强信号和最强杂散之间的距离。做频谱分析、要在强信号旁边找弱信号的,这个指标比位数重要得多。
- 噪声密度:单位带宽内的噪声。测宽带小信号时,它直接决定你的底。
问厂家的时候,别问"你们这卡多少位",问"典型SINAD多少、SFDR多少、噪声密度多少"。能痛快答上来的,参数表一般没注水;支支吾吾只肯说位数的,你就要多留个心眼了。
五、不放心?两个粗测的办法自己上手
第一个,短路测底噪。输入端短接到地,采一段数据,看读数的跳动范围。跳动换算成电压,就是这台系统的本底噪声。你的信号比这个底还小,就别指望测准了。
第二个,满幅正弦测SINAD。接一个高质量信号源,幅度打满量程,采下来做FFT,算出信号与"噪声+失真"的比值,代回公式就是ENOB。注意信号源本身要干净,不然测出来的是信号源的下限,不是卡的。
频谱上看得最直观:噪声底抬高了,小信号就被淹在里面
六、最后说句实在话
位数是最好卖的参数,因为数字大、好看。但真正决定你能不能测准的,是噪声、有效位这些"不好看"的指标。我们帮客户匹配型号,碰上吃精度的项目,都是直接拿SINAD、噪声密度说话,从不拿标称位数当卖点。参数表上的数字是给人看的,有效分辨能力才是给你用的。
— 本文由研拓服务发布,转载请注明出处。