2011년 7월 29일 금요일

위성통신과 M/W

이론을 머리로 이해하는 것보다 현상을 몸으로 체감하는 것이 오래 남고 애착이 간다.
이론을 유도하고 증명할 수 있는 천재라면 좋을테지만,,,
나는 직관적 느낌과 꼼수있는 간략한 증명이면 만족하련다.
천재도 아닌데, 쓸데없는 강박으로 괴롭힘 받고 싶지는 않다!ㅎ

만약, 광장히 먼 곳에서 등방성으로 전파방사되는 송신안테나와 레이저처럼 고지향성으로 전파방사되는 송신안테나의 성능을 수신점에서 비교하면, 어떨까?
즉 만약 수직, 수평 1º 범위 안으로 레이저를 쏘듯이 전파를 쏜다면, 수신점에서 대략 360^2 만큼 이득이 생길것이다.
이때 상대이득으로 표시하면, 10*log10(360^2/1) =51.2 dBi       ※ 여기서 i 는 isotropic
좀더 정밀하면 좋겠지만, 아직 기술은 산탄총(?) 정도로 지향성 밖에는 구현을 못하나 보다.

이번 블로그에는 QAM 변조 방식에 대해 Matlab으로 알아보고, 현재 사용되고 있는 K모 기업의 임대목적 전용망 제공을 위한 위성통신서비스에 대해 의구심을 풀어보자!

  
L=41;      % filter Length
R=1E6;     % data Rate = 1Mbps
Fs=8*R;    % oversampling by 8
T=1/R;     % pulse duration
Ts=1/Fs;   % sampling duration
alpha =0.5; % Design Factor for Raised Cosine Filter (rolloff factor)
%----------------------------------------------------------
% Raised Cosine Filter Design
%----------------------------------------------------------
if mod(L,2)==0
        M=L/2 ; % for even value of L
else
         M=(L-1)/2; % for odd value of L
end
g=zeros(1,L); %Place holder for RC filter's transfer function
for n=-M:M
        num=sin(pi*n*Ts/T)*cos(alpha*pi*n*Ts/T);
        den=(pi*n*Ts/T)*(1-(2*alpha*n*Ts/T)^2);
        g(n+M+1)=num/den;
        if (1-(2*alpha*n*Ts/T)^2)==0
                g(n+M+1)=pi/4*sin(pi*n*Ts/T)/(pi*n*Ts/T);
        end
        if (pi*n*Ts/T)==0
                g(n+M+1)=cos(alpha*pi*n*Ts/T)/(1-(2*alpha*n*Ts/T)^2);
        end
end
% max(conv(g,g))로 filter 응답 normalize
g=g/sqrt(max(conv(g,g)));
stem(g)

%-------------------------------------------------------------
% Baseband signal
%-------------------------------------------------------------
%Generate 복소수
data=-1+2*round(rand(1,1000))+i*(-1+2*round(rand(1,1000)));   % =qammod(x, 4)
output=upsample(data,Fs/R);  
% UPSAMPLE(X,N) upsamples input signal X by inserting N-1 zeros between input samples
y=filter(g,1,output);  
% data <=> downsample(y(21:end-21),8);
eyediagram(y,2*Fs/R);     
figure(3), pwelch(y), title('QAM 기저대역신호의 PSD')


%-------------------------------------------------------------
% Frequency shift
%-------------------------------------------------------------
t=(1:length(output))*Ts;
yc=sqrt(2)*real(y).*cos(2*pi*(3*R)*t);    % RF 중심주파수f= 3*R =3 MHz
ys=sqrt(2)*imag(y).*sin(2*pi*(3*R)*t);
y_RF=yc+ys;
figure(4), pwelch(y_RF), title('QAM RF신호의 PSD')
 

data <=> downsample(y(21:end-21),8)





4-QAM(QPSK) 변조를 이용하여 3 MHz의 중심주파수로 1.5MHz의 대역폭을 통해, 2Mbps 의 데이터 전송률을 구현한 시뮬레이션이다. rolloff factor를 변경해 볼 수 있고, 여러 M-ary QAM으로 변경가능하다. 또한 RF 주파수 변경도 가능하다. 위에서는 간단히 2000 Bits(yc, ys)만 생성해 봤다. 참고로 symbol 에너지 Es=1^2+1^2=2 , bit 에너지 Eb=Es/bits=2/2=1 이다.

