GNSS 신호의 식별 및 추적 과정

개요

GNSS 수신기에서 특정 위성의 신호를 성공적으로 복원하기 위해서는 우선적으로 신호를 식별한 뒤, 안정적인 추적 과정이 뒤따라야 한다. 이를 위해 **탐색(Acquisition)**과 **추적(Tracking)**이라는 두 가지 단계가 일반적으로 적용된다. 식별 단계에서는 수신기가 미리 알고 있는 위성 신호의 고유한 수열(예: PRN 코드)을 이용해 실제 수신된 신호 안에서 해당 위성 신호가 존재하는지를 찾아내고, 존재한다면 그 신호의 도플러 주파수 오차 및 코드 위상(offset)을 대략적으로 추정한다. 추적 단계에서는 이 대략적인 정보를 이용하여 코드와 반송파(carrier)를 정밀하게 동기화하고, 신호 파라미터 변화를 연속적으로 보정하여 추출된 측정치를 안정적으로 유지한다.

GNSS 신호 수신을 위해서는 먼저 수신된 IF(Intermediate Frequency) 신호를 디지털화한 뒤, 내부적으로 생성된 레퍼런스 코드와의 상관연산(correlation)을 수행함으로써 위성 식별을 진행한다. 이때, 신호 식별 과정은 일반적으로 많은 연산량이 필요하므로, 효율적인 탐색 알고리즘과 하드웨어 구조가 중요한 역할을 담당한다.

식별 과정(Acquisition)

식별 과정은 크게 코드 탐색(Code Search)과 도플러 주파수 탐색(Frequency Search)으로 구성된다. 코드 탐색은 위성별로 서로 다른 $C/A$ 코드(또는 다른 GNSS 신호 타입에 따른 스펙트럼 확산 코드를 의미)를 모든 가능한 위상(offset)에 대해 시험하고, 도플러 탐색은 위성 궤도나 수신기 이동 등의 영향으로 발생하는 도플러 주파수 편이(Frequency Shift)를 여러 후보 범위로 나누어 시험한다.

1) 신호 모델

디지털화된 IF 신호 $\mathbf{r}(n)$를 고려하자. 시간에 따라 샘플링된 신호 모델은 다음과 같이 표현될 수 있다.

r(n)=Ad(n)c(nτ)cos(2π(fIF+fD)nTs+ϕ)+w(n)\mathbf{r}(n) = A \, \mathbf{d}(n) \cdot \mathbf{c}(n - \tau) \cos\bigl(2\pi(f_{\mathrm{IF}} + f_D)nT_s + \phi\bigr) + \mathbf{w}(n)

여기서

  • $A$는 신호의 진폭(amplitude),

  • $\mathbf{d}(n)$는 데이터 비트 혹은 네비게이션 메시지가 반영된 낮은 주파수 대역의 심볼(샘플화된 형태),

  • $\mathbf{c}(n)$는 길이가 $N$인 확산 코드(예: $C/A$ 코드)를 샘플링한 벡터,

  • $\tau$는 코드 위상 지연(code phase),

  • $f_{\mathrm{IF}}$는 중간주파수(Intermediate Frequency),

  • $f_D$는 도플러 주파수 편이(Doppler shift),

  • $T_s$는 샘플링 주기,

  • $\phi$는 반송파 위상(offset),

  • $\mathbf{w}(n)$는 열잡음(thermal noise) 등을 포함하는 잡음 벡터이다.

위 식에서 $\mathbf{r}(n)$, $\mathbf{d}(n)$, $\mathbf{c}(n)$, $\mathbf{w}(n)$는 시간에 따라 달라지는 샘플 시퀀스이므로 벡터 형태로 나타내었으며, 이때 각 벡터의 길이는 샘플 단위와 관측구간 등에 따라 달라질 수 있다. 식별 과정에서는 $\tau$와 $f_D$를 바르게 추정하여야 수신기 내에서 생성된 레퍼런스 신호와 실제 신호가 최대한 잘 맞물리도록 한다.

