资讯动态

奈奎斯特采样定理到底在说什么?为什么采样率不能随便选?

发布时间:2026/8/24 15:01:14 来源:尧图企业网站定制
上一篇我们讲了 ADC 最基本的三个过程采样、量化、编码。但真正开始做高速 ADC 项目后很快就会遇到另一个问题ADC 到底应该用多高的采样率比如输入一个 1 GHz 的正弦信号用 5 GS/s ADC 采样够不够2 GS/s 呢如果采样率太低最后 FPGA 收到的数据会发生什么这些问题都绕不开一个通信和数字信号处理中的基础概念——奈奎斯特采样定理Nyquist-Shannon Sampling Theorem。1. 为什么要了解奈奎斯特采样定理做 FPGA ADC 高速采集时我们最终拿到的是一个个离散采样点模拟信号 ╭──╮ ╭─╯ ╰─╮ ───╯ ╰──── ADC 采样 ● ● ● ● ● ● ●问题在于这些点到底够不够描述原来的模拟信号如果采样点太少不同的模拟信号可能得到相同或者非常相似的数字采样序列。这样一来即使 FPGA 后面的算法完全正确也没办法恢复原来的信号。所以采样率不是“能采多快就设多快”也不能随便选而是受到输入信号频率的约束。2. 奈奎斯特采样定理到底说了什么先记住最常用的一句话对于一个最高频率为 $f_{max}$ 的带限信号如果希望从采样结果中无失真地恢复原信号采样率需要满足 $f_s 2f_{max}$。写成公式就是$$f_s 2f_{max}$$其中$f_s$ADC 的采样率$f_{max}$输入信号中最高的有效频率。例如一个最高频率为1 GHz的基带信号理论上采样率需要高于$$2\times1\ GHz2\ GS/s$$这里的2 倍就是大家经常听到的“奈奎斯特条件”。什么是奈奎斯特频率对于一个采样率为 $f_s$ 的系统$$f_N\frac{f_s}{2}$$通常把 $f_s/2$ 称为奈奎斯特频率Nyquist Frequency。例如采样率 Fs 10 GS/s 0 GHz 5 GHz │──────────────────────│ 第一奈奎斯特区那么它的奈奎斯特频率就是$$5\ GHz$$对于最常见的低通采样场景我们通常希望关注的模拟信号位于$$0\sim \frac{f_s}{2}$$这个范围也经常称为第一奈奎斯特区First Nyquist Zone。3. 为什么偏偏是“两倍”这里不用先推复杂公式可以先从直觉上理解。假设我们采一个正弦波。如果每个周期只有一个采样点正弦波 ╭──╮ ╭──╮ ───╯ ╰────╯ ╰── 采样 ● ●仅仅看到这些点你根本不知道原来的波形到底长什么样。如果一个周期至少有两个采样位置才开始具备区分波形变化的基本条件。但更准确的解释是在频域。模拟信号经过采样以后它的频谱会以 $f_s$ 为间隔不断复制原始频谱 ▲ │ ───┼────────────────────► f 0 采样后 ▲ ▲ ▲ │ │ │ ──────────┼──────────┼──────────┼────► f -Fs 0 Fs如果原信号最高频率太高而 $f_s$ 又太低相邻的频谱副本就会互相重叠。一旦重叠就会发生后面要专门讲的Aliasing——混叠。所以奈奎斯特条件本质上是在保证采样之后复制出来的频谱不要互相重叠。4. 用一个简单例子看懂假设我们有一个Fin 1 GHz的正弦信号。情况一Fs 5 GS/s奈奎斯特频率为$$\frac{5}{2}2.5\ GHz$$1 GHz 位于第一奈奎斯特区内0 1 GHz 2.5 GHz │──────────▲────────────────────│ 输入信号这种情况比较容易理解1 GHz 信号可以正常出现在数字频谱中的 1 GHz 附近。情况二Fs 1.5 GS/s这时奈奎斯特频率只有$$\frac{1.5}{2}0.75\ GHz$$但输入信号是$$1\ GHz$$已经超过了第一奈奎斯特区。这时候 FPGA 最终观察到的频率就可能不再是原来的 1 GHz而会折叠到其他频率位置。这就是混叠。具体为什么会从一个频率“变成”另一个频率我们放到下一篇专门解释。5. 用 Python 看看采样率不同有什么区别下面用一个低频例子方便观察。输入信号为 10 Hz分别使用 100 Hz 和 15 Hz 采样。import numpy as np import matplotlib.pyplot as plt fin 10 # 输入信号 10 Hz # 用较密的点表示模拟信号 t np.linspace(0, 0.3, 2000) x np.sin(2 * np.pi * fin * t) # 情况1100 Hz采样 fs1 100 t1 np.arange(0, 0.3, 1 / fs1) x1 np.sin(2 * np.pi * fin * t1) # 情况215 Hz采样 fs2 15 t2 np.arange(0, 0.3, 1 / fs2) x2 np.sin(2 * np.pi * fin * t2) plt.plot(t, x, labelAnalog signal) plt.scatter(t1, x1, labelFs 100 Hz) plt.scatter(t2, x2, labelFs 15 Hz) plt.xlabel(Time (s)) plt.ylabel(Amplitude) plt.grid() plt.legend() plt.show()运行后可以明显看到100 Hz 采样时采样点能够比较清楚地描述 10 Hz 正弦波而 15 Hz 已经低于两倍输入频率采样点很容易让人误判原来的波形。这里主要是帮助理解现象不是严格的 ADC 性能测试。6. 放到我们的 2×5 GS/s ADC 项目里看现在回到实际项目。单个 ADCADC05 GS/s ADC15 GS/s单路 ADC 的采样周期$$T\frac{1}{5\ GHz}200\ ps$$两个 ADC 理想错开 100 ps时间 ───────────────────────── ADC0● ● ● ADC1 ● ● ● 合并● ● ● ● ● ● 0 100 200 300 400 500 ps最终得到$$F_s10\ GS/s$$所以从交织后的系统采样率来看$$f_N\frac{10}{2}5\ GHz$$即第一奈奎斯特区通常表示为0 5 GHz这也是为什么后面分析 10 GS/s 数据的 FFT 时5 GHz 是一个非常重要的频率边界。但是要特别注意10 GS/s 的采样率并不代表系统一定可以输入任意 05 GHz 的模拟信号。实际能不能采还要看 ADC 的模拟输入带宽、前端电路、时钟质量以及器件性能。采样率和模拟带宽不能画等号。7. 新人最容易搞错的地方误区一采样率是 10 GS/s就能采 10 GHz 信号不是。对于最常见的第一奈奎斯特区采样10 GS/s 对应的奈奎斯特频率是 5 GHz而不是 10 GHz。同时实际模拟输入范围还受到 ADC 模拟带宽限制。误区二只要 Fs 2Fin采出来就一定完美也不是。奈奎斯特定理解决的是理论上能否避免信息发生不可逆混叠的问题。实际 ADC 还有量化误差热噪声时钟抖动非线性失真ADC 交织误差。所以满足奈奎斯特条件只是基础。误区三超过 Fs/2 的信号 ADC 就完全采不到这个说法也不严谨。如果 ADC 的模拟输入带宽允许还可以利用第二、第三奈奎斯特区进行带通采样或欠采样。但是这些信号采样后会折叠到较低频率因此必须提前设计好频率规划。新人阶段可以先记住Fs/2 是数字频谱中非常关键的分界点但不是简单的“ADC 模拟输入截止频率”。8. 总结这一篇最重要的是记住下面几点奈奎斯特采样定理决定了采样率和信号带宽之间的基本关系。对常见带限低通信号要避免混叠通常要求 $f_s2f_{max}$。奈奎斯特频率是 $f_s/2$。10 GS/s 采样系统的奈奎斯特频率为5 GHz但采样率不等于模拟输入带宽。一旦信号跨越奈奎斯特区必须开始考虑一个非常重要的问题——频率折叠和混叠。比如一个 6 GHz 的信号被 10 GS/s ADC 采样后为什么可能在 FFT 中跑到了 4 GHz这就是下一篇要解决的问题《什么是混叠一个频率为什么会“变成”另一个频率》关键词FPGA、ADC、奈奎斯特采样定理、采样率、Nyquist、混叠、高速采集、时间交织ADC

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价