다음은 실제 상용화되어 서비스하고 있는 위성통신의 예이다.



가입자 단말기 입장에서 보면,


통신상대방 : 무궁화위성5호 (적도상공 35,786km)


Information Rate = 3.75 Mbps

Channel Data Rate = Information Rate * 1/FEC = 3.75 * 4/3 = 5 Mbps

Symbol Rate = Channel Data Rate * 1/n = 5 * 1/2 = 2.5Msps (QPSK는 n=2)

점유대역폭 = (1+rolloff factor)* Symbol Rate= 1.2 * 2.5 =3 MHz


캐리어당 단말기 출력 (Buc Power)

= EIRP – 안테나이득 + 손실 = 50.5dBW -49.2dBi + 1dB =2.3 dBW =1.7W


※ EIRP(effective isotropically radiared power, 유효등방성 복사전력) 일반적으로 송신시스템의 출력 성능을 표현하는 기준으로 송신기 출력
 



일반적인 모토로라 휴대용 무전기가 5W 출력인것을 감안하면, 놀라운 일이다.
몇 십만km의 위성통신이 이렇게 저전력으로 가능한데, 길어야 수백km에 지나지 않는 우리나라의 마이크로웨이브 통신이야 두말할 나위가 없이 가사로울 것 같다.
실제로 도서지역의 전기통신 중계로 해저 광케이블 뿐만아니라 마이크로웨이브가 많이 이용되고 있다.
공중전화망에서 음성 1회선이 8 Kbps로 디지털화되니까, 약 500회선을 수용할 수 있는 데이터전송률이라고 할 수 있다.

2011년 7월 7일 목요일

스펙트럼 분석기

전자파가 이용하는 주파수(RF, Radio Frequency)는  독립적인 통신을 보장하게 하는
유한하고 유용한 자원으로 볼 수 있다. 그래서 국내뿐아니라 세계적으로도 RF를 효율적으로 개발하려 하고, 또한 엄격한 기준으로 관리를 하고 있다.
이렇게 중요한 RF의 효율적인 활용계획은 과학자들끼리 잘 할테니 각설하고, 여기서는 RF를 잘 이해하고, 측정할 수 있는 도구~! 바로 스펙트럼 분석기에 대해서 알아보도록 한다.^^;


위에 화면이 바로~ 스펙트럼 분석기의 모니터화면이다.
오실로스코프가 시간에 따른 파형변화를 관찰했다면, 스펙트럼 분석기는 주파수에 따른 스펙트럼을 관찰할 수 있다. 일반적으로 스펙트럼의 크기 단위는 전력[W]이지만, dBW, dBm 등 으로 보기 쉽게 변환하여 사용한다.

그럼 스펙트럼을 구하는 원리는 무엇일까?ㅎ
Matlab에서는 놀라울 정도로, 단 몇줄의 명령어로 간단히 찾아 준다.  
물론 컴퓨터는 바쁘게 행렬계산을 돌리긴 하지만,,,
 
먼저 두개의 Tone 신호(SNR=10dB)를 가정하고, 사각윈도우와 flattop윈도우를 적용한 스펙트럼 분석결과를 비교해 보기로하자!
 

