현대 사람들이라면 주파수라는 말을 들어보지 못하신 분들은 없을 것입니다.

 

핸드폰을 다 사용하니 SK 주파수가 어떻고~ KT 주파수는 어떻고~ 하는 말도 많이들 들어보셨을 테고~

 

요즘은 라디오 하나만 들을라고 해도 라디오 주파수라는걸 알아야 되니깐 우리는 알게 모르게 주파수라는걸 자주 접하고 있습니다.

 

어쨌든 이런 주파수는 통신에 있어 굉장히 중요한데~

 

오늘은 주파수 변환에 MATLAB 을 사용하여 간단히 알아보겠습니다.

 

코드는 다음과 같습니다.

ft=2e6; % exp signal frequency

fc_U=10e6; % Carrier Frequency

fc_D=11e6; % Carrier Frequency

 

 

Fs=40e6; % Sample rate

Ts=1/Fs; % Sample duration

 

L=10000; % # of Sample

n=(0:(L-1))*Ts;

 

 

Data=exp(1i*2*pi*ft.*n); % Cosine + j Sine data

Carrier_signal=exp(1i*2*pi*fc_U*n); % Up conversion carrier

Carrier_signal2=exp(-1i*2*pi*fc_D*n); % Down conversion carrier

 

UpConversionedData=Data .* Carrier_signal; % Up conversion

DownConversionedData=UpConversionedData .* Carrier_signal2; % Down conversion

 

 

 

NFFT = 2^nextpow2(L); % FFT size

Y1 = fft(Data,NFFT)/L; % FFT of exp() data

Y_U = fft(UpConversionedData,NFFT)/L; % FFT of UpConversioned Data

Y_D = fft(DownConversionedData,NFFT)/L; % FFT of DownConversioned Data

f = Fs/2*linspace(0,1,NFFT/2+1); % Frequency axis

 

%% Graph

 

figure, subplot(311)

plot(f,2*abs(Y1(1:NFFT/2+1))) , grid on

title('FFT of exp() ')

xlabel('Frequency (Hz)')

ylabel('|Y1(f)|')

 

 

subplot(312)

plot(f,2*abs(Y_U(1:NFFT/2+1))) , grid on

title('FFT of Upconversioned data')

xlabel('Frequency (Hz)')

ylabel('|Y_U(f)|')

 

subplot(313)

plot(f,2*abs(Y_D(1:NFFT/2+1))) , grid on

title('FFT of DownConversioned data')

xlabel('Frequency (Hz)')

ylabel('|Y_D(f)|')

위 예는 간단하게 2 MHz 주파수의 exp() 톤 신호를 10 MHz up conversion 했다가 11 MHz down conversion 하는 예제 인데요~

 

Up down conversion 은 수학적으로는 간단하게 sin, cosine 함수를 적절히 곱해주면 되는 겁니다.

 

주석에 설명을 해서 굳이 설명 드리지는 않겠습니다.

 

다음과 같이 Up Down Conversion 결과를 보실 수 있습니다.

 

'통신' 카테고리의 다른 글

Digital Signal Up Down Conversion  (0) 2012.10.20
[C/C++] Q, erfc function  (0) 2011.10.05
[디지털 통신] Quantization 에 따른 SNR  (0) 2011.05.24
[디지털 통신] QAM mapping & demapping  (4) 2011.04.09
[디지털 통신] BPSK, QPSK  (4) 2011.03.08

오늘 간만에…… 왠 바람이 불어서인지는 모르겠지만…… Math.h 헤더 파일을 들여다 보게 되었다.

 

예전에는 그냥 무심코 쓰던 헤더였는데…… 이상하게 보고 싶어서 머가 들어있나 들여다 봤다.

 

근데 이런 썩을…… erfc() 함수가 아주 예쁘게 정의되어 있었다.

 

erfc() 함수가 정의되어 있다는 건 Q-function 도 아주 손 쉽게 정의해서 쓸 수 있다는 것이고~~

 

참조: 2011/03/19 - [MATLAB] - MATLAB erf, erfc, Q- function

 
내가 암 것도 모르던 무식한 시절 ~~~ 날 밤 새가며 사다리꼴 적분 법으로 짰던 Q-function 은 단 한 줄로 끝난다는 얘기였다.

 

qfunc()는 다음과 같이 짤 수 있다.

#include <math.h>

 

double qfunc(double v)

{    

    return erfc(v/sqrt(2.0))/2.0;

}


 