2) 상관 연산

식별 과정의 핵심은 상관 연산을 통해 "정답"에 가까운 $\tau$와 $f_D$ 후보를 찾는 것이다. 레퍼런스 신호 $\mathbf{r}_{\text{ref}}(n; \tau, f_D)$를 다음과 같이 구성한다고 하자.

rref(n;τ,fD)=c(nτ)cos(2π(fIF+fD)nTs)\mathbf{r}_{\text{ref}}(n; \tau, f_D) = \mathbf{c}(n - \tau)\cos\bigl(2\pi(f_{\mathrm{IF}} + f_D)nT_s\bigr)

이 레퍼런스 신호와 실제 수신 신호 $\mathbf{r}(n)$ 사이의 상관값(또는 상관 계수)은 다음과 같이 정의될 수 있다.

R(τ,fD)=n=0N1r(n)rref(n;τ,fD),R(\tau, f_D) = \sum_{n=0}^{N-1} \mathbf{r}(n) \cdot \mathbf{r}_{\text{ref}}(n; \tau, f_D),

또는 좀 더 편의상 단순화하여 내적(inner product) 형태로도 표현할 수 있다:

R(τ,fD)=rT(τ,fD)rref(τ,fD)R(\tau, f_D) = \mathbf{r}^{T}(\tau, f_D) \, \mathbf{r}_{\text{ref}}(\tau, f_D)

실제로는 $\mathbf{c}(n - \tau)$가 ±1인 시퀀스이므로 이산푸리에변환(DFT)을 이용해 빠른 상관(주파수 영역에서의 곱셈) 연산을 수행하는 FFT 기반 기법 등이 많이 사용된다. $f_D$ 탐색은 여러 후보(예: -5 kHz부터 +5 kHz까지 일정 간격으로 분할)를 준비해두고, 각 후보 도플러에 대해 위 상관 연산을 반복 수행한다.

3) 탐색 범위

  • 코드 위상: $C/A$ 코드는 대략 1ms 길이를 가지며, 일반적으로 1023칩(chips)으로 구성된다. 실제 수신 신호 샘플링 주파수가 $f_s$라면, 한 코드 길이에 해당하는 샘플 수는 $N_{\text{code}} = f_s \times 0.001$ 정도가 될 것이다. 이 전체 구간에 대해 0부터 $N_{\text{code}}-1$까지 모든 위상 오프셋을 가정하며 탐색해야 한다.

  • 도플러 주파수: GNSS 궤도 특성과 수신기 동적 상태에 따라 도플러 주파수 편이가 수 kHz 내외로 발생한다. L1 대역(약 1.57542 GHz) 기준으로 위성 접근 속도 및 사용자 이동에 따라 최대 ±10 kHz 이상 범위로 확장될 수도 있으므로, 해당 구간에서 일정 간격(예: 500 Hz 또는 1 kHz 등)으로 후보를 나누어 탐색한다.

4) 결정 기준

탐색 과정에서 어떤 특정 $(\tau, f_D)$에 대해 계산된 $R(\tau, f_D)$가 사전에 정한 임계값(threshold)을 넘으면 "신호 존재"로 판단하여 식별 성공으로 간주한다. 이 임계값을 설정하는 방법은 False Alarm Rate(오검출 확률)와 Detection Probability(검출 확률)의 요구조건을 동시에 만족하도록 설계된다. 일반적으로

Thresholdσ2ln(PFA)\text{Threshold} \approx \sigma \sqrt{-2 \ln (P_\mathrm{FA})}

와 같은 통계 이론에 기반한 기법을 활용하기도 하는데, 여기서 $\sigma$는 잡음 표준편차를 의미하고, $P_\mathrm{FA}$는 허용 오검출 확률을 의미한다.

추적 과정(Tracking)

