2023년 6월 6일 화요일

[무선통신 시스템 설계] 6강. 직접변환 송신기 (Direct Conversion TX)

[무선통신 시스템 설계] 6강. 직접변환 송신기 (Direct Conversion TX)

-------------------------------------------------------------------
[일러두기] 이 글은 아래 강좌를 토대로 작성되었습니다. 일부 내용은 저의 생각 담아 첨삭하였습니다. 오류가 있을 수 있으니 강좌 원본을 꼭 함께 봐주시기 바랍니다.

[Radio System Design] Module 6. TX Direct Conversion / David S. Ricketts

함께 공부한다고 여기시고 아래 글에 오류가 있다면 가차없는 지적 바랍니다.
-------------------------------------------------------------------

개요

  • 직접변환 송신기의 구조(Direct Conversion Architecture)
  • 단점 (Non-Idealities)
    - 반송파 샘(Carrier Leakage)
    - 진폭과 위상의 불균형(Amplitude and Phase imbalance)
    - 위상과 주파수의 불균형(Phase and Frequency imbalance)

직접변환 송신기 구조(Architecture)

송신기

  • 신호파를 공간 복사(전파) 가능한 고주파에 얹어 놓는 장치
  • 주파수가 다른 두 아날로그 신호 섞는 장치 (Mixer)

I/Q 직접변환(Direct Conversion) 송신기의 기본구조

  • 국부 발진기(LO, Local Oscillator): 직교 반송파 생성
  • 반송파 믹서(Mixer): 신호파에 반송파 곱하기(Multiply)
  • 덧셈기(Adder): 두 직교 반송파와 곱해진 전파신 신호파 합침(Adder)

국부발진기에서 고주파(라디오 파)를 생성하여 신호파와 섞는다.

  • 직접변환: 단번에 섞어 고주파 생성
  • 직교(I/Q) 반송파: 고효율 방식으로 변조된 신호파

공중에 복사하려면 높은 전력이 필요하다.

  • 국부 발진기 전력을 높일 것인가?
  • 변조된 신호의 전력을 높일 것인가?
  • 단번에 고전력 만들기 어렵다.
  • 다양한 전력증폭기 (C, D, E 급)

  • 왜 현대 무선기기는 I/Q 인가?
    - 직교 반송파 사용으로 고효율 변조 방식이 가능
    - 변조 신호를 만들기 위한 각종 중간 과정 불필요
    - 고안정, 고정밀, 고주파 국부 발진기 (반도체 집적회로)
    - 고주파, 고효율 믹서 (Transistor/FET)
    - 고속 디지털/아날로스 신호 변환기 (ADC, DAC)
    - 고속 곱셈기 내장 소형 마이컴 (Micro-controller, CPU)
  • 고효율 변조방식(Modulation)의 수학적 접근
    - SSB: 측파대 억제
    - PSK: 좁은 대역폭, 다중비트 심볼

--------------------------------------------------------------------------------------------

[주] Frequency Division 방식 I/Q 믹서

  • Tayloe Detector
    - 가장 많이 사용되는 믹서
    - 직교 발진기로 디지털 카운터 사용
  • PRODUCT DETECTOR AND METHOD THEREFOR, Patent: US 6,230,000 B1, May 8, 2001 [Link]
  • Ultra Low Noise, High Performance, Zero IF Quadrature Product Detector and Preamplifier  By Dan Tayloe [Link]
  • 대중을 위한 소프트정의 라디오 [링크]
--------------------------------------------------------------------------------------------

[주] 변조(Modulation), 주파수 변환(Frequency Conversion), 키잉(Keying) 을 구분해 보자.

--------------------------------------------------------------------------------------------

반송파 샘(Carrier Leakage)

  • 믹서를 거쳐 변조(변환)된 신호에 국부 발진기 세력이 새나감.
  • 두개의 믹서와 합: I/Q 직접변환 송신기에서 새나감 요인이 늘어난다. 

I/Q 직접변환 송신기에 반송파 샘이 있을 경우

DC 오프셑 이 생기는 문제도 있지만 무엇보다도 수신측 성상도가 사선 방향으로 흐트러짐이 생긴다.

발진기 불평형(Imbalance) 문제

국부 발진기에서 생성된 I와 Q 반송파의 신호는 정확히 90도(π/4)의 위상차가 나야 한다.

------------------------------------------------------------------------

[주] 평형 변조(Balanced Modulation):

  • 진폭 변조에서 반송파 없는 양측파대 신호를 얻는 기법
  • SSB 는 양 측파대에서 한 측파대를 걸러내는 방식
  • 무선 음성 통신사(아마추어 무선사 포함)라면 귀따갑게 들어 봤을 바로 그 "평형변조"다.
  • Generating AM and DSB-SC with a Double-Balanced Diode Ring Mixer / Modulator [Link]

-------------------------------------------------------------------------

반송파 샘은 두 채널에 공히 일어 났으나 한 채널의 불평형이 다른 채널에 침입한다.

불균형이 수신측 성상도에 미치는 영향

  • 편이(shift)에 그치지 않고 왜곡(distort)이 일어난다.
  • 반송파 샘에 비해 더욱 좋지않다.

위상과 주파수 불안정(Phase and Frequency Instablity)

  • 온도가 가장 큰 원인
  • 단기간내 위상 불균형-> 잡음
  • 장기간 주파수 불균형 -> 주파수 편이

위상 불균형/불안정

  • 송수신기 내부 잡음의 원인
  • 성상도퍼짐(blurring)의 원인
  • 위상 안정성: I/Q 방식 직접변환 무선장비의 가장 중요한 요소

---------------------------------------------------------------------

출력 능동 제어(Adaptive Power Control)

  • 고주파 전력 증폭
    - 전력 증폭기 이득: 20~30dB
    - 무선 기기의 가장큰 전력 소모/열원
  • 중간 전력 증폭기(predriver)
    - 고주파의 종단 증폭의 어려움
    - 선형 전력 증폭이 아님: 낮은 주파수 전력 증폭 후 최종 증폭
  • 능동 출력제어: 휴대 무선기기의 전력 관리 방법
    - 중계기에서 전계강도 측정을 근거로 단말기 출력 제어(휴대전화)

----------------------------------------------------------------------------

현대적인 무선기기(휴대 무선 단말기)는 I/Q 직교 반송파를 이용한 직접 변조기 구조를 채택하고 있다. 다음 편에서는 다단 변조 주파수 변환 방식을 알아본다. 고전적인 헤테로다인(heterodyne) 방식이다.

-----------------------------------------------------------------------------

[질문 1] 최신 SDR 방식 무전기는 왜 작을까?

[질문 2] 공개된 소스와 회로도

---------------------------------------------------------------------------------------------------

<처음><이전><다음>

