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) 다.

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

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

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

댓글 없음:

댓글 쓰기