2023년 6월 8일 목요일

[무선통신 시스템 설계] 7강. 2단 변환 송신기 (Two-Stage Conversion TX)

[무선통신 시스템 설계] 7강. 2단 변환 송신기 (Two-Stage Conversion TX)

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

[Radio System Design] Module 7. Two-Stage Conversion (Heterodyne) / David S. Ricketts

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

개요

  • 2 단 주파수 상향 변환 방식 송신기의 구성(Two-Stage upconversion architecture)
    - 장단점: 직접 변환 방식과 다단 변환 방식 비교
  • 중간 주파수(IF, Intermediate Frequency)
    - 중간 주파수 선정시 고려사항(Tradeoffs)

안테나 복사(antenna radiative)용 전파신호를 만드는 방식

  • 모노다인(monodyne):
    - 직접 변환 방식
    - 한번의 고주파 혼합으로 전파신호를 만든다.
  • 헤테로 다인(heterodyne):
    - 다단 주파수 혼합
    - 변조용 반송파(부반송파)와  안테나 복사용 반송파를 사용하여 주파수 변환

다단 주파수 혼합 방식을 사용(중간 주파수 채택)하게된 이유

  • 직접 변환 시 발생하는 문제점들을 해소
    - 반송파 샘(carrier lekage) 억제
    - 위상 및 진폭 불평형(phase and amplitude imbalance) 완화
  • 능동적 전력 조절
    - 단계적 전력 증폭으로 안정성
    - 출력 수준이 상대적으로 낮은 중간 증폭 단에서 전력제어 용이

고전적인 2단 주파수 변환 송신기

평형 변조로 얻은 양측파대 신호를 2단 주파수 변환을 하는 경우다. 발진기의 주파수를 적절히 선택하여 최종 목표로 하는 전파 신호를 끌어내도록 한다.

  • BPF(Band Pass Filter): 첫째단 변환의 출력에서 좁은 대역필터를 사용하여 한 측파대를 걸러낸다. 협대역(2.8Khz)의 정교한 필터를 쓴다. 16-폴 크리스탈 필터 또는 메카니컬 필터
  • LC 동조기(Resonator): 둘째 단 변환으로 2개의 주파수 중 원하는 대역의 신호만 증폭한다. 이때 동조기의 대역폭을 넓게 잡기 위해 Q 값을 크지 않게 잡도록 한다. 아마추어 무선 밴드중 21Mhz허가 대역이 500Khz로 매우 넓다.

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

[주] 고전적인 진공관식 트랜시버 Swan 500

  • 중간 주파수 IF는 ω1 = 5.5Mhz다.
  • 대역폭 2.4Khz인 측파대 필터 BPF를 통과하여 SSB 신호를 만든다.
  • 가변 발진기 VFO의 출력 ω2 을 사용하여 최종 안테나 복사 전파신호로 혼합한다.
  • 구동 증폭기(driver amplifier)의 플레이트에 LC공진 회로를 가지고 있다.

7Mhz 대의 신호를 만들기 위한 VFO 주파수는 12.5Mhz다. 2단 혼합기의 출력은 5.5+12.5 = 18Mhz(-5.5-12.5=-18Mhz)와  12.5-5.5=7Mhz(-12.5+5.5=-7Mhz) 신호가 나오는데 증폭기 동조기에 의해 7Mhz 의 신호만 증폭된다.

14Mhz의 경우 VFO 주파수는 8.5Mhz다. 5.5+8.5=14Mhz가 되지만 5.5-8.5=-3Mhz다. 음의 주파수 대역에 있던 -5.5-8.5=-14Mhz가 되어 짝을 이루고 -5.5+8.5=3Mhz가 되어  불요 신호를 만들게 된다. 하지만 구동 증폭기 동조 대역 범위에서 한참 벗어나 있다.

아래 그림은 대출력 송신기의 구동 출력단(driver amp)의 회로 일부다. 밴드별 LC 동조기(resonator)가 달려 있는 모습을 볼 수 있다. 구동 증폭단은 대출력을 위한 안정성 확보의 목적 뿐만 아니라 여러모로(출력 제어등) 유용하다.

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

현대적인 2단변환 직교 반송파 송신기