--------------------------------------------------------------------------------------------------





2023년 6월 3일 토요일

[무선통신 시스템 설계] 5강. 변조 대역폭(Modulation Bandwidth)

[무선통신 시스템 설계] 5강. 변조 대역폭(Modulation Bandwidth)

-------------------------------------------------------------------
[일러두기] 이 글은 아래 강좌를 토대로 작성되었습니다. 일부 내용은 저의 생각 담아 첨삭하였습니다. 오류가 있을 수 있으니 강좌 원본을 꼭 함께 봐주시기 바랍니다.

[Radio System Design] Module 5. Modulation Bandwidth / David S. Ricketts

함께 공부한다고 여기시고 아래 글에 오류가 있다면 가차없는 지적 바랍니다.
-------------------------------------------------------------------

[참조]

개요

디지탈 데이터 변조(PSK)에서 대역폭의 의미에 대해 알아본다.

  • 심볼간 간섭(Inter-Symbol Interference)
  • 펄스성형(Pulse Shaping)
    - 나이퀴스트 성형 필터 (Nyquist filter)
    - 증강 코사인 성형 필터 (Raised Cosine filter)
  • 대역폭 효율 (Bandwidth Efficiency)
    - PSK 방식에서 한 심볼에 여러비트를 넣을 수 있는 점에 주목

--------------------------------------------------------------------

[주] '디지털 펄스'는 여러 주파수의 정현파(사인파)들이 합쳐져 만들어 낸다는 말을 당연하게 한다. 하지만 신호처리를 막 공부하기 시작하면서 이런 말을 들으면 쉽게 받아 들여지지 못해 혼란을 격는다. '곱셈'은 '거듭 덧셈'이라는 점을 의심하지 않는 것처럼 실제로 그렇다는 것을 그림으로 그리고 코딩으로 확인해 보면 받아들이기 쉬울 것이다. 울프람 언어(Wolfram Language)를 이용해 수학을 시각화 해보면 받아들이기 수월할 것이다. [신호처리 '자기주도' 학습 도구, 울프람 언어(Wolfram Language)]

디지털 펄스(사각파 또는 구형파)를 주파수영역으로 변환해 보면 여러 고조파 주파수 성분들이 합쳐 만들어진 왜곡파다.

[실습1] 시간영역의 싱크 함수(Sinc function)를 주파수 영역으로 변환

싱크함수를 위키사전에서 찾아보면 이런 말이 나온다[링크].

"싱크 함수를 푸리에 변환하면 구형함수(Rectangular Function)의 모습을 한다."

정말 그런지 확인해 보자.

(* Sinc Function in Time *)
sincTime = Table[Sin[20*t]/(20*t), {t, -Pi, Pi, (2*Pi)/599}];
(* Avoid divide-by-zero *)

(* in Frequency domain *)
sincFreq = Fourier[sincTime];

(* Inversed to Time domain *)
sincInversed = InverseFourier[sincFreq];

ListLinePlot[{
    Labeled[sincTime, "Time"],
    Labeled[Abs[sincFreq][[1;;300]], "Frequency"],
    Labeled[sincInversed, "Time(Inversed)"]
}, PlotRange->All, PlotLayout->"Row"]

주파수 영역으로 변환 했더니 약간의 리플이 있긴 하나 구형파의 모습이다.

[실습2] 시간영역에서 표현되는 디지털 펄스(사각파)를 주파수 영역으로 변환

(* Binary Stream in Time Domain *)
dataTime = Table[0, 600];
dataTime[[1;;20]] = 1;

(*Frequency Domain*)
dataFreq = Fourier[dataTime];

(*Inverse Binary Stream*)
dataInversed = InverseFourier[dataFreq];

ListLinePlot[{
    Labeled[dataTime[[1;;300]], "Time"],
    Labeled[Abs[dataFreq][[1;;300]], "Frequency"],
    Labeled[dataInversed[[1;;300]], "Time(Inversed)"]
}, PlotRange->All, PlotLayout -> "Row"]

디지털 펄스는 주 주파수 성분(main lobe)에 주기적으로 등장하는 주변 성분(side lobe)을 가지고 있다는 점에 주목하자. 위 그림에서 주파수 성분 그래프는 절대값(허수의 켤레복소수 곱)을 보여준다(이를 파워 스펙트럼이라 함).

[실습3] 디지털 펄스(사각파)에서 주 주파수 성분만 제거하면 원 신호를 복원할 수 없다.

"주파수 성분 제거"는 필터를 의미한다.

(* Binary Stream in Time Domain *)
dataTime = Table[0, 600];
dataTime[[1;;20]] = 1;

(*Frequency Domain*)
dataFreq = Fourier[dataTime];

(* Low-Pass Filter: Remove Side-lobe *)
dataFreq[[32;;300]] = 0;
dataFreq[[301;;568]] = 0;

(*Inverse Binary Stream*)
dataInversed = InverseFourier[dataFreq];

ListLinePlot[{
    Labeled[dataTime[[1;;300]], "Time"],
    Labeled[Abs[dataFreq][[1;;300]], "Frequency"],
    Labeled[Abs[dataInversed][[1;;300]], "Time(Inversed)"]
}, PlotRange->All, PlotLayout -> "Row"]

이제 싱크 함수(Sinc function)와 구형파(디지털 펄스, 사각파)의 관계를 받아들이는데 거부감이 없어졌을 것이다. 이제 본 강의로 돌아가 보자.

----------------------------------------------------------------------------------------

대역폭(Bandwidth)

아날로그 신호의 변조에서 대역폭은 신호파(음성)의 점유 주파수 대역폭을 의미했다. 전파법[무선국 허가장에 표기된 전파형식]에 따르면 진폭변조된 측파대 음성의 대역폭은 2.8Khz으로 규정되었다. 이에 반해 디지털 데이터의 변조는 이보다 좁은 250Hz 다. 디지털 데이터 변조는 매우 좁은 대역폭을 점유하면서 디지털 화된 다양한 정보(문자, 사진 등)를 담아낼 수 있다.

-----------------------------------------------------------------------------------------------------

[주] 근래 아마추어 무선의 디지털 모드 통신으로 각광 받고 있는 FT8 형식은 대역폭 100Hz의  FSK 다. 13개의 영문자를 묶어 13초동안 전송한다. 1분에 4개의 묶음(slot)을 전송하는 규칙(protocol)을 정해 놓고 있다. 상측파대 음성변조(USB) 대역중 100Hz 를 차지하여 송수신한다. 따라서 SSB 수신기로 들어보면 여러 무선국들이 2.8Khz 대역을 나눠서 통신하는 모습을 볼 수 있다. 이론적으로 2.8Khz의 SSB 대역폭 내에 음성통신의 경우 한 무선국이 차지 하지만 FT8의 경우 28개의 무선국이 운용할 수 있다는 뜻이된다. 엄청난 효율이다. [참고: FT8 - The Basics Explained]