오늘의 교훈 1: 모르면 무식하게 코딩 하지 말고~ 일단 찾아봐라…… 웬만한 건 다~~ 있다.

 

오늘의 교훈 2: C 나 C++ 코딩 할 때…… 헤더부터 보는 건 기본 중에 기본이다


'통신' 카테고리의 다른 글

Digital Signal Up Down Conversion  (0) 2012.10.20
[C/C++] Q, erfc function  (0) 2011.10.05
[디지털 통신] Quantization 에 따른 SNR  (0) 2011.05.24
[디지털 통신] QAM mapping & demapping  (4) 2011.04.09
[디지털 통신] BPSK, QPSK  (4) 2011.03.08

 

디지털 설계 시 quantization에 따른 SNR 을 계산하여 필요한 비트의 수를 결정하곤 합니다.

 

오늘은 quantization 레벨 또는 비트 수에 따른 SNR 이 어떻게 계산 되는지에 대해 알아보겠습니다.

 

 

 

 

위 그림과 같이 peak to peak voltage 가 Vpp 인 아날로그 신호를 L 개 레벨로 quantization 하는 경우를 생각해 보죠. 위 그림의 q 는 quantile level (quantization에 따른 간격)을 의미 합니다.

 

quantization에 따른 에러 확률은 –q/2~q/2 의 분포를 갖는 uniform 분포를 갖게 되므로 quantization에 따른 error variance 는 다음과 같이 계산 됩니다.

 

 

 

 

위 그림의 신호의 peak power 는 다음과 같이 계산 됩니다.

 

 

 

 

따라서 peak Signal power to average quantization noise power ratio는 다음과 같이 계산되죠.

 

 

 

 

1 비트는 0 또는 1이므로 2개의 레벨을 표현 할 수 있습니다. 따라서 L 개 레벨은 log2(L) = n 비트로 표현 가능 하며, L = 2n 이 됩니다.

 

이제 위 SNR 수식을 dB 스케일로 바꿔보죠.

 

 

 

 

위 식으로부터 1 비트당 20 log10(2) dB = 약 6.0206 dB 씩 SNR 이 향상됨을 확인 할 수 있습니다.

 

위 식으로부터 원하는 성능을 만족 시킬 수 있는 SNR에 따라 대략적인 디지털 단의 비트 수를 결정 할 수 있습니다.

 

예를 들면 SNR =72 dB 이상이 나와야 한다면 quantization 만 고려했을 경우 최소 12 비트 이상을 지원하는 ADC 를 써야 된다는 것입니다.

'통신' 카테고리의 다른 글

Digital Signal Up Down Conversion  (0) 2012.10.20
[C/C++] Q, erfc function  (0) 2011.10.05
[디지털 통신] Quantization 에 따른 SNR  (0) 2011.05.24
[디지털 통신] QAM mapping & demapping  (4) 2011.04.09
[디지털 통신] BPSK, QPSK  (4) 2011.03.08

 

오늘은 QAM(Quadrature amplitude modulation) mapping 과 demapping 방식에 대해 알아보겠습니다.

 

QAM 방식은 한글로 얘기 하면 직교 진폭 변조 라고 합니다.

 

실수부와 허수부의 진폭을 이용하여 변조를 한다는 건데요.

 

뭐 통신 책 등에는 수학적으로 표현하다 보니 복잡한 듯 하게 보일 때가 많은데, 알고 보면 그리 어렵지 않은 변조 방식입니다.

 

보통 M-QAM 이라 표현을 하는데 M 은 성좌점의 수를 말합니다.

 

한 심볼당 비트 수 k=log2(M) 이니깐 M 값에 따라 심볼당 비트 수를 나타내는 겁니다.

 

QPSK 방식을 4-QAM 이라 표현하는 분들도 계시더군요.

 



 

QPSK 지난 포스팅에서 설명을 했으니 8-QAM 변조 방식부터 알아보죠.

 

8-QAM 그대로 성좌점이 8 개인 QAM 변조 방식입니다.

 

다른 말로는 log2(8)=3 이니 3비트가 심볼 변조 돼서 전송 되는 방식이라고 설명 드릴 있겠습니다.

 

gray coding 적용한 8-QAM 성좌도는 다음과 같습니다.

 

 

그림을 보면 성좌  상하좌우 사이의 비트 차이가 1 비트씩 차이 나는 것을 확인 있습니다.

 



 

그림에서 파란색 선은 threshold 나타냅니다.

 