고전적인 무전기와 차이,

  • 첫째단 혼합기에 I/Q로 분리된 직교 반송파 혼합기
  • 첫째단과 둘째단 혼합기 사이에 협대역 필터가 없다.
    - I/Q 변조기에서 변조(필터링과 키잉)를 수행한다.
  • 최종 주파수 변환 출력의 "BPF"는 2차 변환으로 생긴 이미지 제거용 필터다.
    [주] 원 강의에는 'sideband'라고 하는데 오류다.
  • I/Q 변조기는 변조와 1차 주파수 변환을 수행한다.
    - 키잉(PSK), 측파대 제거 필터링(SSB Filtering)
    - 디지탈 신호처리(DSP): 가변 대역폭 필터링

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

[주] 가변 대역폭 필터링

대역 필터는 변조 방식에 따라 대역폭이 다르다는 점을 염두에 두자. 음성 SSB의 대역폭이 2.8Khz지만 디지털 모드는 250Hz에 불과 하며 심지어 전신은 100Hz다. 다양한 통신 모드를 지원 하려면 이에맞는 필터가 필요하다. 더구나 혼신이 심할 경우 필터의 대역폭을 적절히 조절해주어야 한다. 아날로그 필터는 LC조합으로 만드는데 정교한 협대역필터를 만들기 어렵다. 가격 또한 비싸다. 경우에 따라 쓸수 있는 여러 종류의 필터를 두기 곤란하다.

I/Q 직교 방식을 쓸 경우 앞서 살펴 봤듯이 다양한 변조 방식을 수월하게 구현할 뿐만 아니라 디지털 신호처리라는 잇점이 있다. 대역폭이 겨우 수십Hz 밖에 않되는 초 협대역 필터를 손실 없이 구현 할 수 있다. 게다가 아날로그 회로에서는 불가능한 대역폭 가변 필터다.

상업용 전용 통신기기들은 안정성과 품질을 우선한다. 이에 반해 다양한 주파수 밴드와 통신 모드를 지원하는 아마추어 무선용 기기들은 다양성을 가져야 한다. 버튼도 많고 조절해 주어야 할 다이얼도 많다. 상업용 무전기와 외형상 차이를 보면 주파수 미세 조절 다이얼의 유무와 가변 대역폭 필터 일 것이다. 상업 통신 무선국은 주파수와 모드가 고정되어 있기 마련이고  혼신은 그리 신경 쓰지 않기 때문에 주파수를 미세조정할 필요도 없고 송신 운용중 가변 필터를 동작 시켜야 할 이유도 없다.

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

2단 변환 송신기의 장점

  • 직접변환 송신기의 단점을 상쇄시킬 수 있다
    - 상대적으로 낮은 주파수인 중간 주파수를 쓰므로 위상 및 진폭 불일치 문제가 적다.
    - 변환된 신호의 대역이 반송파 주파수 밖에 있으므로 반송파 샘을 피할 수 있다.
  • 중간 주파수 단계에서 이득, 전력 제어가 효과적이다. (낮은 주파수의 회로가 쉽다)

단점

  • 회로가 복잡해 진다.
    - 국부 발진기가 한개 더 필요하다.
    - 주파수 혼합기가 추가된다.
  • 2단 혼합으로 인해 불요 신호(이미지)가 나타난다.
    - 이미지 제거용 초고주파용! 정교한! 필터가 필요하다.

중간 주파수와 목표 주파수의 계산

- 쉽다. 하지만 중간 주파수를 얼마로 잡아야 할까?

중간 주파수의 선정

중간 주파수가 낮을경우

  • 다루기 수월하다.
    - 위상 불균형 잡음을 줄일 수 있다.
    - I와 Q 경로의 불균형을 줄일 수 있다.
  •  최종 출력 신호와 두번째 발진기와의 주파수 거리가 가까워 진다.
    - 반송파 샘을 피하기 어렵다.
  •  초고주파 광대역 통신에 불리하다.
    - 이미지 신호의 주파수가 최종신호 주파수에 가깝게 배치된다.
    - 이미지 제거를 위해 매우 정교한 필터가 필요하다.
  • 중간 주파수의 선택에 왕도는 없다.
    - 수많은 시뮬레이션을 통해 결정된다

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

[주] 낮은 주파수에서 신호파 조작(변조)이 수월하다.

안테나 복사 주파수가 7Mhz인 음성(SSB) 송신기를 만든다고 하자.