-----------------------------------------------------------------------------------------------------

디지털 변조에서 신호파는 펄스열(Pulse Stream, 직렬 2진수의 아날로그)로써 차지하는 대역폭이 매우 넓다. 디지털 신호파의 대역이폭이 넓어진 이유와 대역폭 제한 방법 아이디어?

  • 구형파(사각파)는 천이부분이 급격히 변함(비선형, 불연속)
  • 고차 고조파들이 합쳐서 만들어짐
    - 구형파의 파워 스펙트럼이 마치 싱크 함수(Sinc function)와 같다!
    - 디지털 정보를 구형파 대신 싱크함수로 표현하면 고조파 없앨 수 있겠지?
----------------------------------------------------------------------------------------------------

  • 사각파의 특징인 급격한 천이(Sharp Transition)로 인해 대역폭이 매우 넓어진다(BW→∞)
    - 사각파를 주파수 영역에서 분석해 보면 고조파 성분(Side Lobe)이 무시할 수 없을 만큼 존재한다.
  • 정보는 대부분 주 성분신호(main lobe)에 담긴다.
  • 주성분 신호의 주파수 점유 폭을 디지털 변조의 대역폭으로 삼는다.
    - 주성분 신호의 주파수 점유폭 Rs를 심볼 레이트(symbol rate)다.
    - Rs는 디지털 펄스 열에서 한 심볼이 차지하는 시간 구간 Ts의 크기에 반비례한다.
  • LPF를 써서 주 성분(main lobe)를 남기고 고조파 성분을 제거하면 사각파의 모습을 잃게된다.
    - 그냥 잘라내선 않된다. 뭔가 대책이 있아야 한다.

BPSK의 변조를 보면서 문제점을 생각하보자. BPSK는 가장 단순한 디지털 데이터 변조 방법이다. 2진 디지털 데이터의 아날로그 펄스 열에 반송파를 곱하여 위상을 뒤집어 변조시킨다.

주파수 영역에서 보면 아래와 같다. 펄스 열은 부 주파수 성분을 포함하고 있다. 반송파와 합성곱을 하면 이 부 주파수 성분들이 그대로 반영되어 매우 넓은 주파수 영역에 분포하므로 인접 통신 주파수를 침범한다. 말그대로 대역폭이 매우 넓어져 허용 대역폭을 벗어난다.

이 부 주파수 성분을 제거하기 위해 대역필터(BPF, Band-Pass Filter)를 적용 할 수도 있을 것이다. 하지만 이 부 주파수 성분이 제거되면 정작 신호파인 펄스 열을 심각히 왜곡 시키는 결과를 초래 한다.

심볼간 간섭 ISI

변조될 신호파인 펄스 열이 왜곡되면 시간적으로 연속된 이웃한 심볼과 구분을 어렵게 만든다. 이를 심볼간 간섭 ISI(Inter-Symbol Interference)라고 한다.

--------------------------------------------------------------------------------------------------

[주] 위상천이 키잉 PSK에서 한 심볼은 단순히 2진수 1비트가 아니다. 심볼은 여러 비트를 대변할 수 있다. 따라서 한번의 심볼 구간에 혼신이 발생하면 연속된 다수의 비트를 잃게 되어 오류정정 알고리즘으로도 복구가 어렵게된다. 저속 저주파수 대(단파대)의 디지털 무선통신의 경우 오류확인(error check)은 하더라도 오류정정(error correction)은 하지 않는 경우가 많다. 오류를 처리하기 위해 부가정보가 더 필요해지는데 전송로가 불안한 무선통신의 경우 효과를 볼 수 없기 때문이다. 실제로 FT8은 오류정정기법을 사용하지 않는다.

--------------------------------------------------------------------------------------------------

펄스 성형(Pulse Shaping)

무작정 대역필터 BPF를 들이댈 것이 아니라 변조신호인 디지털 펄스 열에서 원인을 찾아보자. 변조신호인 사각파에 급격한 변화가 있었다는 점에 주목하자. 사각파의 꺽인 부분을 부드럽게 모양을 잡아주면 부 주파수 성분의 세기가 매우 줄어들 것이다.

나이퀴스트 펄스(Nyquist Pulse)

싱크 함수(sinc function)를 펄스 표현으로 사용하려는 시도

  • 가장 큰 진폭을 차지하는 영역 밖의 시간에서도 일부 에너지가 존재하지만,
    - 시간 영역의 싱크 함수(sinc function)를 주파수 영역에서 보면 부 주파수 성분이 거의 없다. [실습1]
    - 가장 큰 진폭의 시간구간을 심볼 구간 Tb 로 삼는다.
  • "Smart shape of pulse"
    - 심볼 시간구간 Tb의 역수 1/Tb 가 대역폭(신호의 주파수 점유폭)과 일치한다.
  • 진폭이 0이 되는 지점에 맞춰 인접 심볼을 위치시키면 심볼간 간섭을 피할 수 있다.

  • 나이퀴스트가 생각해낸 이상적 펄스형태
    - 굵은선 싱크함수 진폭이 0일때 점선으로 표시된 인접 싱크함수의 최대 진폭점에 맞춤으로써 심볼간 간섭을 최소화 할 수 있다.
    - 싱크 함수가 "Smart shape"에 가깝다.

최적 대역폭(Optimum Bandwidth)

심볼간 간섭도 피하면서 최대의 전송량을 얻을 수 있는 심볼시간 Tb 구하기

  • 피변조 신호(디지털 데이터. 사각파)를 나이퀴스트 펄스(Nyquist Pulse)로 표현
  •  ISI를 피할 수 있는 나이퀴스트 펄스의 주기가 곧 최소 Tb 다.
    - 전송량을 늘리려면 Tb를 좁혀야 하지만 ISI를 극복해야 하므로 한계가 있다.
    - 나이퀴스트 펄스가 0을 지나는 지점에 이웃 펄스 배치 
  • 변조된 RF 신호의 전송율 Rb 는 (1/Tb)다.
    - 시간당 전송될 수 있는 심볼의 갯수
    - 변조파의 주파수는 신호파 보다 2배 커야 한다.

올림 코사인 펄스(RC, Raised Cosine Pulse)

  • 나이퀴스트 펄스가 이상적인 펄스 성형방법 이긴 하나,
    - 싱크함수를 쓰더라도 실제에서 주파수 성분을 직각 기울기로 차단 할 수 없다.
    - 할 수 없다면 차라리 둥글게 만들자.
    - 공학적 접근: 이상적이지 않다면 통제권 영역으로!

  • 올림 코사인 펄스(RC Pulse)는 널리 사용되는 펄스 성형법
    - 싱크 함수에 기반을 두고 있다. 
    - 코사인 함수의 역활: 주파수 영역에서 차단 주파수 곡선을 연속된 S 곡선으로 만든다.
    - 대역폭(곡선 기울기) 롤-오프 팩터(Roll-Off Factor) α 에 의해 결정된다.
    - 대역폭(Bandwidth): (1+α)/Ts