식별이 완료된 위성 신호에 대해서는 좀 더 정밀한 동기화가 필요하다. 이는 코드 추적과 반송파 추적이라는 두 가지 루프로 구현되는 것이 일반적이다. 식별에서 얻어진 $\tau$와 $f_D$ 정보를 초기값으로 하여, 수신 신호와 레퍼런스 신호 간의 상관도를 실시간으로 모니터링하며 오차를 보정한다.

추적 과정(Tracking)

식별(Acquisition) 과정을 통해 특정 위성의 신호 존재 여부, 대략적인 코드 위상($\tau$)과 도플러 주파수($f_D$)를 찾았다면, 이제는 미세 조정 및 안정화 단계를 수행해야 한다. 이를 **추적(Tracking)**이라 하며, 일반적으로 **코드 추적 루프(Delay Lock Loop, DLL)**와 **반송파 추적 루프(Phase Lock Loop, PLL/Frequency Lock Loop, FLL)**로 구성된다. 코드 추적은 확산 코드의 정확한 위상을 유지하고, 반송파 추적은 신호 반송파의 주파수와 위상을 유지하는 역할을 한다.

코드 추적(Code Tracking)

코드 추적은 DLL(Delay Lock Loop) 기법을 통해 이루어진다. 수신 신호에서 확산 코드(C/A 코드 등)를 정확하게 맞춰야 비트 전송률과 상관 없이 신호 동기화가 가능해지며, 위성-수신기 간의 정확한 코드를 기반으로 측정치를 얻어낼 수 있다.

1) Early, Prompt, Late 신호

코드 추적을 위해 수신기는 실제 신호와 레퍼런스 코드를 상관시킬 때, 레퍼런스 코드를 시간축으로 약간 앞선(Early), 정확히 일치(Prompt), 조금 늦은(Late) 형태로 복제하여 각각 상관값을 구한다. 이를 $I_{\mathrm{E}}, I_{\mathrm{P}}, I_{\mathrm{L}}$ (In-phase)와 $Q_{\mathrm{E}}, Q_{\mathrm{P}}, Q_{\mathrm{L}}$ (Quadrature)로 나누어 표현하기도 하는데, 일반적으로 다음과 같은 꼴을 생각해볼 수 있다:

IE=n=0N1r(n)cE(n),IP=n=0N1r(n)cP(n),IL=n=0N1r(n)cL(n)QE=n=0N1r(n)cE,90(n),QP=n=0N1r(n)cP,90(n),QL=n=0N1r(n)cL,90(n)\mathbf{I}_{\mathrm{E}} = \sum_{n=0}^{N-1} \mathbf{r}(n) \cdot \mathbf{c}_{\mathrm{E}}(n) ,\quad \mathbf{I}_{\mathrm{P}} = \sum_{n=0}^{N-1} \mathbf{r}(n) \cdot \mathbf{c}_{\mathrm{P}}(n) ,\quad \mathbf{I}_{\mathrm{L}} = \sum_{n=0}^{N-1} \mathbf{r}(n) \cdot \mathbf{c}_{\mathrm{L}}(n) \\ \mathbf{Q}_{\mathrm{E}} = \sum_{n=0}^{N-1} \mathbf{r}(n) \cdot \mathbf{c}_{\mathrm{E},90^\circ}(n) ,\quad \mathbf{Q}_{\mathrm{P}} = \sum_{n=0}^{N-1} \mathbf{r}(n) \cdot \mathbf{c}_{\mathrm{P},90^\circ}(n) ,\quad \mathbf{Q}_{\mathrm{L}} = \sum_{n=0}^{N-1} \mathbf{r}(n) \cdot \mathbf{c}_{\mathrm{L},90^\circ}(n)

