2. 信号与系统基础:模拟信号与数字信号、采样定理、量化与编码、信噪比概念
好,咱们开始第二章。这一章是数据转换器的理论基础,说白了就是搞清楚:我们到底在转换什么?
很多刚入行的工程师,上来就盯着ADC的位数、采样率看,结果做出来的板子噪声大、失真严重。为什么?因为没搞懂信号本身的脾气。我当年也犯过这毛病,后来被一个老前辈点醒:你连信号长什么样都没摸透,谈什么转换?
2.1 模拟信号与数字信号
先说说这两个东西的本质区别。
模拟信号,是连续变化的。比如你说话时的声波,温度计里的水银柱,都是连续的。它在时间和幅值上都没有间断。
数字信号,是离散的。它只在特定的时间点有值,而且幅值也被限定在几个固定的等级上。比如你电脑里存的音频文件,就是一堆0和1。
我打个比方:模拟信号就像你用手在墙上画一条曲线,想怎么弯就怎么弯;数字信号就像用乐高积木拼出一条曲线,只能一格一格地拼,不可能完全平滑。
那为什么要用数字信号?因为抗干扰能力强。模拟信号传着传着,噪声就叠上去了,你很难分清哪些是信号、哪些是噪声。数字信号不一样,只要噪声没大到把0变成1、把1变成0,就能完美恢复。
核心区别总结:
- 连续性:模拟信号连续,数字信号离散
- 抗干扰:数字信号远优于模拟信号
- 处理方式:模拟信号靠电路,数字信号靠算法
2.2 采样定理
好,现在我们要把模拟信号变成数字信号。第一步就是采样——每隔一段时间,抓一个点。
问题来了:抓多快才够?
这就是奈奎斯特采样定理要回答的问题。它的核心就一句话:采样频率必须大于信号最高频率的两倍。
为什么?我举个例子你就明白了。
假设有一个1kHz的正弦波。如果你用1kHz的频率去采样,会发生什么?你每次采样都落在波形的同一个位置,结果采出来是一条直线!你完全不知道这是个正弦波。
如果你用1.5kHz去采样,好一点,但恢复出来的波形频率是错的,这叫混叠。
只有当你用大于2kHz的频率去采样,才能完整地恢复出这个1kHz的信号。
我的经验: 实际项目中,我一般取采样频率为信号最高频率的5到10倍。为什么?因为理想低通滤波器不存在,留点余量心里踏实。我曾经在一个车载音频项目里,信号最高频率20kHz,我用了48kHz采样,结果还是有点混叠。后来换成96kHz,问题解决。嗯,这就是教训。
采样定理的数学表达很简单:
fs > 2 * fmax
其中fs是采样频率,fmax是信号最高频率。这个fmax的一半,叫奈奎斯特频率。
注意: 采样前一定要加抗混叠滤波器!把高于fs/2的频率成分滤掉。否则那些高频成分会折叠到低频段,变成你完全无法预料的噪声。我见过有人省了这个滤波器,结果系统里莫名其妙多出一些低频干扰,查了三天才发现是混叠造成的。
2.3 量化与编码
采样之后,我们得到了一串时间上离散的数值。但这些数值还是连续的——比如3.14159伏特。数字系统没法直接处理这种连续值,得把它量化成有限个等级。
量化,就是把连续的幅值映射到离散的等级上。比如一个3位的ADC,只能表示8个等级(000到111)。3.14159伏特,可能被量化为3.125伏特(对应某个二进制码)。
这个映射过程,必然带来误差,叫量化误差。
量化误差的大小,取决于ADC的位数。位数越多,等级越细,误差越小。
| ADC位数 | 等级数 | 量化步长(满量程5V) |
|---|---|---|
| 8位 | 256 | 19.53 mV |
| 10位 | 1024 | 4.88 mV |
| 12位 | 4096 | 1.22 mV |
| 16位 | 65536 | 76.29 μV |
你看,从8位到16位,精度提升了两个数量级。但代价是什么?成本、功耗、速度都受影响。所以选ADC不是位数越高越好,够用就行。
编码,就是把量化后的等级用二进制码表示。最常见的编码方式是二进制补码,特别是处理双极性信号时。比如-2.5V对应1000...000,0V对应0000...000,+2.5V对应0111...111。
我建议: 如果你处理的是单极性信号(比如0-5V),用自然二进制码就行,简单直接。如果是双极性信号(比如-5V到+5V),用二进制补码,这样后续的数字信号处理会方便很多。
2.4 信噪比概念
最后,我们来聊聊信噪比,简称SNR。这是衡量信号质量的核心指标。
信噪比的定义很简单:信号功率与噪声功率的比值,通常用分贝(dB)表示。
SNR(dB) = 10 * log10(Psignal / Pnoise)
对于ADC来说,主要的噪声来源就是量化误差。理论上,一个理想的N位ADC,它的最大信噪比是:
SNR_max(dB) = 6.02 * N + 1.76
这个公式很实用。比如12位的ADC,理论最大SNR是6.02*12 + 1.76 ≈ 74 dB。如果你实测只有60 dB,说明你的系统有其他噪声源,比如电源噪声、时钟抖动等。
我做过一个项目,ADC的SNR死活上不去,查了半天发现是电源纹波太大。后来换了低噪声LDO,SNR立刻提升了10 dB。所以记住:ADC的SNR,不只是ADC本身的事,是整个信号链的事。
信噪比的关键点:
- 每增加1位分辨率,SNR提升约6 dB
- 实际SNR永远低于理论值,因为还有其他噪声
- 信噪比和有效位数(ENOB)可以互相换算:ENOB = (SNR - 1.76) / 6.02
好了,这一章的内容就这些。总结一下:
- 模拟信号连续,数字信号离散
- 采样频率要大于信号最高频率的两倍,否则会混叠
- 量化必然带来误差,位数越高误差越小
- 信噪比是衡量信号质量的核心指标,受整个信号链影响
下一章,我们会深入ADC的架构,看看不同的ADC是怎么工作的。到时候再聊。