---------------------------------------------------------------

Raised Cosine Pulse의 정성적 이해

그림만봐도 알겠지? 

실습으로 눈으로 확인해 보도록 하자.

----------------------------------------------------------------

[실습4] Raised Cosine Pulse

이상적인 LPF의 단점을 보완한 나이퀴스트 필터의 시간영역 반응
  • (주파수응답): 직사각형 모양의 모난 부분을 부드럽게 해줌
  • (임펄스응답): 펄스 주기의 정수배 시점에서 크기가 0 이 되도록 함(Zero Crossing)
상승 코사인 펄스의 모양을 결정하는 요인들
  • 롤오프율 (Roll-off Factor)
    - 상승여현 필터의 기울기 (펄스 형태를 규정하는 값) : 0 ≤ α ≤ 1
    - 만일, α = 0 이면,
            주파수 영역: 이상적인 필터(직사각형) 형태
            시간 영역: Sinc 함수 형태
  • 심볼 구간(Ts, Symbol Time)
    - 한 심볼이 점유하게될 시간구간으로 전송율(Hz, Symbol Rate)의 역수
    - 대역폭(Bandwidth): (1+α)/Ts


[참조]

울프람 언어로 기술한 올림 코사인 펄스는 다음과 같다.

(* *************************************************************
 *  Function: Generating Raised Cosine Pulse in Time-Domain
 *  Params:
 *      bit: 1, 0
 *      symbolWidth: Symbol Width to sampling rate
 *      alpha: Roll-Off factor
 *      shift: in Time-Domain
 *)
raisedCosinePulse[bit_, symbolWidth_, alpha_, shift_] :=
{
    (* Parameters ---------------------------------------------*)
    bitZero = -1;   (* 0 *)
    bitOne = +1;    (* 1 *)
    bitStream = If[bit==1, bitOne, bitZero];
    sampleRate = 1999; (* Odd Number: Avoid divide-by-zero *)
    symbolT = Ceiling[(sampleRate/2) * symbolWidth];(* Symbol Time *)
    waveK = 2*(sampleRate/symbolT); (* Wave Number:Symbol Rate *)

    (* Sinc Function in Time ----------------------------------*)
    sincFunc = Table[Sin[waveK*t]/(waveK*t),
                    {t, -Pi*(1+shift), Pi*(1-shift), (2*Pi)/sampleRate}];
    (* Cosine Coeffs. -----------------------------------------*)
    coeffCos = Table[Cos[Pi*alpha*waveK*t]/(1-(2*alpha*waveK*t)^2),
                    {t, -Pi*(1+shift), Pi*(1-shift), (2*Pi)/sampleRate}];
    (* Raised Cosine Pulse in Time-Domain ---------------------*)
    raisedCosineTime = bitStream*(sincFunc * coeffCos);
}

데이터 시각화 함수: 시간 영역과 주파수 영역에서 상승 코사인 함수를 시각화

(* *************************************************************
 * Function: Data Visualization
 * Param:
 *      raisedCosineTime: data in Time-Domain
 *)
raisedCosinePulseVisualization[raisedCosineTime_]:=
{
    (* Raised Cosine Pulse in Frequency domain ----------------*)
    raisedCosineFreq = Fourier[raisedCosineTime];
    (* Inversed to Time domain --------------------------------*)
    raisedCosineInversed = InverseFourier[raisedCosineFreq];
    (* Power Spectrum -----------------------------------------*)
    raisedCosineFreqPwr = Abs[raisedCosineFreq];
    raisedCosineFreqPwr[[1;;Ceiling[sampleRate/2]+1]] =
                Abs[raisedCosineFreq][[Ceiling[sampleRate/2]-1;;sampleRate]];
    raisedCosineFreqPwr[[Ceiling[sampleRate/2]+2;;sampleRate]] =
                Abs[raisedCosineFreq][[1;;Ceiling[sampleRate/2]-2]];
    GraphicsColumn[{
        GraphicsRow[{
            ListLinePlot[{coeffCos, sincFunc}, PlotRange->All,
                        PlotLegends->{"Cosine", "Sinc"},
                        PlotLabel->"Sinc & Cosine(Time)"],
            ListLinePlot[{raisedCosineFreqPwr[[1;;sampleRate]], raisedCosineTime},
                        PlotRange->All,
                        PlotLegends->{"Freq(Pwr)", "Time"},
                        PlotLabel->"Raised Cosine Pulse"]
        }],
        
        ListLinePlot[{
            Labeled[raisedCosineTime, "Time"],
            Labeled[Abs[raisedCosineFreq][[1;;Ceiling[sampleRate/2]]], "Frequency"],
            Labeled[raisedCosineInversed, "Time(Inversed)"]
        }, PlotRange->All, PlotLayout->"Row", PlotLabel->"Raised Cosine Pulse"],
        
        ListLinePlot[{coeffCos, sincFunc}, PlotRange->All,
                        PlotLegends->{"Cosine", "Sinc"},
                        PlotLabel->"Sinc & Cosine(Time)"],
        ListLinePlot[{raisedCosineFreqPwr[[1;;sampleRate]], raisedCosineTime},
                        PlotRange->All,
                        PlotLegends->{"Freq(Pwr)", "Time"},
                        PlotLabel->"Raised Cosine Pulse"]
    }]
}

[실습4-1] 상승 코사인 펄스 생성 함수 사용법

raisedCosinePulse[bit=1, symbolWidth=0.4, alpha=0.5, shift=0.0];
raisedCosinePulseVisualization[raisedCosineTime]

[실습 4-2] 전송율을 높이기 위해 심볼 구간(Ts)을 좁히면 대역폭(BW)은 넓어진다.

raisedCosinePulse[bit=1, symbolWidth=0.01, alpha=0.1, shift=0.0];
raisedCosinePulseVisualization[raisedCosineTime];

[실습 4-3] 주파수 응답의 차단 곡선 기울기

raisedCosinePulse[bit=1, symbolWidth=0.01, alpha=0.01, shift=0.0];
raisedCosinePulseVisualization[raisedCosineTime];

[실습 4-4] 느슨한 상승 코사인 효과.
- Side-Lobe 성분이 제거되지 않은 싱크함수에 가깝다.

raisedCosinePulse[bit=1, symbolWidth=0.1, alpha=0.01, shift=0.0];
raisedCosinePulseVisualization[raisedCosineTime];