직접 변환송신기 라면 반송파 발진 주파수가 7Mhz 이어야 한다. 이런 고주파에서 위상이 정확히 90도 차이나는 직교 발진기를 만들기 어렵다. 더구나 고주파 신호에 매우 취약한 코일과 컨덴서를 써야 한다는 점을 고려해보자. 아날로그 회로로 증폭기와 변조기를 꾸미기가 매우 어렵다. 고전적인 무선기기의 회로도가 어지러워 진 이유다. 그래서 디지털 방식을 채택 하기로 하자. 앞서 다뤘지만 변조와 증폭은 간단한(?) 수학이다. 곱셈과 덧셈의 수식을 수행할 때 열손실이니 내부잡음이니 따위는 없다.

그런데 말입니다...... 

디지털 처리를 위해서 7Mhz 아날로그 신호를 조작하려면 샘플링 주파수는 적어도 14Mhz는 되어야 한다. 초당 1천 4백만 개의 샘플이 생성될 것이며 최소한의 필터 처리를 위해 5천만회 이상의 곱셈과 덧셈이 필요하다는 뜻이다. 이 정도 계산이 가능하려면 2 클럭 만에 곱셈과 덧셈이 가능한 마이크로 프로세서라 하더라도 초당 1억개의 클럭이 소요된다. 적어도 100Mhz 로 동작하는 디지털 계산기가 필요하다는 뜻이며 그만큼 고성능 장치를 필요로한다. 고성능 장치는 고전력 소비로 이어진다.

음성 변조는 상한 주파수가 20Khz 도 않되는 가청 주파수 대역의 신호를 조작하여 신호파를 만드는 목적이다. 더구나 음성통신에 사용하는 SSB는 법정 대역폭이 고작 2.8Khz다. 반송파를 대략 48Khz 정도로 잡고 디지털 샘플링을 하면 4만 8천개의 데이터가 생성된다. 필터링을 위한 곱셈 덧셈 횟수는 정교한 알고리즘을 감안 해도 수백만회에 그칠 것이다. 일단 조작(변조)가 끝난 디지털 데이터는 아날로그로 변환하여 목표 반송파 주파수를 섞은 후 종단전력 증폭하여 안테나로 내보내면 된다. 알다시피 종단 전력 증폭기는 C 급으로 대충(?) 증폭한다. [참조: 라디오전파 C 급 증폭기(실험)]

낮은 주파수에서 디지털 계산기로 수행된 조작(변조)된 신호를 목표 고주파 전파로 바꾸고 증폭하는 일은 여전히 아날로그 회로다. 이제 현대적인 무선 장치(무전기)가 단순해 보이는 이유를 이해했을 것이다. 사실 겉으로 보기에 단순해 보일 뿐이지 디지털 계산기 내부 모습을 보면 만만치 않다. 아주 단순한 디지털 계산기(마이크로 프로세서)라도 수만개의 트랜지스터가 내부에 도사리고 있다. 게다가 그속에 들어있는 소프트웨어를 보면 눈돌아간다.

실제로 디지털 계산기(DSP)를 채택한 무전기(무려 15년전에 출시 됐다)의 사양서를 보면 3단 IF의 주파수가 30Khz다.

최근 아마추어 무선사들에게 인기를 얻고 있다는 uSDX 라는 단파대 무전기의 회로도를 보자. 아래 그림은 믿거나 말거나 올밴드 SSB/CW 무전기 회로도의 전부다. 그 많던 트랜지스터와 그에 딸려있던 코일과 컨덴서들은 어디로 갔을까?  심지어 마이크, 스피커 증폭기도 없다. 전력 증폭기는 달랑 FET 세개다.

겨우 20Mhz 클럭으로 작동하는 마이크로 프로세서에서 무슨일을 하는지 보자.

그림을 보면 어마 무시해 보이긴 하지만 마이크에서 음성을 디지탈 데이타로 취해서 SSB 신호를 만들기 위해 I/Q 로 분리해서 열심히 곱셈과 덧셈으로 변조를 위한 계산을 수행한다. 앞서 살펴봤던 SSB 변조 알고리즘(j 연산자 곱하기 참조, 아날로그 변조장치의 구성)과는 다소 상이해 보이는 힐버트 변환(Hilbert Transform)이 사용되었지만 원리는 같다. 음성 샘플링 주파수는 꽤나 높은 196Khz다. SSB 변조가 끝난 후 출력 디지탈 샘플은 62Khz 정도다. 그림만 보면 뭔가 대단한 일을 하는 것 처럼 보인다. 공개되어있는 C 소스코드가 무려 5천여줄이 넘지만 상당부분 사용자 인터페이스가 차지하고 있고 실제 변조 부분은 백여줄 밖에 않된다[Link]. 나중에 같이 읽어봐도 좋겠다.

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


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

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

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


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

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

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

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