什么是混叠?一个频率为什么会“变成”另一个频率?
2026/9/8 7:09:16 网站建设 项目流程

1. 为什么要了解混叠?

最近在做两个5 GS/s ADC 时间交织成 10 GS/s的高速采集项目时,有一个问题很容易把新人绕进去:

明明模拟输入是一个确定频率的正弦波,为什么经过 ADC 采样,再送到 FPGA 做 FFT 后,频谱上看到的却是另一个频率?

比如:

  • ADC 采样率:5 GS/s

  • 输入信号:3.8 GHz

  • FPGA 做 FFT 后:可能看到1.2 GHz

3.8 GHz 去哪了?

ADC 把它“变频”了吗?

不是。

这就是数字采样里非常重要的一个概念:混叠(Aliasing)

如果以后要做高速 ADC、FFT、频谱分析、时间交织 ADC,这个概念一定要真正理解,而不是只记一句“采样率至少是信号频率的两倍”。


2. 混叠到底是什么?

先说人话:

采样以后,不同的模拟频率可能产生完全一样的离散采样点。

一旦两组采样点完全相同,FPGA 后面的数字逻辑就没有办法判断它们原来分别是什么频率。

这就是混叠。

为什么会这样?

ADC 并不是连续观察模拟信号,而是每隔一段时间“看一眼”。

假设采样率为:

[
f_s=5\text{ GS/s}
]

那么采样周期就是:

[
T_s=\frac{1}{f_s}=200\text{ ps}
]

ADC 实际看到的是:

模拟信号:~~~~~~~连续变化~~~~~~~ 采样时刻:● ● ● ● ● 0 200 400 600 800 ps

两个不同的模拟正弦波,只要在这些采样时刻上的数值一样,那么数字系统看到的就是同一组数据。

换句话说:

ADC 并不知道两个采样点之间发生了什么。

这就是混叠产生的根本原因。


3. 用一个例子看懂

假设:

[
f_s=5\text{ GHz}
]

输入一个:

[
f_{in}=3.8\text{ GHz}
]

5 GS/s 对应的第一 Nyquist 区间是:

[
0\sim \frac{f_s}{2}=0\sim2.5\text{ GHz}
]

而 3.8 GHz 已经超过 2.5 GHz。

采样之后,它会折叠回第一 Nyquist 区。

此时:

[
f_{alias}=f_s-f_{in}
]

所以:

[
f_{alias}=5-3.8=1.2\text{ GHz}
]

于是 FPGA 做 FFT 时,就会在1.2 GHz附近看到一个峰。

可以简单理解成频谱在 Nyquist 频率处被“折回来”:

频率: 0 2.5 5.0 GHz |---------|----------| ↑ Nyquist 输入: ● 3.8 GHz \ \ ● 1.2 GHz FFT 最终看到: 1.2 GHz

所以经常会说:

超过 Nyquist 频率的信号会发生频率折叠。

更一般一点,可以把混叠理解成:

[
f_{alias}=|f_{in}-k f_s|
]

其中:

  • (f_{in}):模拟输入频率;

  • (f_s):采样率;

  • (k):某个整数。

实际观察时,还要继续把频率折叠到:

[
0\sim\frac{f_s}{2}
]

范围内。

新人阶段不需要死记复杂公式,先记住一个方法:

以 (f_s/2) 为边界,频谱会周期重复,并不断折回第一 Nyquist 区。

例如对于 5 GS/s:

模拟输入频率FFT 中可能看到
1.0 GHz1.0 GHz
2.0 GHz2.0 GHz
2.8 GHz2.2 GHz
3.8 GHz1.2 GHz
4.5 GHz0.5 GHz
5.5 GHz0.5 GHz

注意最后两项。

4.5 GHz 和 5.5 GHz 都可能落到 0.5 GHz。

这正是“不同模拟频率产生同一个数字频率”的含义。

所以只看 FFT 上的 0.5 GHz 峰值,你并不能天然知道模拟输入究竟是 0.5 GHz、4.5 GHz,还是 5.5 GHz。


4. 放到 FPGA / ADC 项目里看

再回到两个 5 GS/s ADC 时间交织的项目。

单个 ADC:

采样率:5 GS/s 采样周期:200 ps ADC0:● ● ● ● 0 200 400 600 ps

如果 ADC1 理想情况下错开 100 ps:

时间 ─────────────────────────> ADC0:● ● ● ● ADC1: ● ● ● ● 合并:● ● ● ● ● ● ● 0 100 200 300 400 500 600 ps

合并之后,每 100 ps 得到一个采样点,因此等效采样率为:

[
f_s=\frac{1}{100\text{ ps}}=10\text{ GS/s}
]

也就是说:

两个 5 GS/s ADC 理想时间交织后,可以得到 10 GS/s 的等效采样率。

此时数字系统第一 Nyquist 区间变成:

[
0\sim5\text{ GHz}
]

所以一个 3.8 GHz 信号:

  • 对单个 5 GS/s ADC 的采样序列来说,位于第一 Nyquist 区之外;

  • 对理想 10 GS/s 交织后的完整采样序列来说,3.8 GHz 位于第一 Nyquist 区内。

这也是提高等效采样率的重要意义之一。

但是这里一定要注意:

10 GS/s 采样率,不代表模拟输入带宽一定有 5 GHz,更不代表 ADC 可以无条件采集 0~5 GHz 的所有信号。

采样率和模拟输入带宽是两个不同指标。

ADC 前端的 Track-and-Hold、输入网络、封装、PCB、巴伦等都会限制模拟带宽。

反过来,有些 ADC 的模拟输入带宽甚至可以高于第一 Nyquist 区,这时还可以利用混叠进行欠采样(Undersampling)或带通采样(Bandpass Sampling)

也就是说:

混叠并不永远是“错误”。

如果你提前设计好输入频段和抗混叠滤波器,它甚至可以被主动利用。

真正危险的是:

你不知道它发生了。


5. 用 Python 看一下混叠

下面这个例子故意用 5 GHz 采样率采一个 3.8 GHz 正弦波,再做 FFT:

import numpy as np import matplotlib.pyplot as plt fs = 5e9 fin = 3.8e9 N = 1024 t = np.arange(N) / fs x = np.sin(2 * np.pi * fin * t) X = np.fft.rfft(x) f = np.fft.rfftfreq(N, 1 / fs) plt.plot(f / 1e9, np.abs(X)) plt.xlabel("Frequency (GHz)") plt.ylabel("Magnitude") plt.grid() plt.show()

运行之后,你会发现:

FFT 峰值并不在 3.8 GHz,而是在大约 1.2 GHz。

因为:

[
5-3.8=1.2\text{ GHz}
]

这里的代码只是帮助理解混叠现象,不是严格的 ADC 性能测试方法

实际测试 SNR、SNDR、SFDR、THD、ENOB 时,还要考虑相干采样、FFT 点数、窗函数、基波和谐波 bin 的处理方式等问题。


6. 新人容易搞错的地方

误区一:FFT 看到 1.2 GHz,输入就一定是 1.2 GHz

不一定。

在 5 GS/s 系统中,3.8 GHz 同样可能混叠到 1.2 GHz。

因此分析实际 ADC 频谱时,必须同时知道:

采样率、模拟输入频段和 Nyquist 区间。

误区二:超过 (f_s/2) 的信号 ADC 就完全采不到

也不准确。

它可能仍然被 ADC 模拟前端采到,只不过数字域中的频率发生了折叠。

能不能采到,还取决于 ADC 的模拟输入带宽

误区三:提高采样率就能解决所有高频采集问题

不能。

提高采样率可以扩大 Nyquist 区间,但高速采集还受到模拟带宽、时钟抖动、前端噪声以及时间交织 ADC 的 Gain、Offset、Timing Skew 等误差影响。

所以10 GS/s只说明每秒获得 100 亿个等效采样点,不等于整个采集链路自动拥有理想的 5 GHz 有效带宽。


7. 总结

这一篇最重要的是记住下面几件事:

  1. 混叠的本质,是不同模拟频率在采样后产生了无法区分的离散序列。

  2. 对采样率 (f_s) 来说,第一 Nyquist 区通常是0~(f_s/2)

  3. 超过第一 Nyquist 区的频率可能折叠回来,所以输入 3.8 GHz,在 5 GS/s 采样下可能表现为 1.2 GHz。

  4. 采样率不等于模拟输入带宽,分析 ADC 时一定要把这两个指标分开。

  5. 两个 5 GS/s ADC 理想时间交织后可形成10 GS/s 等效采样率,但实际系统还需要解决通道失配和 Timing Skew 等问题。

下一篇继续聊:

《什么是时间交织 ADC?两个 5 GSPS ADC 如何实现 10 GSPS 采样?》

我们会从 200 ps 的单通道采样周期出发,看看两路 ADC 为什么只要错开 100 ps,就能把采样点“插”到一起,以及实际 FPGA 项目里真正麻烦的地方在哪里。

关键词

FPGA、ADC、混叠、Nyquist、FFT、频谱分析、时间交织ADC、高速采集

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询