[실습 4-5] 적절한 펄스

raisedCosinePulse[bit=1, symbolWidth=0.2, alpha=0.4, shift=0.0];
raisedCosinePulseVisualization[raisedCosineTime];

[실습 4-6] 인접 펄스 겹침

raisedCosinePulse[bit=1, symbolWidth=0.2, alpha=0.3, shift=0.0];
raisedCosineTime1=raisedCosineTime;
raisedCosinePulse[bit=0, symbolWidth=0.2, alpha=0.3, shift=0.1];
raisedCosineTime2=raisedCosineTime
raisedCosinePulse[bit=1, symbolWidth=0.2, alpha=0.3, shift=0.2];
raisedCosineTime3=raisedCosineTime
raisedCosineTime =
    raisedCosineTime1 + raisedCosineTime2 + raisedCosineTime3;
raisedCosinePulseVisualization[raisedCosineTime];

[실습 4-7] 최적 심볼 시간 Tb 찾기

raisedCosinePulse[bit=1, symbolWidth=0.2, alpha=0.3, shift=0.0];
raisedCosineTime1=raisedCosineTime;
raisedCosinePulse[bit=0, symbolWidth=0.2, alpha=0.3, shift=0.05];
raisedCosineTime2=raisedCosineTime;
raisedCosinePulse[bit=1, symbolWidth=0.2, alpha=0.3, shift=0.1];
raisedCosineTime3=raisedCosineTime;
raisedCosinePulse[bit=1, symbolWidth=0.2, alpha=0.3, shift=0.15];
raisedCosineTime4=raisedCosineTime;
raisedCosinePulse[bit=1, symbolWidth=0.2, alpha=0.3, shift=0.24];
raisedCosineTime5=raisedCosineTime;
raisedCosinePulse[bit=1, symbolWidth=0.2, alpha=0.3, shift=0.28];
raisedCosineTime6=raisedCosineTime;
raisedCosineTime = raisedCosineTime1 + raisedCosineTime2 +
                     raisedCosineTime3 + raisedCosineTime4 +
                     raisedCosineTime5 + raisedCosineTime6;
raisedCosinePulseVisualization[raisedCosineTime];


---------------------------------------------------------------

[주] 임펄스 응답(Impulse Response) 과 주파수 응답(Frequency Response)

  • 말은 근사한데 별거 없다.
    - 단순하게 아날로그 함수를 디지털 샘플링 한 값들의 집합
    - 등간격 디지털 샘플링이 곧 임펄스를 의미한다.
  • 등간격으로 1을 찍어놓고 함수에 넣어 그 값을 취합 한 것.
    - 임펄스 응답: 등간격으로 1을 시간 영역에서 늘어 놓음
    - 주파수 응답:  등간격으로 1을 주파수 영역에서 늘어 놓음
  • 상호 관계는 시간과 주파수 변환(퓨리에 변환)
  • "등간격으로 1을 찍어놓고"를 유식하게 말하면 이산(discrete)
  • "선형시불변(Linear Time-Invariant)"
    - 이 또한 별거 아니다.
    - 등간격으로 1을 찍어놓고 함수를 구하는데 찍는 위치를 꼭 0부터 시작하라는 법은 없다. 
  • 온갖 그럴듯한 수식을 동원한 설명을 굳이 보고 싶다면 검색해 보라!
    - 임펄스 응답: http://www.ktword.co.kr/test/view/view.php?m_temp1=3722
    - 선형 시불변: http://www.ktword.co.kr/test/view/view.php?m_temp1=4994&id=1111
  • 시스템 함수
    - 입력에 임펄스 대신 임의의 연속 값을 넣어도 성격을 유지하도록 교묘하게 만든 것
    - 예를들면, 필터의 시간응답 시스템 함수에 무작위로 연속적인 값을 넣어도 그 출력의 주파수 특성을 유지한다.
    - 상승 코사인 함수를 시스템 함수로 사용하면 상승 코사인 필터가 됨
[주] 이런 별거 아닌 것들을 증명 하느라 수많은 수학자들이 애썼다. 그걸 따라한다고 교실에서 머리를 쥐어짜는데 그러지 말고 상식으로 받아 들이기로 하자. "곱셈은 거듭 덧셈이다"라는 걸 증명해가며 곱셈계산 하지 않듯이 말이다.

-------------------------------------------------------------------------

사각형 펄스(Rect)에 각각 세종류의 필터를 적용하여 그 출력들을 비교하여 보자.

  • 필터의 스펙트럼 (Filter Spectum)
    - Rect: 사각 펄스의 주파수 변환. 주 성분 외에 넓은 범위에 걸쳐 부 성분들이 펼쳐있다.
    - LPF: 저역필터의 주파수 응답은 매우 느슨 하다. 첫째 부성분을 제대로 차단하지 못한다.
    - RC: 상승 코사인(Raised Cosine) 필터. 차단이 매우 날카롭다.
    - RRC: 제곱 상승 코사인(Root Raised Cosine) 필터. 상승 코사인 필터를 두번 적용한 필터. 차단곡선이 좀더 부드러워 졌다.
  • 필터들을 적용 후 출력된 파형과 원 사각파와 비교했다. 시간영역이다.
    - 그림에는 사각파와 필터 출력이 겹쳐 보이지만 실제로는 사각파 뒤에 나타난다. 비교를 위해 겹쳤다.
    - LPF: 저역필터의 출력은 제법 사각 펄스를 반영 하지만 매우 느슨 하다.
    - RRC 는 RC와 거의 비슷하나 사각펄스의 폭 내에 정점 위치를 좀더 구분한다. (상승 코사인의 효과)

샘플링(Sampling): 수신측에서 등간격 시간(=Ts)으로 펄스의 검출 

펄스 검출 구간 씩 잘라서 겹쳐 놓으면

눈알 도표(Eye Diagram)라 한다.

  • 왜 눈알(eye)이라고 했는지 보면 알겠지?
  • LPF 의 눈알은 대칭도 않됐고 일관성이 없다.
  • RC의 눈알은 일관성이 있다. 0과 1이 동시 구분된다.
  • RRC의 눈알은 넓은 시간 동안 둥글다. 잡음에 강하다.

비트(Bit) 와 심볼(Symbol)

  • 펄스 스트림은 심볼 스트림을 나타냄
    - 2진 PSK(Binary PSK)에서 심볼은 비트에 해당
    - QPSK로 변조할 경우 한 심볼은 2비트를 표현
    - 8-PSK와 16-PSK는 심볼당 각각 3비트, 4비트
  • 펄스 전송율(Pulse Rate)을 심볼 전송율(Symbol Rate) 
    - 대역폭은 R< BW < 2Rp
  • 위상천이 키잉(PSK) 변조 방법(M-Ray PSK)에 따라 동일한 대역폭에서 더많은 비트를 전송 할 수 있음
    - 펄스의 모양이 전송할 심볼의 안정성 담보
    - LPF에 비해 RRC가 더 전송 효율이 높은 이유: 심볼 당 더 많은 비트 표현