여기서

  • $\mathbf{c}{\mathrm{E}}(n)$, $\mathbf{c}{\mathrm{P}}(n)$, $\mathbf{c}_{\mathrm{L}}(n)$는 각각 Early, Prompt, Late에 해당하는 코드 시퀀스(반송파 복제를 포함한 상관 신호),

  • $\mathbf{c}_{\mathrm{E},90^\circ}(n)$ 등은 동일 코드에 대해 90도 위상을 가진 복제 신호(Quadrature),

  • $\mathbf{r}(n)$는 디지털화된 IF 신호,

  • $N$은 한 번의 상관 연산 블록에 해당하는 샘플 개수 등을 의미한다.

2) DLL 오차 측정

DLL에서는 Early와 Late 상관값의 차이를 이용해 코드 위상 오차를 검출한다. 대표적인 에러 신호(Error Signal) 예시는 다음과 같은 형태로 정의된다:

EDLL=(IE2+QE2)    (IL2+QL2)\mathbf{E}_{\mathrm{DLL}} = \bigl(\mathbf{I}_{\mathrm{E}}^2 + \mathbf{Q}_{\mathrm{E}}^2\bigr) \;-\; \bigl(\mathbf{I}_{\mathrm{L}}^2 + \mathbf{Q}_{\mathrm{L}}^2\bigr)

또는 Early와 Late의 합으로 정규화(normalization)하여 다음과 같은 식을 쓰기도 한다:

EDLL=(IE2+QE2)    (IL2+QL2)(IE2+QE2)  +  (IL2+QL2)\mathbf{E}_{\mathrm{DLL}} = \frac{\bigl(\mathbf{I}_{\mathrm{E}}^2 + \mathbf{Q}_{\mathrm{E}}^2\bigr) \;-\; \bigl(\mathbf{I}_{\mathrm{L}}^2 + \mathbf{Q}_{\mathrm{L}}^2\bigr)}{\bigl(\mathbf{I}_{\mathrm{E}}^2 + \mathbf{Q}_{\mathrm{E}}^2\bigr) \;+\; \bigl(\mathbf{I}_{\mathrm{L}}^2 + \mathbf{Q}_{\mathrm{L}}^2\bigr)}

이 에러 신호가 양수면 코드가 “조금 늦춰져야” 하고, 음수면 코드가 “조금 앞당겨져야” 한다는 의미가 된다.

3) DLL 루프 구조

코드 추적 루프는 일반적으로 다음과 같은 요소로 구성된다.

  • Early/Late 상관기: Early와 Late 코드 상관값을 구하여 에러 신호를 계산.

  • 루프 필터(Loop Filter): 에러 신호의 잡음 성분을 억제하고, 추적 엔진이 안정적으로 동작하도록 평활(smoothing) 처리.

  • 코드 NCO(Numerically Controlled Oscillator): 필터 출력을 받아 코드 레이트(Chipping rate)를 미세 조정하여, 다음 상관 연산 시 Early, Prompt, Late 코드가 정확한 위치를 유지하도록 함.

루프 필터는 일반적으로 1차 또는 2차 이하의 간단한 형태를 쓴다. 예컨대, 1차 루프 필터를 가정하면,

Δτ[k+1]=Δτ[k]+KDLLEDLL[k]\Delta \tau[k+1] = \Delta \tau[k] + K_\mathrm{DLL} \, \mathbf{E}_{\mathrm{DLL}}[k]

와 같은 식으로 시간 단계($k$)마다 코드 위상 오프셋을 갱신한다. $K_\mathrm{DLL}$은 루프 이득(Loop Gain)에 대응하는 파라미터이다.

반송파 추적(Carrier Tracking)

반송파 추적은 신호의 반송파 주파수 및 위상을 정확히 맞추는 과정이다. 이는 PLL(Phase Lock Loop) 또는 FLL(Frequency Lock Loop) 방식으로 구현되며, GNSS 수신기는 이러한 루프를 통해 도플러 주파수 변동이나 위상 변동을 연속적으로 보정한다.

1) PLL에서의 I/Q 상관값

