前言

上一回我们介绍了 LTspice 中的瞬态分析(Transient Analysis),今天接着讲解另一实用功能 —— FFT 分析工具。

FFT 即快速傅里叶变换(Fast Fourier Transform),核心作用是计算并显示信号所含的频率分量。LTspice 中的 FFT 依赖由瞬态分析获取的时域数据,因此使用前需对电路先进行瞬态分析。


今日案例 —— 信号源的 FFT 分析

1. 准备工作

完成 LTspice 的安装,我选用经典版本 Version 17.2.4 。

2. 构建电路

新建一个正弦波信号源,参数设置为 DC Offset = 0V ; Amplitude = 1V ; Feq = 1000Hz,并且添加一个名为 “ Ref ” 的 Label :

图1 构建电路

图1 构建电路

3. 瞬态分析

运行电路的瞬态分析,参数设置为 stop time = 10ms,查看 “ Ref ” 波形如下:

图2 电路瞬态分析

图2 电路瞬态分析

4. 第一次 FFT 结果

对 “ Ref ” 波形右击,选择 View -> FFT,弹出 FFT 对话框,默认参数不用变,选择 Ref 信号即可:

图3 FFT 对话框

图3 FFT 对话框

在此注意看:

  • 有一个 “Number of data point samples in time = 262144”,这是 2 的 18 次方,FFT 经典算法要求数据量是 2 的整数次幂,我们时域数据没有那么多点,所以应该会做填充。
  • Windowing Function 默认没有,对于我们的情况应该不需要,因为 10ms 的时域分析正好是 1000Hz 正弦波信号的整数倍。

然后弹出 FFT 频谱图如下:

图4 第一次 FFT 结果

图4 第一次 FFT 结果

在此观察一下:

  • 横轴的频率用对数形式表示,纵轴的幅度用 dB 表示;
  • 在频率 1KHz 上为 0 dB;
  • 左侧 Noise Floor 大概是 -130 dB;
  • 50KHz 往后有杂散信号(Spur),最大杂散信号的 SFDR 大概是 75 dB;
  • 整体频谱图看上去不是很清晰。

5. 第二次 FFT 结果,调整 numdgt、plotwinsize 参数

为提升 FFT 频谱图效果,有两个 LTspice 的内置参数可以调整 —— 分别是 numdgt 与 plotwinsize,我们可以在帮助菜单中看到详情:

图5 numdgt、plotwinsize 参数说明

图5 numdgt、plotwinsize 参数说明

大致意思是:

  • numdgt 是量化位数,将其设置为大于 6 的数值,可以使用更高精度(double precision);
  • plotwinsize 是与显示压缩有关,将其设置为 0,禁用压缩。

所以我们添加两句指令,分别是 “.options numdgt=7” 和 “.options plotwinsize=0” 如下:

图6 调整 numdgt、plotwinsize 参数

图6 调整 numdgt、plotwinsize 参数

然后重新运行一下 瞬态分析 与 FFT,第二次 FFT 频谱图如下(为了区分更改了 FFT 颜色):

图7 第二次 FFT 结果

图7 第二次 FFT 结果

可见:

  • 这次 FFT 频谱图比第一次的时候清晰了很多;
  • Noise Floor 也有所下降,大概是 -170 dB;
  • SFDR 发生在 100 KHz,大概是 105 dB。

6. 第三次 FFT 结果,调整采样率

FFT 的频率分辨率公式为:Δf = f_s / N

其中:

  • Δf 表示频率分辨率
  • f_s 是采样率
  • N 是 FFT 分析的数据数量

频率分辨率越高,Noise Floor 越低,因为噪声靠积分累加而得,而其总能量并没有改变。

所以我们在瞬态仿真的时候,设置一下 Max. Timestep 为 100ns:

图8 图8 Max. Timestep 参数设置

图8 图8 Max. Timestep 参数设置

然后重新运行一下 瞬态分析 与 FFT,第三次 FFT 频谱图如下(为了区分更改了 FFT 颜色):

图9 第三次 FFT 结果

图9 第三次 FFT 结果

这个频谱图看上去就不错了:

  • Noise Floor 大概是 -330 dB;
  • SFDR 大概是 240 dB。

将本次与之前的瞬态分析波形导出,总时间长度都是 10ms,采样率(Timestep)不同,对比一下点数上的区别:

图10 图10 瞬态分析波形点数对比

图10 瞬态分析波形点数对比

本次 10ms / 100ns = 100,000 即 10 万个点,而之前只有 1,000 个点,相差 100 倍,这对 FFT 频谱图造成了显著的差异。


总结

今天我们介绍了 LTspice 中的 FFT 分析工具,并对其中相关参数在不同设置下的影响做了对比说明。

有一些老外工程师对 “LTspice FFT” 的话题做过深入讨论,有兴趣可以阅读参考资料。


参考资料

  1. https://electronics.stackexchange.com/questions/370920/whats-the-junk-at-the-end-of-my-fft-in-ltspice
  2. https://hodany.com/2022/01/signal-analysis-in-the-frequency-domain-with-ltspice-part-1/

欢迎关注我的微信公众号“疯狂的运放”,及时收到最新的推文。