16-PSK 와 16-QAM

  • M-ray PSK
    - 고정된 펄스 폭 Tp  (대역폭 고정)
    - 다차 위상천이 변조 (진폭 고정)
  • M-ray QAM
    - PSK와 마찬가지로 고정 펄스 폭 (대역폭 고정)
    - 가변 진폭으로 더욱 정교한 다차 위상천이 (Amplitude modulation+Phase Shift Keying)
    - 안정적 눈알도(Eye Diagram)를 얻기위해 상승 코사인 펄스 RC 보다 RRC 가 유리하다.

PSK와 QAM의 전력 대비 에러율 비교

BER(Bit Error Rate):

  • 전송되는 비트열 중 오류가 날 비율 [Link]
  • BER=10^(-6), 1백만개 비트를 전송해서 1비트 오류

CNR(Carrier Power to Noise Ratio):

  • 전송 전력(Carrier Power) 대비 잡음 비
  • 전송 전력이 높으면 잡음에 강해진다

전송오류를 줄이는 방법:

  • 전송 전력 높이기
  • 정교한 변조 방식

변조 효율

  • 전송 전력 대비 전송되는 정보량
  • 정교한 변조 방법(높은 심볼 율)을 쓸 수록 심볼 전송에 필요한 전력량은 증가
  • 전력량 증가비율(선형증가) 보다 전송되는 비트량 증가율(2의 지수배)이 높다.

결론적으로 위상천이 디지털 데이터 변조는

  • (싱크함수) 좁은 대역폭 사용
  • (상승 코사인 필터) 낮은 전송 에러/우수한 눈알도형
  • (위상천이 키잉/다차 심볼 부호) 고밀도 전송 데이터
  • 디지털에 열광하게 된 이유
    - 그 정도 에러에 그 만큼을 전송 할 수 있으면서 도 큰 전력을 쓰지 않는다.
    - 휴대전화: 음성을 디지털 데이터로 샘플 후 디지털 위상천이 변조 하여 전송
    - 디지털 데이터 압축, 디지털 데이터 에러 복구 기법 들이 더해 진다면?
  • 원리를 이해하기 위해 고등 수학이 필요 했을 뿐, 구현은 간단한 수학
    - 변조에 그리 대단한 성능의 컴퓨터 필요 없다. (uSDK: 8-bit AVR controller)
    - 휴대 통신기기, PC에 내장된 고성능 CPU는 화려한 사용자 인터페이스 용(그래픽)
--------------------------------------------------------------------------------------------------

기초 다지기는 이정도로 마치고 송수신기를 다뤄보자. 다음은 직접 변환 송신기(TX Direct Conversion) 다.

---------------------------------------------------------------------------------------------------

<처음><이전><다음>

--------------------------------------------------------------------------------------------------

2023년 5월 27일 토요일

[무선통신 시스템 설계] 4강. 디지탈 데이터 변조(Digital Modulation)

 [무선통신 시스템 설계] 4강. 디지탈 데이터 변조(Digital Modulation)

-------------------------------------------------------------------
[일러두기] 이 글은 아래 강좌를 토대로 작성되었습니다. 일부 내용은 저의 생각 담아 첨삭하였습니다. 오류가 있을 수 있으니 강좌 원본을 꼭 함께 봐주시기 바랍니다.

[Radio System Design] Module 4. Digital Modulation / David S. Ricketts

함께 공부한다고 여기시고 아래 글에 오류가 있다면 가차없는 지적 바랍니다.
-------------------------------------------------------------------

개요

앞서 다뤘던 아날로그 변조(AM, Analog Modulation)는 연속된 신호변화(analog signal)를 반송파의 포락선(envelope)으로 얹는 방법을 다뤘다면 이번에는 디지탈 데이타를 전송하기 위한 변조 방식의 기초를 살펴본다.

  • 디지탈 변조 (Digital Modulation)
    - 위상 천이 키잉(PSK, Phase Shift Keying)
    - 직교 진폭 변조(QAM, Quadrature Amplitude Modulation)
  • 심볼(Symbol)과 비트(bits) 차
  • 기초 디지털 변조장치의 구성

--------------------------------------------------------------------------------------

[주] 반송파와 부반송파

  • 반송파: 공간복사를 위한 단일 주파수의 고주파 (Radio Frequency Carrier)
  • 부반송파: 변조를 위한 낮은 주파수의 기준파 (Baseband Carrier)
  • 디지털 변조를 다룰때 말하는 반송파는 대개 '부 반송파'를 의미한다.

--------------------------------------------------------------------------------------

디지탈 변조(Digital Modulation)

  • 전송하려는 자료의 형식
    - 아날로그 변조: 연속적으로 변하는 데이타를 전송(감지된 전압 변화의 전송)
    - 디지탈 변조: 급진적으로 변하는 데이타를 전송(숫자로 표현된 자료의 전송)
  • '변조'는 '전송' 하려는 자료 표현 형식이 다를 뿐
    - '반송파에 얹는다'는 변조의 목적에는 변함 없다.
    [주] 표현된 자료의 형식이 뭐가 됐든 '전송'은 공중에 전자기파를 복사하는 행위다.
    - 얹는 방법: 진폭 변화, 주파수 변화, 위상 변화
    [주] 변조방법으로 아날로그 변조에서 없던 '위상변화'에 주목하자.
  • 디지탈 변조
    - 변화를 주는 시간 간격이 '단속적'이다.
    [주] Key: 단속적인 변화를 전신의 타전(keying)에 빗대어 차용된 단어
    - '시간 간격'은 임의 조정 가능(샘플링 레이트, sampling rate와 심볼 레이트, symbol rate)
    [주] 아날로그 신호는 변화하는 시간 간격은 연속적이다.
  • 디지탈 변조는 잡음에 강하다.

  • 아날로그 진폭변조:
    - 반송파에 대한 포락선(envelope)의 연속적인 변화
    - 잡음은 곧바로 포락선을 흐트러 뜨리므로 음질(정보)에 영향을 준다.
  • 디지탈 진폭 천이 키잉(Amplitude Shift Keying):
    - 포락선은 1과 0만을 구분할 뿐 음질과 상관 없다.
    - 진폭차만 충분하다면 잡음이 끼더라라도 정보에 영향이 없다.
    - 디지털 데이터는 에러 정정 알고리즘의 강력한 지원을 받을 수 있다.

