virtuoso快速傅里叶变换仿真

本文最后更新于:2026年8月5日 晚上

傅里叶仿真的注意事项


1. 相干采样

在Virtuoso中进行频谱分析,核心是进行FFT(快速傅里叶变换)设置。这通常是在完成瞬态仿真(tran) 后,对输出的时域波形进行后处理。

为了获得准确的频谱,最关键的一步是实现相干采样 (Coherent Sampling),以避免频谱泄露。

相干采样要求输入信号频率 (fin)、采样频率 (fs) 和采样点数 (N) 满足以下关系:

  • N:FFT点数,通常取2的幂,如1024、2048。
  • M质数,代表在N个采样点中包含的输入信号完整周期数。

简单来说,就是确保你的采样窗口恰好截取了整数个周期的信号波形。

起始时间 (Start Time)结束时间 (Stop Time)满足:

【举个例子】:

假设我瞬态仿真得到的波形基波频率为$300\text{Hz}$,于是$f_{in}=300\text{Hz}$

virtuoso默认采样点数是1024个点,我们通常需要设置的是起始时间 (Start Time)结束时间 (Stop Time)

首先确定$M$,通常为质数,通常可以取1、3、5、7。由于输入信号基频为300,因此此处可以取3,即可计算得到$\text{Stop Time}-\text{Start Time}=\frac{3}{300}=10ms$

若波形存在启动时间,则$\text{Start Time}$应大于启动时间,则整个tran仿真的时间应该大于$\text{Stop Time}$

比如波形从开始建立到稳定的时间为$500\mu s$,则可以设置$\text{Start Time}=1ms$,设置$\text{Stop Time}=\text{Start Time}+10ms=11ms$,tran总仿真时长设置为$12ms$

同时可以计算得到$f_s=102.4k\text{Hz}$

为满足奈奎斯特采样定理,可观测信号频率只能是采样频率的一半,因此我们FFT之后看到的频谱图横坐标(即频率)能看到的最大值为$f_s/2=51.2k\text{Hz}$

2. 具体操作

【第一步】:瞬态仿真 (Transient Simulation) 设置

在设置瞬态仿真时,就需要为后续的FFT分析做准备。

  • 仿真时间 (Stop Time):至少保证电路进入稳定状态后,还有足够时间采集N个点。一个常用的公式是:仿真总时间 >= 启动时间 + N / fs
  • 仿真步长 (Step):步长应足够小,以满足奈奎斯特采样定理,并准确捕捉信号细节。一般建议步长小于 1/(2·fs)

【第二步】:调用频谱分析工具 (Spectrum/FFT)

仿真完成后,在波形窗口 (Waveform Window) 中,通过菜单栏 Measurements -> Spectrum 来打开设置对话框。

【第三步】:关键参数配置

这是整个频谱分析的核心,每个参数都直接影响结果。

  1. Input Wave Type: 选择 Time Domain Waveform

  2. FFT Input Method: 推荐选择 Calculate Sample Frequency

    • 这种方式下,你需要指定FFT分析的起始时间 (Start Time)结束时间 (Stop Time),系统会自动算出采样频率。
    • Start Time至关重要,必须避开电路启动时的暂态过程,选择电路已稳定后的时间点。例如,可从 1ms 开始。
    • Stop Time:计算公式为 Start Time + M / fin,以满足相干采样。
  3. Sample Count / Number of Samples: 设置FFT点数 N,通常为1024、2048等2的幂。

  4. Window Type (窗函数):

    • Rectangular (矩形窗):适用于信号周期完美对齐(相干采样)的情况。对于Nyquist速率ADC,推荐使用此窗。
    • Hanning (汉宁窗):能有效抑制频谱泄露,适用于非相干采样或Sigma-Delta调制器等。
  5. Start/End Freq: 设置你关注的频率分析范围。可以点击 S 按钮,让它与你的 Start/Stop Time 自动同步。

  6. Harmonics: 设置想要观察或用于计算THD的谐波次数,通常设置为3到7次即可。如果波形实现不明显,则设置7次足矣,7次以上计算出来的THD和计算7次的差别不大。

  7. Signal Bins: 这个参数与窗函数有关,通常保留默认值即可。

【第四步】:生成频谱图与分析

完成所有设置后,点击 Plot 按钮,即可生成频谱图。在频谱图上可以直接读出基波、各次谐波以及噪底的功率值,用于后续计算THD、SINAD、SFDR等动态参数。

3. 注意事项

  • 较为精确设置初始时间和结束时间:如果选取不合适,则可能出现以下情况。

    例如,希望观察 fin=300Hz,选取M=7N=1024,计算 Stop Time-Start Time=23.333ms,但是你设置的Stop Time-Start Time=23ms,则实际观测到频率为 fin = 7/23ms = 304.3Hz,和300Hz有所偏差。

  • 关于M(信号周期数)的选择M 必须为质数,通常取3、5、7。

  • 采样点数并非越多越好:过高的采样点数(如16384)可能导致样本间差异过小,反而影响FFT结果的有效性。

  • 如何包含噪声:如果需要分析包含噪声的频谱,需在电路或输入信号中引入噪声源。常规的瞬态仿真本身不包含器件噪声。

  • 常见问题排查

    • THD计算结果为0:检查 Harmonics 是否设置正确,或电路是否过于理想化。
    • 频谱泄露严重:检查 Start/Stop Time 的设置是否严格满足相干采样条件。
    • SNR大于SNDR:这通常意味着仿真或FFT设置存在问题,因为SNDR = SNR + THD,理论上SNDR应大于SNR。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!