N=2^6; n=0:N-1; f1=5; f2=16;
s=5*cos(2*pi*f1*n/N+pi/6)+10*sin(2*pi*f2*n/N+pi/3);
sp=sum(s.^2)/N; % 전력 sp=var(s) 분산
SNR=10; SNR_dB=10*log10(SNR); np=sp/SNR;
noise=sqrt(np)*randn(1,N); % np=sum(n.^2)/N , std(randn)=1
r=s+noise;
k=n-N/2; % sampling freq fs=2*max(k)
Ck=1/N*r*exp(-i*2*pi*(n')*k/N); % =1/N*fft(x, N)
figure(1), subplot(4,1,1), plot(n, r)
subplot(4,1,2), plot(k, abs(Ck))

rr=xcorr(r, 'unbiased'); rr=rr(N/2:end-N/2); % 1/N*xcorr(r)
subplot(4,1,3), plot(n,rr)
w=window(@flattopwin, N); w=w';
RRf=1/(4*length(rr))*fftshift(fft(rr,4*length(rr)));
x=w.*rr;
Xf=1/(4*length(x))*fftshift(fft(x,4*length(x)));
kk=k(1):1/4:k(end)+3/4;
subplot(4,1,4), plot(kk, abs(RRf))
figure(2), plot(kk, 10*log10(abs(RRf)), kk, 10*log10(abs(Xf)), 'r'), ylim([-30 10]) 



 s의 자기상관함수를 x 라고하면, Xf는 이산푸리에변환(DFT)을 한 것이다.
구해진 복소수 행렬 Xf의 절대값을 화면에 뿌리면, 스펙트럼 분석기처럼 얼추 비슷한 화면(PSD, Power Spectrum Density)을 관찰할 수 있다. 저 커다랗고, 복잡해 보이는 분석기도 알고보면, 이런 기능을 수행하기 위한 장비일 뿐이다. ㅎㅎ



그럼 이제 스펙트럼 분석기의 여러가지 조건 RBW, Sweep time, VBW에 대하여 각개격파를 실시하겠다. 맨위에 실제 분석기의 캡처화면에 나와있는 조건값들을 Matlab 코드와 비교하면서 설명하도록 한다.


Model:                  
E4446A
Serial Number:          
MY48250072
Center Frequency:       
500000000
Hz
Span:                   
300000
Hz
Resolution Bandwidth:   
2700
Hz
Video Bandwidth:        
2700
Hz
Reference Level:        
-40
dBm
Sweep Time:              
0.0496
Sec
Num Points:             
601


일단, 주파수 범위(k)는 중심주파수  500MHz를 중심으로 300KHz, 맨위 레벨이 -40dBm, 샘플포인트(N)가 601개 라는 것을 알 수 있다.

Resolution Bandwidth(RBW)은 관찰할 수 있는 주파수 해상도이다.
중간주파수(IF) 필터는 측정신호를 검출, conv(Xf, RBW)하기 위해서 대역통과필터를 사용하는데, 이 필터의 대역폭이 RBW이라고 한다. 작을 수록 더 촘촘하고 정밀한 스펙트럼을 얻는다. 대신  좀더 많은 샘플포인트(N)를 요구하게 되어 측정데이터시간(≒sweep time)도 길어진다.

△f =fs / N=1/(N*T)

△f =fs / N = 300KHz / 600 = 500Hz , RBW =5.4*500Hz = 2700Hz
여기서 RBW은 정규화된 천이폭을 곱한다. 여기서는  5.4 정도인데, 곱하는 이유는 주엽이 넓어지더라도 부엽들의 값으로 인해 저지대역을 더 감쇠시킬 목적이다.
참고로, 아날로그 신호를 DFT로 구하는 과정(윈도우 함수를 적용하는 과정)에서  오차가 발생할 수 밖에 없다. 누설현상을 최소화하기 위해서 델타함수와 가장 가까운 모양이 되는 윈도우를 선택하여야 한다.

사각(Rectangular) 윈도우

flat top 윈도우

또, Ck=1/N*fft(x, N)에서 △k 가 커지면 N이 줄어들어 c가 커진다. 그러므로 RBW이 10배 커지면, 노이즈 레벨도 10배 증가한다. 

Video Bandwidth(VBW)은 스펙트럼 분석기 화면상의 디스플레이를 위한 기능이다. 저역통과필터로 구성되어 있어, 파형의 급격한 변화를 제거하여 파형을 완만하게 만들어서 불필요한 잡음 또는 오차성분을 걸러내는 역할을 한다.

Sweep time(T_sweep) 은 신호 처리하고, 한장의 화면에 완전히 뿌려주는 시간을 의미한다. 초당 1/T_sweep 회 화면이 전환된다.

T_sweep=kf * (1/RBW) * (Span / RBW)
kf=1이라 하고 대략적인 검증을 해보면, 0.0496 ≥ (1/2700)*(300*10^3)/2700 =0.0411


이젠 실전에서, 주파수해상도를 높이는 것과 시간에 따른 스펙트럼변화 사이에서 절충하여, 적당한 분석기 조건으로 측정해야 할것이다.~~!