2진수 디지탈 변조

  • 2진수로 표현된 디지탈 데이터를 반송파에 얹는 방법
    - 위상천이 키잉(PSK): 2진수의 상태가 바뀔 때(1→0, 또는 0→1) 반송파의 위상을 바꿈(Phase Shift)
    - 진폭 천이 키잉(ASK): 2진수 1과 0일 때 각각 반송파의 진폭을 바꿈(Amplitude Shift)
    - 주파수 천이 키잉(FSK): 2진수 1과 0일 때 각각 반송파의 주파수를 바꿈(Frequency Shift)
  • 코히런트 수신기+디지털 계산기
    - PSK와 FSK는 반송파의 진폭(포락선)은 고정되어 있고 특성(주파수와 위상)을 활용
    - 디지털 데이터 검출 및 복원 단계가 필요하므로 계산량 증가
    - 코히런트 아날로그  수신기에 디지탈 계산기(컴퓨터)가 추가되어야 하므로 복잡
  • 디지털 데이터의 전송 정보량은 반송파의 주파수와 대역폭(bandwidth)에 따라 결정
    - 2진수의 1개 비트를 표현하기 위한 최소 시간 간격 내에 들어가야 할 최소 파동의 갯수

신호 성상도(Signal Constellation) [참고]

  • 변조된 신호를 허수계 좌표상에서 찍어 놓은 분포도
    [주] constellation(별자리)는 밤하늘 별들의 좌표를 이어 묶어 놓은 것. 역사가 깊지 않은 '공학'은 기존의 전통적 단어를 차용하였다.
  • 진폭으로 구분: 아날로그 진폭변조로
    - 2진수의 1과 0은 실수 축에 양의 2개의 좌표점
  • 위상으로도 신호를 구분 할 수 있다.
    - 대역폭(반송파 주파수 ω_c)를 높이지 않고도 표현 할 수 있는 자릿수를 늘린다.
    - 허수축을 도입하여 2차원 좌표계로 확장하면 신호의 위치를 (진폭, 위상)을 묶어 4개의 상태를 표현 

[주] 진폭 또는 위상의 단계를 세분 한다면 더 많은 상태를 나타낼 수 있겠으나 전송 중 잡음영향을 받는다. 16-QAM 정도가 사용됨

위상 만으로 다중 비트 표현 예

  • 2진 위상차 키잉(Binary PSK)
    - 실수 축(In-Phase)에서 음과 양의 위상에 2점의 성상(constellation)으로 찍힘
  • 4진 위상차 키잉(Quadrature PSK)
    - 허수축(Q-Phase) 도입
    - 주파수를 변경하지 않고도 4가지 위상으로 구분되는 위치에 신호가 찍힘
    - 두 직교하는 좌표는 쉽게 구분 가능(Cosine & Sine)
  • 심볼(Symbol): 다중 비트로 여러 상태를 표현 함
    - 상태를 대표하는 명칭(name)으로 서수(ordinal)의 의미는 없으나
    - 음양 부호(alternating sign)와 다중치(multi-level)의 의미를 가진다. 
    - 비트(bit): 2진수 1자리로 2개의 상태를 표현
    - 2비트 심볼: 4가지 상태를 표현
    - 3비트 심볼: 8가지 상태를 표현

2진 위상 천이 키잉(Binary PSK)

  • 2개의 위상으로 구분된 위치 사이의 천이 (1비트)
  • 부 반송파(baseband carrier)에 진폭의 연속적인 변화 대신 음과 양의 전압을 오가는 구형파(사각파) 곱하기
    - 아날로그 신호의 진폭변조는 부 반송파의 위상은 불변, 주파수는 고정이면서 연속으로 변하는 아날로그 신호의 진폭 A_k 을 곱하여 얻는다.
    디지털 신호의 위상변조는 디지털 데이터(2진수 열, binary stream)에 주파수는 고정되었지만 위상을 달리하는 부 반송파를 곱하여 얻는다.
  • 굳이 수학으로 표현 하자면,
    - Π[(t-kT)/T] : 2진수 열(binary stream)을 시간 t 의 함수로 표현.

 직교 위상 천이 키잉(Quadrature PSK)

  • I/Q 위상 공간에서 4개의 구분된 위치(성상점, constellation) 사이의 천이
    - 한 심볼 당 2비트
    - 직교축(I/Q Phase) 도입으로 평면 공간에 성상점을 찍음
    - 성상점들 사이는 위상(각도)로 구분
  • BPSK와 동일한 심볼 시간구간 T_s (symbol period)을 사용하더라도 두배의 정보를 전송 할 수 있다. (한 심볼에 2비트씩 표현)

신호의 성상을 어떻게 두는 것이 좋을지 함께 생각하면서, QPSK를 수학적(그래봐야 삼각함수 덧셈공식)으로 한번 더 살펴보자.

적절한 위상차를 주고 성상점의 위치를  잡음으로써 두개의 직교하는 BPSK를 합쳐 놓은 것과 같다.


--------------------------------------------------------------------------------------

위상천이 키잉(PSK)의 장점: 부 반송파의 주파수를 올리지 않고도

  • 심볼 구간, T_s 을 좁히면 더 많은 정보를 전달 할 수 있다.
    - 단, 반송파의 주기보다 작을 수 없다. (디지털 변조의 대역폭에서 다시 다룬다)
  • 심볼을 여러 비트로 표현 할 수록 더 많은 정보를 전달 할 수 있다.
    - 수신측의 각도(위상)차 구분이 정교해야 한다.
  • 심볼구간(Symbol Period), T_s:
    - 대역폭(band width) R_s 와 반비례
    - '심볼 구간'은 한 심볼을 표현하기 위해 유지할 시간 간격을 의미한다.

--------------------------------------------------------------------------------------

[주] 위의 PSK를 표현한 수식은 이해하기 어렵게 표현 되었다. Π[(t-kT)/T]에 대한 설명도 없어서 더욱 그렇다. 좀더 쉬운 표현으로 이해해 보기로 한다.

위상 천이 키잉(Phase Shift Keying) [참조]

부 반송파(Base-Band Carrier)에 직렬 2진수(serial binary)를 얹는 방법으로

  • 부반송파의 진폭과 주파수는 고정 되어 있으나 위상 만으로 심볼 구분
  • 적절한 위상을 정하여 성상점을 찍었다.
  • 부 반송파에 변화시킨 위상의 역활
    - 0과 1의 2진수를 음과 양의 부호를 오가는 동일 진폭의 AC 구형파
  • 변조는 AC 정현파와 부 반송파 곱하기

--------------------------------------------------------------------------------------------------