파란색 선을 기준으로 demapping 하면 되는 거죠.

 

수신 심볼이 010 트가 있는 구간에 있으면 010 비트로 demapping 하고 000 트가 있는 구간에 있으면 000 비트로 demapping 하면 되는 겁니다.

 

추가적으로 가지 qam mapping 방식에 대해 알아보죠. mapping 방식만 알면 demapping 이야 너무나 쉽습니다.

 


 


Gray coded 16-QAM

 

 

Gray coded 32-QAM

 

 

Gray coded 64-QAM

 

'통신' 카테고리의 다른 글

Digital Signal Up Down Conversion  (0) 2012.10.20
[C/C++] Q, erfc function  (0) 2011.10.05
[디지털 통신] Quantization 에 따른 SNR  (0) 2011.05.24
[디지털 통신] QAM mapping & demapping  (4) 2011.04.09
[디지털 통신] BPSK, QPSK  (4) 2011.03.08
  1. ssonge 2011.10.03 23:48

    저, 실례가 안된다면 매트랩으로 성좌도 어떻게 그릴 수 있는지 설명해주실 수 있을까요?ㅠㅠ

    • 남성 2011.10.04 03:47 신고

      복소수에 대해서 그냥 플롯 하시고 심볼로만 표시해 주셔도 되고요

      communication system tool box 가 있으시다면 scatterplot() 함수를 이용하셔도 됩니다.

      예를 들면


      x=[1+1j 1-1j -1+1j -1-1j]
      scatterplot(x), grid on

      하시거나

      plot(x,'rs'), grid on, axis([-1.5 1.5 -1.5 1.5]), axis equal

      해도 되고요

  2. 감사 2011.10.16 20:36

    감사합니다 도움 대박 돼써용 ㅎㅎ

    • 남성 2011.10.16 23:55 신고

      도움 되셨다니 다행이군요.

      방문해 주셔서 감사합니다.

디지털 통신의 가장 기본적인 전송 방식인 BPSK QPSK 에 대해 알아보자.

BPSKBinary Phase-shift keying 의 약자이고 1비트를 한 심볼에 전송한다.

QPSKQuadrature phase-shift keying 의 약자이고 2비트를 한 심볼에 전송한다.

위 글에서 알 수 있듯이 PSK 변조 방식은 반송파의 위상에 정보를 실어서 보내는 변조 방식을 말한다.

 

다음으로 성좌도라는 것에 대해 알아보자.

성좌도는 영어로는 constellation 인데 심볼의 좌표 모양을 말하는 것이다.

 

BPSK 의 성좌도는 다음과 같이 생겼다.

 

QPSK 의 성좌도는 다음과 같이 생겼다.

QPSK 성좌도에서 각 점은 심볼을 나타내고 그 위의 0, 1 숫자들은 비트 매핑을 나타낸다.

위 성좌도에서 각 심볼들은 가장 인접한 심볼간 비트 차이가 1인 것을 확인 할 수 있다. 이를 Gray 코딩이라 한다.

 

심볼 레이트는 BW 와 관련이 있다. 즉 심볼 레이트가 높아지면 BW 도 높아지고 심볼 레이트가 낮아지면 BW 도 낮아진다.

BPSK 는 한 비트씩 보내고 QPSK 는 2비트씩 보내니깐 ~

같은 대역폭을 이용하였을 경우 당연히 QPSK2배의 data rates 를 얻을 수 있다.


'통신' 카테고리의 다른 글

Digital Signal Up Down Conversion  (0) 2012.10.20
[C/C++] Q, erfc function  (0) 2011.10.05
[디지털 통신] Quantization 에 따른 SNR  (0) 2011.05.24
[디지털 통신] QAM mapping & demapping  (4) 2011.04.09
[디지털 통신] BPSK, QPSK  (4) 2011.03.08
  1. 2011.12.15 21:19

    비밀댓글입니다

  2. 2016.06.04 23:36

    비밀댓글입니다

    • 남성 2016.06.06 10:59 신고

      어디가까지나 제 생각을 적어 보자면 bit rate 가 동일한 경우에는 SNR 에 따른 BER 이 동일할것 같구요. Channel BW 가 동일할 경우에는 QPSK 가 2배의 Bit rate 로 보내겠지만 SNR 성능은 안 좋을것 같네요.
      위에 적었다 시피 정답 아니구요. 그냥 추측해 본겁니다.

+ Recent posts