PLL 기반 반송파 추적을 위해 수신 신호와 내부 반송파(코드가 제거된 상태)를 곱한 뒤 저역통과 필터를 거쳐 In-phase 성분($I$)과 Quadrature 성분($Q$)을 구한다. 이를 한 번의 상관 블록(혹은 누적 간격)마다 계산하면,

I=n=0N1r(n)cos ⁣(ω^cnTs+ϕ^)Q=n=0N1r(n)sin ⁣(ω^cnTs+ϕ^)\mathbf{I} = \sum_{n=0}^{N-1} \mathbf{r}(n)\cos\!\bigl(\hat{\omega}_c nT_s + \hat{\phi}\bigr) \\ \mathbf{Q} = \sum_{n=0}^{N-1} \mathbf{r}(n)\sin\!\bigl(\hat{\omega}_c nT_s + \hat{\phi}\bigr)

와 같은 꼴로 나타낼 수 있다. 여기서

  • $\hat{\omega}c = 2\pi (f{\mathrm{IF}} + \hat{f}_D)$는 추적 루프에서 현재 추정한 반송파 각주파수,

  • $\hat{\phi}$는 현재 추정한 반송파 위상이다.

2) PLL 에러 신호

PLL에서는 일반적으로 In-phase 성분이 최대가 되고 Quadrature 성분이 0에 가까운 상태를 목표로 하므로, $Q$값 등을 토대로 위상 에러를 추정한다. 예컨대,

EPLL=arctan ⁣(QI)\mathbf{E}_{\mathrm{PLL}} = \arctan\!\biggl(\frac{\mathbf{Q}}{\mathbf{I}}\biggr)

와 같은 단순한 위상 에러 추정 기법(탕젠트 방식) 등을 사용하기도 하고, 저잡음화를 위해 다른 형태의 위상 검출기(Phase Detector)를 활용할 수도 있다.

3) PLL 루프 구조

PLL 루프 또한 크게 위상 검출기(Phase Detector), 루프 필터, 반송파 NCO로 구성된다.

  • 위상 검출기: $\mathbf{I}, \mathbf{Q}$값으로부터 위상 에러(또는 주파수 에러)를 계산.

  • 루프 필터: 에러 신호를 평활하고 루프 동작의 안정성 보장.

  • 반송파 NCO: 루프 필터 출력을 받아 반송파 주파수와 위상을 미세 조정.

예를 들어, 2차 루프 필터(PI 제어기)를 가정하면 주파수 오차와 위상 오차를 동시 보정할 수 있다.

4) FLL(주파수 잠금 루프)

PLL 대신 또는 PLL 보조 목적으로 FLL을 사용하는 경우도 있다. FLL은 주파수 에러에 좀 더 민감하게 작동하여 초기 도플러 오차가 큰 환경에서 빠른 동작을 기대할 수 있다. 예컨대, 짧은 구간 동안의 위상 변화량으로부터 주파수 에러를 추정하는 식을 생각해볼 수 있다:

Δf^D=EFLL2πΔT\Delta \hat{f}_D = \frac{\mathbf{E}_{\mathrm{FLL}}}{2\pi \Delta T}

와 같은 형태에서, $\mathbf{E}_{\mathrm{FLL}}$는 일정 누적 시간 $\Delta T$ 동안 관측된 총 위상 변화량 등을 의미한다.

결합 루프 구조(Loop Coupling)

코드 추적 루프(DLL)와 반송파 추적 루프(PLL 또는 FLL)는 보통 독립적으로 동작하지만, 상호 간의 정보를 교환하거나 결합하여 추적 성능을 향상시킬 수도 있다. 이러한 결합 방식을 **루프 커플링(loop coupling)**이라고 하며, 크게 **낮은 단계 결합(loose coupling)**부터 **높은 단계 결합(tight, ultra-tight coupling)**까지 여러 방식이 존재한다.

1) Carrier-Aided Code Tracking