직교하는 두 삼각함수 파(코사인과 사인)는 합쳐 놓아도 상호 간섭 없이 구분 할 수 있다. 따라서 QPSK 변조기는 두개의 BPSK 변조기를 합쳐 놓은 것과 같은데,

  • 피 변조될 입력 2진수도 2비트씩 묶은 심볼로 만들어 줘야 한다. (Serial-to-Parallel Converter)
  • 반송파의 위상은 정확히 직교하는 Sine 과 Cosine 일 것

직교 위상천이 변조기(QPSK)의 구성

직교 위상천이 변조기(QPSK)에 대한 질문?

  • 변조된 출력은 비트가 아닌 심볼이다
  • 직교관계의 두 삼각함수 파를 반송파로 삼아 각각 변조되었다.

고차 위상천이 키잉(High Order PSK) 장단점

  • 위상차를 세분화 하여 한 심볼에 여러 비트를 묶어 놓음
    - 동일 시간 T_s 내에 전송 할 수 있는 데이터량이 증가한다.
    - 신호 성상점 사이의 간격이 매우 좁아져 잡음에 취약해 진다.
    - 변복조기의 반송파 주파수 정밀도와 안정도가 매우 중요하다.


PSK의 활용 예 (안드로이드 폰 이미지 전송)

  • Android App: COFDMTV
    - 변조기 앱: ShredPix
    - 복조기 앱: AssemPix
  • QPSK로 디지탈 이미지 전송 비교
    - 우측은 성상점이 제대로 형성되었다.
    - 좌측은 잡음으로 인해 성상이 흐트러져 있다.

-------------------------------------------------------------------------------------------

위상천이 변복조기의 개념도[참조]

* NRZ Encoder의 용도는?

-------------------------------------------------------------------------------------------

직교 진폭 변조(QAM, Quadrature Amplitude Modulation)

  • 현재 가장 널리 사용되는 디지털 데이터 변조방식
  • 위상변조와 진폭변조를 혼합 성상점 사이의 거리를 늘리는 방법
  • 전송 전력을 늘리지 않고 대역폭을 늘리는 손쉬운 방법
  • 성상점의 격자형 배치
    - 최소 간격을 유지한 채 격자형으로 성상점 배치
    - 반지름이 다른 원(진폭변조)과 위상차(위상변조)
    - 인접 성상점보다 대각 성상점 사이의 거리가 훨씬 길다.
    - 동일한 위상차에서 반경이 다름


성상점 배치의 고려사항

  • 동일한 성상점 갯수이지만 다양한 방법 존재
  • 잡음 강인성: 최소 성상점 거리
  • 전송전력: 원점에서 거리(진폭에 해당. 진폭이 클 수록 높은 전력 필요)
  • 복잡성: I/Q 신호의 생성(변조)과 구분(복조)


 16-PSK와 16-QAM 비교

  • 동일한 간격을 유지하면서 성상점 들 배치
    - PSK: 원점에서 동일한 거리에 위상만 다르게 배치
    - QAM: 원점에 거리 다양, 위상 간격도 다양


16-QAM의 예

  • 전이가 일어나는 성상점 사이의,
    - 진폭(원점에서 거리)이 다르다: 진폭변조
    - 위상(각도)이 다르다: 위상천이

----------------------------------------------------------------

[실습] QPSK를 울프람 언어로 구현해서 그림으로 확인해 보자 (봐야 믿는 거니까!)

(* Carriers: f=100 *)
carrierI = Table[Sqrt[2]*Cos[100*t], {t, 0, 2*Pi, (2*Pi)/600}];
carrierQ = Table[Sqrt[2]*Sin[100*t], {t, 0, 2*Pi, (2*Pi)/600}];

(* Binary Baseband Data *)
bitStream = Table[{1,1,0,0,0,1,1,0}];

(* Phase Shift Keying *)
Do[
    (* Bit-Stream De-Muxing & Zero-Crossing(Analog Signals) *)
    symbolI = If[bitStream[[2*n-1]]==0, -1, 1] ;
    symbolQ = If[bitStream[[2*n]]==0, -1, 1];
    
    (* Symbol out: Multiply De-Mux'ed Bit-Stream with I/Q Carriers*)
    modulated[[n]] = symbolI*carrierI + symbolQ*carrierQ;
    
    (* See I/Q-Mapped 2-Bits Symbol *)
    fModulated[[n]] = Fourier[modulated[[n]]];
, {n, 4}
]

입력: 2진 디지털 데이터 (bitStream)

(* Input: Binary Baseband Data *)
ListPlot[bitStream, PlotStyle->PointSize[Large]]

출력: 부반송파 주파수 f=100 로 변조된 심볼(modulated)

(* PSKed Out Symbol in Time-Domain *)
ListLinePlot[
    {modulated[[1]],modulated[[2]],modulated[[3]],modulated[[4]]},
    PlotRange->{{0,40}, {-2, 2}},
    PlotLegends->{
        "Symbol[+1,+1]",
        "Symbol[+1,-1]",
        "Symbol[-1,-1]",
        "Symbol[-1,1]"}
]

시간영역(Time-Domain)에서 보면 4가지 심볼은 구분할 수 없다.

주파수영역(Frequency-Domain)으로 변환해 보자.

  • 파워 스펙트럼(Power Spectrum)으로 보면 4가지 심볼 모두 동일하게 반송파 주파수 f=100 에서 최대 전력으로 나타난다. 즉, 주파수 및 진폭변화 없음
(* PSKed Symbol in Frequency-Domain *)
ListLinePlot[
    {
        Abs[fModulated[[1]]][[1;;300]],
        Abs[fModulated[[2]]][[1;;300]],
        Abs[fModulated[[3]]][[1;;300]],
        Abs[fModulated[[4]]][[1;;300]]
    }, PlotRange->All,
    PlotLegends->{
        "Symbol[+1,+1]",
        "Symbol[+1,-1]",
        "Symbol[-1,-1]",
        "Symbol[-1,1]"}
]

  • 위상공간(I/Q-Phase Plane)에서는 최대 전력이 찍히는 성상점(Constellation)의 위치가 분명히 드러난다. 즉, 디지털 데이터의 위상변조다.
(* I/Q Plane (Phase Constellation) *)
ComplexListPlot[
    {
        fModulated[[1]][[1;;300]],
        fModulated[[2]][[1;;300]],
        fModulated[[3]][[1;;300]],
        fModulated[[4]][[1;;300]]
    }, PlotRange->{{-17,17}, {-17,17}},
    PlotStyle->PointSize[Large],
    PlotLegends->{
        "Symbol[+1,+1]",
        "Symbol[+1,-1]",
        "Symbol[-1,-1]",
        "Symbol[-1,1]"}
]

----------------------------------------------------------------

이상으로 디지털 신호의 변조 방법/위상천이 키잉(PSK)에 대해 알아봤다. 다음편에서는 대역폭(bandwidth)에 대해 알아보기로 한다.

----------------------------------------------------------------