2013년 2월 1일 금요일

상승시간(Rise Time)과 주파수대역(Bandwidth) (3)

어떤 주어진 신호는 두가지의 서로 다른 영역(domain)에서 분석이 가능한데 하나는 시간영역(time domain)이고 또다른 하나는 주파수영역(frequency domain)이다. 지난번 1편2편에서 보았듯이 이 두영역은 서로 상호관계에 있다. 시간영역(time domain)에 있는 신호는 푸 에 변환(Fourier Transform)을 이용하여 주파수영역(frequency domain)에서 분석할 수 있는데 푸리에 분석(Fourier Analysis)의 핵심은 바로 모든 파형은 정현파(Sinusoidal waveform)들의 조합으로 되어있다라는 사실이다. 지난시간 Knee frequency를 설명할때 사다리꼴파형을 FFT(Fast Fourier Transform)한 그림을 보여주었는데 여기서는 푸리에 시리즈(Fourier Series)를 이용하여 상승시간(Rise Time)과 주파수대역(Bandwidth)의 관계를 알아보기로 한다.

구형파를 주파수영역에서 보면 우수성분(even component)의 주파수는 0이고 기수성분(odd component)의 유한한 주파수 성분을 볼 수있는데 가장 처음의 성분을 기본 주파수(fundamental frequency)라 하고 나머지 성분들을 n-차 하모닉(harmonic)성분이라고 한다. [그림 1]에 보인 예처럼 1GHz의 구형파 신호를 주파수 영역에서 보면 1GHz에서 기본 주파수를 볼 수 있고 3GHz, 5GHz, 7GHz... 등에서 그 3차, 5차, 7차하모닉을 볼 수 있다. 기본 주파수와 하모닉의 진폭은 푸리에 계수(Fourier Coefficient)에 의해 결정되며 시간영역에서 전압진폭이 1V일 경우 n 이 하모닉 수이면 하모닉 진폭 Ao = 4/(π n)가 된다. [그림 1]의 아래에 보인 그래프를 주파수 스펙트럼(frequency spectrum)이라고 하는데 이것이 의미하는 바는 스펙트럼에서 보여진 모든 주파수성분을 갖는 정현파(sinusoidal waveform)들을 합하면 1GHz의 구형파가 생성된다는 것이다.

[그림 1]

각각의 스펙트럼 성분들을 시간영역에서 다시 보이면 [그림 2]와 같다. 그림에서 보는 것처럼 먼저 기본 주파수(fundamental frequency)인 1GHz의 sine파형으로 시작해서 각각의 하모닉성분들을 합해갈 수록 1GHz 구형파에 가까워 짐을 알 수 있다. [그림 2]에서 보여진 예는 [그림 1]의 주파수 스펙트럼에서 보여진 것처럼 19번째 하모닉인 19GHz sine파형까지 합한 경우이다.  이 말을 달리 표현하면 [그림 2]의 신호는 19GHz의 주파수 대역(frequency bandwidth)을 갖는 구형파라고도 할 수 있다. 여기서 또 한가지 알 수 있는 것은 고주파수의 성분들이 합해질수록 신호의 상승시간(rise time)이 빨라진다는 것이다. 즉, 상승시간이 빠를수록 그 신호안에는 보다 더 많은 고주파성분을 가지고 있다는 것이다. 상승시간을 가지고 얼마나 높은 주파수 성분이 들어있나 알아 볼 수 있는 방법이 바로 지난 시간에 설명한 FBW = 0.35/Tr 또는 Tr = 0.35/FBW 이다.

[그림 2]


## 구형파의 Fourier Series(Python 2.7)
## Written by SimplyPHY

from numpy import *
from pylab import *
import matplotlib.pyplot as plt

L = 1000
N = 2*L

M = 10

d = 100

xn = hstack((-1+zeros(L), ones(N-L))) # 구형파

Xk = fft(xn,N) # 구형파의 FFT


for s in range(1,N):
    Hk[s]=2*real(Xk[s])/(s*pi)

xtick_intval=10.0

plt.subplot(211)
plot(xn)
ylim(-1.1, 1.1)
xticks(arange(0, N, N/xtick_intval), arange(0, N/N+1/xtick_intval, N/xtick_intval/N))
xlabel('Time(nsec)')


ylabel('Voltage(V)')

plt.subplot(212)
stem(arange(0,N/d),abs(Hk[0:len(Hk)/d]))
xlabel('Frequency(GHz)')
ylabel('Harmonic Amplitude')

t=arange(-pi,pi,1.0/N)

x = zeros((len(t)))
y = zeros((M+1, len(t)))  # 리에급수를 저장할 2차원 matrix

# 퓨리에급수
for i in range(1,2*M,2):
    x = x + 4/pi*sin(i*t)/i
    y[(i+1)/2,:] = x

yy = len(y.T)

plt.figure()
plot(y[1:M:1,:].T)
xlim(0, 1.1)
xticks(arange(0, yy+yy/xtick_intval, yy/xtick_intval), arange(0, yy/yy+1/xtick_intval, yy/xtick_intval/yy))
xlabel('Time(nsec)')

show()

댓글 없음:

댓글 쓰기