코드 추적 루프는 위성-수신기 간 상대속도 변화(도플러 편이)에 따라 코드 레이트가 변할 수 있으므로, 반송파 추적 루프(PLL/FLL)에서 추정한 주파수 정보를 DLL에 피드백하여 코드 추적 동작을 보정하는 방법을 사용할 수 있다.

  • 원리: 도플러 주파수의 변화량은 코드 칩 레이트(chip rate)의 변화량과 선형적으로 비례한다. 예컨대, L1 C/A 신호에서 약 1.023 MHz의 칩 레이트와 1.57542 GHz의 반송파 주파수 사이에는 고정된 비례계수($\kappa \approx 1540$ 정도)가 존재한다.

  • 장점: 반송파 추적 루프가 비교적 빠른 응답(주파수·위상 보정)을 수행하므로, DLL이 저속 필터(좁은 루프 대역폭)를 사용할 수 있게 되어 잡음 억제 성능이 좋아진다.

구체적으로, PLL/FLL에서 추정된 반송파 주파수 오차 $\Delta \hat{f}_D$를 코드 루프에 전달하여,

Δf^code=1.023×1061.57542×109Δf^D    (단위 변환 생략 예시)\Delta \hat{f}_\mathrm{code} = \frac{1.023 \times 10^6}{1.57542 \times 10^9} \,\Delta \hat{f}_D \;\;(\text{단위 변환 생략 예시})

와 같은 비례식을 적용함으로써 코드 추적 루프가 별도의 주파수 탐색 없이도 레이트 변동을 자동 보정하도록 한다.

2) 스칼라 추적(Scalar Tracking)과 벡터 추적(Vector Tracking)

전통적인 GNSS 수신기 구조는 스칼라 추적(Scalar Tracking) 방식을 따른다. 즉, 각 위성별로 독립적인 코드+반송파 루프(DLL+PLL/FLL)가 존재하고, 이들이 서로 교류하지 않는다. 그러나 여러 위성 신호를 동시에 추적하면서, 관성센서(IMU) 정보를 포함하거나 항법해(Navigation Solution)를 적극 활용하면, 벡터 추적(Vector Tracking) 기법을 구현할 수 있다.

  • 스칼라 추적: 각 채널(위성)이 개별적 루프를 형성. 한 채널이 잠긴(locked-on) 상태인지, 풀린(unlocked) 상태인지는 오로지 그 채널 자체 신호 품질에만 의존한다.

  • 벡터 추적: 전 채널에서 얻어진 측정치와 추정된 항법해(예: 수신기 위치, 속도)를 하나의 확장 칼만 필터(EKF) 등으로 통합 추정. 만약 특정 위성 신호 품질이 일시적으로 낮아져도, 다른 위성들의 정보와 보조 센서(IMU 등) 정보가 결합되어 추적이 이어질 수 있다.

벡터 추적 루프의 핵심은 추정된 위치, 속도 정보로부터 각 위성 신호의 예상 도플러 및 코드 지연량을 더 정밀하게 예측하고, 이를 다시 각 추적 루프에 피드백함으로써 전반적인 추적 안정성을 높이는 것이다.

3) 울트라 타이트 결합(Ultra-tight Coupling)

벡터 추적보다 더 진전된 방식으로, 반송파 루프 단계에서도 직접 IMU 측정값이나 항법 정보를 적극 사용하여 신호 위상 변화를 정교하게 예측/보정하는 기법을 일컫는다. 예컨대, 항공기나 고동적(고속, 고가속) 플랫폼에서 IMU 측정치를 통해 아주 짧은 구간 동안 발생하는 급격한 도플러 변동을 빠르게 보정하면, 전파가 순간적으로 약해지거나 멀티패스 영향을 받는 구간에서도 추적 루프가 풀리지 않고 유지될 수 있다.

4) 루프 대역폭 설계

