ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

什么是混叠?一个频率为什么会“变成”另一个频率?

什么是混叠?一个频率为什么会“变成”另一个频率? 1. 为什么要了解混叠最近在做两个5 GS/s ADC 时间交织成 10 GS/s的高速采集项目时有一个问题很容易把新人绕进去明明模拟输入是一个确定频率的正弦波为什么经过 ADC 采样再送到 FPGA 做 FFT 后频谱上看到的却是另一个频率比如ADC 采样率5 GS/s输入信号3.8 GHzFPGA 做 FFT 后可能看到1.2 GHz3.8 GHz 去哪了ADC 把它“变频”了吗不是。这就是数字采样里非常重要的一个概念混叠Aliasing。如果以后要做高速 ADC、FFT、频谱分析、时间交织 ADC这个概念一定要真正理解而不是只记一句“采样率至少是信号频率的两倍”。2. 混叠到底是什么先说人话采样以后不同的模拟频率可能产生完全一样的离散采样点。一旦两组采样点完全相同FPGA 后面的数字逻辑就没有办法判断它们原来分别是什么频率。这就是混叠。为什么会这样ADC 并不是连续观察模拟信号而是每隔一段时间“看一眼”。假设采样率为[f_s5\text{ GS/s}]那么采样周期就是[T_s\frac{1}{f_s}200\text{ ps}]ADC 实际看到的是模拟信号~~~~~~~连续变化~~~~~~~ 采样时刻● ● ● ● ● 0 200 400 600 800 ps两个不同的模拟正弦波只要在这些采样时刻上的数值一样那么数字系统看到的就是同一组数据。换句话说ADC 并不知道两个采样点之间发生了什么。这就是混叠产生的根本原因。3. 用一个例子看懂假设[f_s5\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.81.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 GHz2.0 GHz2.0 GHz2.8 GHz2.2 GHz3.8 GHz1.2 GHz4.5 GHz0.5 GHz5.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 可以无条件采集 05 GHz 的所有信号。采样率和模拟输入带宽是两个不同指标。ADC 前端的 Track-and-Hold、输入网络、封装、PCB、巴伦等都会限制模拟带宽。反过来有些 ADC 的模拟输入带宽甚至可以高于第一 Nyquist 区这时还可以利用混叠进行欠采样Undersampling或带通采样Bandpass Sampling。也就是说混叠并不永远是“错误”。如果你提前设计好输入频段和抗混叠滤波器它甚至可以被主动利用。真正危险的是你不知道它发生了。5. 用 Python 看一下混叠下面这个例子故意用 5 GHz 采样率采一个 3.8 GHz 正弦波再做 FFTimport 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.81.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. 总结这一篇最重要的是记住下面几件事混叠的本质是不同模拟频率在采样后产生了无法区分的离散序列。对采样率 (f_s) 来说第一 Nyquist 区通常是0(f_s/2)。超过第一 Nyquist 区的频率可能折叠回来所以输入 3.8 GHz在 5 GS/s 采样下可能表现为 1.2 GHz。采样率不等于模拟输入带宽分析 ADC 时一定要把这两个指标分开。两个 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、高速采集
返回列表