LTspice FFT 사용법

Youtube에서 FFT를 한 번 검색했더니 알고리즘이 영상들을 추천해주기 시작했습니다. 어제 본 영상은 맨 아래 링크를 걸어두었는데 거기에서 설명한 제대로 FFT 시뮬하는 법을 요약해봅니다.

그 동안 바람님에게 많이 배워서 아래 그림에 나온 것들을 적용해서 쓰고 있었습니다. (사실 이렇게 봐도 대세에 지장은 없다 이게 사실입니다.)

위에서 보면 .options plotwinsize=0:FFT 옵션이 있는데 이게 없으면 아래와 같은 FFT 시뮬 결과가 나옵니다.

여기에 .options plotwinsize=0:FFT를 주면 아래와 같이 시뮬레이션의 잡음 성분이 일부 제거됩니다.

.options numdgt=7 을 추가합니다. 정밀도가 올라가면서 노이즈가 더 제거됩니다.


이젠 각종 파라미터를 설정하여 더 정확한 FFT 시뮬레이션을 하는 것에 대해서 동영상은 이야기 하고 있습니다.

.param freq=1K
.param fft_wait_cycles=10
.param fft_cycles=10
.param fft_points=2**18
.param fft_stepmax=fft_cycles/freq/fft_points
.tran 0 {(fft_cycles+fft_wait_cycles)*1/freq} {fft_wait_cycles*1/freq} {fft_stepmax}

1KHz에서 10 사이클을 기다린 후에 시뮬레이션 해서 보겠다는 의미니까 결국 0~20ms 동안을 시뮬레이션 해서 10~20ms 구간을 보게 됩니다. 제가 쓰던 길게 시뮬레이션 해서 맨 마지막을 보는 것과 일맥상통하는 것이죠.

fft_points에 2의 18승을 왜 주는지는 잊어버렸습니다 ㅡ.ㅡ

평소에는 fft_stepmax 자리에 1u을 줬는데 위의 계산식에 의하면 훨씬 작은 값이 되고 (약 38ns) 시뮬레이션 시간을 길게 만듭니다.

결국 위의 그림이 FFT의 측정 조건들을 충족시켜서 시뮬레이션 한 결과가 되겠습니다. 1MHz 오른쪽 구간의 노이즈까지 제거되었습니다. 그런데 이 놈이나 그냥 이전 방법에서 10~20ms 구간 보는 것이나 눈으로 보기에는 거의 비슷해 보입니다. ㅡ.ㅡ

다음으로는 푸리에 변환도 FFT 파라미터와 연동하는 것을 제시하고 있습니다. 이건 별건 아닙니다.

.four {freq} 9 {fft_cycles} V(out)

아래 스샷에서 입력단이 바뀐 것도 참조하시기 바랍니다.

위의 회로를 실제로 측정했을 때 2차 배음에 대해서는 일치하는 결과를 얻은 것 같습니다.

동영상 링크입니다.

댓글

답글 남기기