코드 루프(DLL)와 반송파 루프(PLL/FLL)는 각각 루프 필터 설계 시 **대역폭(Bandwidth)**을 결정해야 한다.

  • 좁은 대역폭: 잡음 억제력이 좋아 추적 안정성이 높아진다. 다만 빠른 동적 변화에 대응하기 어려울 수 있다.

  • 넓은 대역폭: 높은 동적 환경(가속도, 자이로 오차 등)에 대응할 수 있으나, 잡음에 취약해 추적 정밀도가 낮아질 수 있다.

결합 루프 구조를 사용하면, 일부 루프의 대역폭을 제한적으로 줄이면서도 다른 루프(또는 항법 보조 센서)가 빠른 동적 변화 대응을 보완해 줄 수 있다. 이는 종합적으로 추적 성능과 잡음 억제 능력을 높이는 결과로 이어진다.

추적 민감도(Tracking Sensitivity)

GNSS 수신기는 다양한 환경(옥외, 실내, 도심 협곡 등)에서 작동하며, 신호 세기가 매우 낮거나 심각한 멀티패스(Multipath) 및 간섭(Interference)에 노출될 수 있다. 이때, 추적 루프가 잠김(lock) 상태를 유지하기 위해 요구되는 최소 신호 대 잡음비($C/N_0$)를 추적 민감도(Tracking Sensitivity)라 한다.

  1. 잡음 환경에서의 I/Q 상관값

    • 수신 신호에 잡음이 크게 섞이면, 한 번의 상관 블록 누적에서 얻어지는 In-phase($\mathbf{I}$) 및 Quadrature($\mathbf{Q}$) 값에 큰 변동이 생긴다.

    • 반송파 추적 루프(PLL/FLL)와 코드 추적 루프(DLL)는 이러한 잡음 변동을 필터링하며 동기화를 유지해야 하는데, 잡음이 너무 크면 에러 신호가 불안정해져 루프가 빈번하게 unlock될 위험이 커진다.

  2. 루프 대역폭과 민감도의 상관관계

    • 루프 대역폭이 좁으면 잡음 억제 효과가 좋아지므로 추적 민감도가 향상된다.

    • 그러나 대역폭이 너무 좁으면 사용자 동적 변화(가속, 속도)에 의한 신호 주파수 변화를 빠르게 따라가지 못해 동기화가 깨질 수 있다.

  3. 장기 누적(Longer Correlation) 기법

    • 매우 약한 신호 환경에서 추적 민감도를 높이기 위해, 상관 연산 구간을 더 길게(수 ms 이상) 잡아 신호 에너지를 더 많이 누적함으로써 신호 대 잡음비를 개선할 수 있다.

    • 장기 누적은 신호 위상 변화(비트 경계, 도플러 변동)에 영향을 받으므로, 이를 보정하기 위한 별도 알고리즘이 필요하다.

재취득(Reacquisition)

추적 중에 신호가 순간적으로 끊기거나(예: 터널 진입, 건물 차폐), 급격한 도플러 변동 등으로 인해 루프가 풀린다면, 수신기는 해당 위성 신호를 다시 획득(Acquisition)해야 한다. 이를 **재취득(Reacquisition)**이라 한다.

  1. 재취득 시나리오

    • 신호 차폐 후 다시 신호가 들어올 때

    • 빠른 수신기 자세 변경(회전) 또는 가속 등으로 추적 루프가 순간적으로 unlock되었을 때

    • 주파수 도플러가 범위를 벗어나서 기존 PLL/FLL 추적 범위로는 커버가 안 될 때

  2. 빠른 탐색 알고리즘

    • 재취득은 초기에 수행하는 본격적인 탐색(Acquisition)보다 더 빠른 시간 안에 이뤄져야 하므로, 좁혀진 도플러 범위와 알려진 코드 정보를 적극 활용한다.

    • 예컨대, 일정 시간 동안 유지했던 이전 추적 루프 출력(도플러 추정값, 코드 위상) 근처부터 재탐색 범위를 설정한다.

  3. 스냅샷 기반 재취득

    • 매우 짧은 구간의 수신 신호 샘플만 확보해, FFT 기반 상관 연산으로 신속히 도플러와 코드 위상을 재추정하는 기법을 적용할 수 있다.

    • 휴대 단말이나 저전력 요구 사항이 큰 수신기에서는 전력 소모를 줄이기 위해, 스냅샷 기반 기법을 결합한 저복잡도 재취득 과정을 설계하기도 한다.

