REMI Lab강의 노트

Wireless Embedded Systems E04

4장 변조와 복조

복조: 반송파 걷어 내기

수신기는 RF 신호에서 II와 QQ를 어떻게 다시 꺼낼까?

받은 신호 r(t)=Icos⁡ωct−Qsin⁡ωctr(t)=I\cos\omega_c t-Q\sin\omega_c t에서 II와 QQ를 꺼내는 방법은 '주파수 변환' 절에서 본 두 갈래 하향 변환이다. r(t)=12(zejωct+zˉe−jωct)r(t)=\tfrac12\bigl(ze^{j\omega_c t}+\bar z e^{-j\omega_c t}\bigr)이므로 2e−jωct2e^{-j\omega_c t}를 곱하면 z+zˉe−j2ωctz+\bar z e^{-j2\omega_c t}가 되고, LPF가 −2fc-2f_c의 항을 지우면 z=I+jQz=I+jQ가 남는다. 위 갈래(2cos⁡ωct2\cos\omega_c t)가 II를, 아래 갈래(−2sin⁡ωct-2\sin\omega_c t)가 QQ를 내놓는다. 수신기의 LO를 송신 반송파의 주파수와 위상에 맞춰 이렇게 내리는 복조를 동기 복조(coherent demodulation)라고 한다. Pluto는 이 곱셈과 LPF를 칩 안의 아날로그 회로에서 하고, II와 QQ를 ADC 두 개로 따로 표본화한다(6장).

실제로는 두 기기의 발진기가 따로 돌아 LO가 송신 반송파와 맞지 않는다. '주파수 변환' 절에서 본 대로 두 갈래로 내리면 신호는 사라지지 않고 돌기만 한다. 그 회전이 성상도에 무엇을 하는지 본다.

  • 위상 오차: 받은 반송파가 LO보다 위상이 θ\theta 앞서면 LPF 출력은 z ejθz\,e^{j\theta}이다. 성상도 전체가 θ\theta만큼 돈다. QPSK는 ∣θ∣<45∘|\theta|<45^\circ이면 (잡음이 없을 때) 판정이 맞지만, 넘으면 점이 이웃 사분면으로 넘어간다.
  • 주파수 오차: 받은 반송파가 LO보다 Δf\Delta f 높으면 출력은 z ej(2πΔf t+θ)z\,e^{j(2\pi\Delta f\,t+\theta)}이다. 도는 각이 시간에 따라 커져서, 심볼마다 360∘⋅Δf/Rs360^\circ\cdot\Delta f/R_s씩 더 돈다. 오래 모은 성상도에서는 점이 원을 따라 번진다.

수신기는 미리 약속한 심볼열(프리앰블, pilot)을 보고 θ\theta와 Δf\Delta f를 추정해 되돌린다. 실습 4에서는 TX LO를 일부러 몇 kHz 어긋나게 설정해 이 회전을 직접 보고, 프리앰블로 되돌린다.

아래 그림은 이 회전이 판정을 어떻게 틀리게 하고, 프리앰블로 어떻게 되돌리는지 한 단계씩 계산한다. ▶ 한 번이 연산 하나이다. ②–③은 위상 오차 θ만 넣어 점을 돌리고 판정한다. ④는 주파수 오차를 더해 심볼마다 회전이 쌓이는 것을 본다. ⑤–⑦은 처음 4개 심볼로 dk=rksk∗d_k=r_k s_k^*를 만들어 데이터 위상을 지우고, 이웃한 dkd_k의 위상 차로 Δf\Delta f를, 남은 위상으로 θ\theta를 추정한다. ⑧에서 추정한 회전을 되돌려 다시 판정한다.

합성 QPSK 심볼 16개이고, 처음 4개(01 11 00 10)는 수신기가 미리 아는 프리앰블이다. 받은 점에는 I, Q 성분마다 표준편차 0.04인 고정 잡음을 더했다. 빈 원은 보낸 점, 채운 점은 받은 점, 붉은 점은 판정이 틀린 심볼이다. 심볼 k의 회전각은 θ + 360°·(Δf/Rs)·k이다.

해 보기

  1. 위상 오차를 60°로 키워 판정한다.
    관찰

    점이 판정 경계 45°를 넘어 이웃 사분면으로 넘어가고, 대부분의 심볼이 틀린다.

  2. θ = 30°, Δf = 0.01Rs에서 회전이 쌓이는 것을 본다.
    관찰

    심볼마다 3.6°씩 더 돌아 k = 15에서는 30° + 3.6° × 15 = 84°가 된다. 틀린 심볼은 16개 가운데 11개이다.

  3. 프리앰블로 추정해 되돌린다.
    관찰

    Δf̂/Rs = 0.0107, θ̂ = 28.133°로 되돌리면 틀린 심볼이 0개가 된다.