1. ADC/DAC基础概念:模拟信号与数字信号的区别、采样定理(奈奎斯特定理)、量化与编码的基本原理
各位同学,咱们今天聊聊数据转换器最基础的东西。说实话,我刚开始做通信系统那会儿,觉得ADC和DAC就是个黑盒子——模拟进去数字出来,或者反过来。后来被坑了几次才明白,这里面的门道深着呢。
1.1 模拟信号与数字信号的区别
先说说最直观的区别。模拟信号,说白了就是连续变化的物理量。比如你对着麦克风说话,声波让振膜振动,产生连续变化的电压。这个电压在时间上是连续的,在幅度上也是连续的——理论上可以取无穷多个值。
数字信号呢?它只有两个状态:0和1。我经常跟团队里的新人说,数字信号就像开关灯——要么亮要么灭,没有中间状态。但正是这种"非黑即白"的特性,让数字信号抗干扰能力特别强。
我在做基站项目时遇到过一件事。一条模拟音频线缆长了点,信号衰减加上环境噪声,到接收端已经听不清了。换成数字传输后,哪怕信号被干扰得面目全非,只要还能分辨出0和1,就能完美恢复原始信息。这就是数字信号最大的优势。
核心区别总结:
- 连续性:模拟信号在时间和幅度上连续;数字信号在时间和幅度上都离散
- 抗干扰:模拟信号易受噪声影响;数字信号有天然的抗干扰能力
- 存储与处理:模拟信号难以长期存储和精确处理;数字信号可以无损复制、灵活处理
- 带宽效率:模拟信号占用带宽小;数字信号通常需要更大带宽(但可以通过压缩改善)
1.2 采样定理(奈奎斯特定理)
好,现在问题来了:怎么把连续的模拟信号变成离散的数字信号?第一步就是采样。
采样,就是每隔一段时间抓一个点。你想想看,如果采样频率太低,会漏掉信号的变化细节。那到底多快才算够?奈奎斯特老爷子给出了答案:采样频率必须大于等于信号最高频率的两倍。
公式很简单:fs ≥ 2 × fmax
为什么是两倍?我画个图你就明白了。假设一个正弦波,频率是f。如果每秒只采一个点(fs = f),你采到的全是同一个相位上的值——比如全是波峰,那恢复出来的信号就是一条直线。这显然不对。
如果每秒采两个点(fs = 2f),刚好能捕捉到波峰和波谷。理论上可以恢复出原始波形。但实际工程中,没人会卡着这个边界做设计。
⚠️ 避坑指南:
我曾经在一个射频接收机项目里,为了省成本,把采样率刚好设在奈奎斯特频率上。结果发现信号恢复出来总有失真。后来查资料才明白,实际应用中通常要留余量——一般取信号最高频率的2.5到5倍。比如音频CD的采样率是44.1kHz,而人耳能听到的最高频率是20kHz,这就是留了余量的。
还有一个概念叫混叠。如果采样频率低于奈奎斯特频率,高频信号会"伪装"成低频信号混进来。这就像车轮转得太快,你看到轮子好像在倒转一样。解决办法是在ADC前面加一个抗混叠滤波器,把高于fs/2的频率成分滤掉。
1.3 量化与编码的基本原理
采样搞定了时间上的离散化,接下来要处理幅度上的离散化——这就是量化。
量化,就是把连续变化的幅度值,映射到有限个离散的等级上。比如一个3位的ADC,只能表示8个不同的幅度等级(2³ = 8)。每个采样点都会被归到离它最近的那个等级上。
这里有个绕不开的问题:量化误差。你想想看,原始信号可能是3.14159V,但3位ADC只能输出0V、0.5V、1.0V……直到3.5V。3.14159V会被量化为3.0V,误差0.14159V。这个误差在频域上表现为量化噪声。
💡 经验之谈:
我习惯用这个公式估算量化信噪比:SQNR ≈ 6.02 × N + 1.76 dB,其中N是ADC的位数。每增加1位,信噪比提升约6dB。所以16位ADC的理论信噪比大约是6.02×16 + 1.76 ≈ 98dB。当然,实际器件因为各种非理想因素,会差一些。
量化之后就是编码。编码就是把量化后的幅度等级,用二进制数表示。比如3位ADC,量化等级0对应000,等级1对应001,以此类推,等级7对应111。
常见的编码方式有:
- 自然二进制码:最直观,直接对应数值大小
- 格雷码:相邻两个码字只有一位不同,适合高速应用,减少误码
- 二进制补码:用于有符号数的表示,在DSP中很常见
举个具体的例子。假设一个8位ADC,参考电压是5V。那么它的分辨率是5V / 256 ≈ 19.53mV。如果输入电压是2.5V,对应的量化等级是2.5V / 19.53mV ≈ 128,编码就是10000000(二进制)。
量化与编码的关键参数:
| 参数 | 含义 | 典型值 |
|---|---|---|
| 分辨率 | ADC能分辨的最小电压变化 | Vref / 2^N |
| 量化误差 | 实际值与量化值之差 | ±0.5 LSB |
| 动态范围 | 最大可测信号与最小可测信号之比 | 6.02N + 1.76 dB |
| 采样率 | 每秒采样的次数 | 取决于应用(音频44.1kHz ~ 射频数GHz) |
最后说一句,量化误差是不可避免的,但我们可以通过增加位数来减小它。不过位数增加会带来成本、功耗和速度的权衡。我做过一个高速数据采集卡,客户要求12位精度,但采样率要1GSPS。市面上能满足这个指标的ADC,价格贵得吓人。最后我们用了两个8位ADC做交织采样,才把成本降下来。
嗯,基础概念就讲这么多。下一章咱们聊聊ADC和DAC的实际架构,看看它们内部到底是怎么工作的。