사이클 슬립(Cycle Slip) 및 위상 연속성

**사이클 슬립(Cycle Slip)**은 반송파 추적 중에 위상 측정값이 갑자기 불연속적으로 변하는 현상을 말한다. 이는 PLL이 짧은 시간 동안 unlock되었다가 다시 lock되면서, 반송파 위상의 정수를 놓치게 되는 상황으로 볼 수 있다.

  1. 발생 원인

    • 신호 강도가 급격히 떨어지거나 잡음이 크게 증가할 때

    • 위성 신호가 구조물에 반사되는 멀티패스로 인해 위상이 순간적으로 변질될 때

    • 높은 동적 환경에서 PLL 대역폭이 충분치 않아 추적을 따라가지 못할 때

  2. 검출 및 보정

    • 일반적으로 고정밀 측위(RTK 등)를 위해서는 반송파 위상을 매우 정밀하게 유지해야 하므로, 사이클 슬립이 발생하면 정밀도에 치명적인 영향을 준다.

    • 사이클 슬립 검출을 위해, 연속된 측정치 간 위상 변화량을 분석하거나, 코드 측정과 반송파 측정 간의 일관성을 점검하는 방법 등이 사용된다.

  3. 루프 파라미터 조정

    • 사이클 슬립 빈도를 줄이기 위해 PLL 대역폭이나 루프 이득, 누적 구간 등을 적절히 조정해 추적 안정성을 높일 수 있다.

    • 수신기 설계 시 예측되는 동적 범위와 신호 세기에 맞춰 파라미터를 세팅해야 하며, 만약 무리하게 좁은 대역폭을 유지하면 동적 환경에서 사이클 슬립 위험이 증가할 수도 있다.

멀티패스(Multipath) 영향과 추적

신호가 주경로(직접 경로) 외에 주변 지형·건물·구조물 등에 반사되어 들어오면, 여러 경로가 겹쳐서 추적 오차를 유발한다. 이를 **멀티패스(Multipath)**라고 한다.

  1. 코드 멀티패스

    • 코드 상관치는 비교적 긴 칩 길이(예: C/A 코드 1칩은 293m 정도)를 갖기 때문에, 멀티패스가 있으면 Early, Prompt, Late 상관값 분포에 왜곡이 발생한다.

    • DLL 루프에서 제어값이 편향되어 코드 추적 오차가 생길 수 있다.

  2. 반송파 멀티패스

    • 반송파 파장은 L1 주파수 기준 약 19cm이므로, 반사 경로 차이가 수십 cm 정도만 돼도 위상 추적에 심각한 오차가 누적될 수 있다.

    • PLL 루프에서 멀티패스 신호와의 간섭으로 사이클 슬립이 빈발하거나 오차 누적이 발생할 수 있다.

  3. 멀티패스 저감 기법

    • 안테나 설계: 지향성(directivity)이 높은 안테나나 차폐 설계를 통해 지표면 및 주변 반사 신호를 최대한 억제.

    • 추적 알고리즘: Narrow Correlator, Double-Delta Correlator 등의 특수 상관 기법을 사용하여 코드 멀티패스 에러를 줄인다.

    • 수신기 펌웨어: PLL, DLL 필터링 단계에서 오차 관측값을 분석해 멀티패스 가능성을 판단, 이상치(Outlier) 처리를 수행.

Last updated