디지털 신호처리와 추적 루프
디지털 신호처리 개요
GNSS 수신기에서 위성에서 수신한 신호는 아날로그 전치증폭과 주파수 변환을 거쳐 중간주파수(IF) 대역으로 들어오게 된다. 이후 아날로그-디지털 변환(ADC)을 통해 디지털 신호로 변환되며, 이 디지털 신호에 대해 여러 단계를 거쳐 복조 및 위치/시각 정보 획득에 필요한 처리 과정을 수행한다. 디지털 영역에서의 신호처리는 크게 다음과 같은 단계를 거친다.
다운샘플링(Decimation): ADC 이후 샘플링 주파수가 매우 높을 경우, 대역폭에 맞추어 다운샘플링을 수행한다.
디지털 필터링(Digital Filtering): 필요한 대역만을 추출하기 위해서 혹은 잡음을 줄이기 위해 적절한 디지털 필터를 적용한다.
반송파 제거(Carrier Wipe-off): 특정 위성 신호에 맞게 반송파를 제거하기 위해 로컬 반송파 생성을 통해 디지털 혼합(Digital Mixing)을 수행한다.
코드 제거(Code Wipe-off): 위성별로 부호분할방식(CDMA)을 사용하므로, 로컬에서 생성한 위성별 확산코드(Spread Spectrum Code)를 이용해 상관(Correlation) 처리를 진행한다.
이러한 신호처리 과정을 통해 출력된 상관값을 기반으로 **추적 루프(Tracking Loop)**가 동작하며, 오차를 최소화하고 최적의 추정치를 유지한다. 추적 루프는 크게 코드 추적 루프와 반송파 추적 루프로 구성된다.
디지털 신호처리 블록 다이어그램 예시
아래는 GNSS 수신기에서 디지털 신호처리와 추적 루프 간의 상호 연관 관계를 단순화하여 나타낸 블록 다이어그램이다.
상관기의 기본 원리
GNSS에서 사용하는 확산코드는 매우 긴 주기를 갖는 위상 편이부호(Pseudo Random Code)이며, 위성마다 고유한 코드를 사용한다. 이 코드를 통해 동일 대역에서 여러 위성의 신호를 동시에 구분할 수 있다. 디지털 상관기는 수신신호와 로컬에서 생성한 위성 코드를 곱하고 일정 기간 동안 누적(sum)하여 상관값을 계산한다.
수신 신호를 시간에 대해 $x(t)$라 하고, 로컬에서 생성한 코드(확산코드)를 $c(t)$라 하자.
적분 구간 혹은 누적 구간을 $T$로 설정하면, 상관 연산은 다음과 같이 나타낼 수 있다.
R=∫0Tx(t)c∗(t)dt디지털 구현에서는 보통 샘플링된 신호 $\mathbf{x}(n)$과 코드 $\mathbf{c}(n)$에 대해 이산화된 상관계산을 수행한다.
R=n=0∑N−1x(n)c∗(n)이때 $\mathbf{x}(n)$과 $\mathbf{c}(n)$은 각각 복소(baseband) 혹은 실수(IF 하향 변환 이후) 형태일 수 있다.
상관값 $R$이 최대가 되는 시점에서 코드의 동기(offset) 및 반송파 주파수 등이 정밀하게 맞춰진다. 이 최대점을 추적하기 위해 별도의 루프 필터(loop filter)가 적용되며, 이를 통틀어 추적 루프라 부른다.
추적 루프 기본 개념
추적 루프는 대체로 코드 추적 루프와 반송파 추적 루프 두 개로 나뉘지만, 실제 구현에서는 이들이 서로 상호작용하며 동작한다.
코드 추적 루프: 코드 지연 잠금 루프(Delay Lock Loop, DLL)를 통해 확산코드 시점을 추적
반송파 추적 루프: 주파수 잠금 루프(Frequency Lock Loop, FLL) 또는 위상 잠금 루프(Phase Lock Loop, PLL)를 통해 반송파의 주파수 및 위상을 추적
추적 루프의 목적은 다음과 같다.
코드의 정확한 시간 동기를 지속적으로 유지하여 거리측정오차를 최소화한다.
반송파의 정확한 주파수와 위상을 추정하여 도플러 보상을 하고, 위상 측정 정확도를 높인다.
코드 추적 루프에서의 상관값은 ‘Early’, ‘Prompt’, ‘Late’ 세 가지 상관기 출력을 주로 사용하고, 반송파 추적 루프에서는 ‘In-phase(I)’, ‘Quadrature(Q)’ 성분을 사용한다.
코드 추적 루프(Delay Lock Loop, DLL)
코드 추적 루프는 확산코드의 시간 동기를 정밀하게 맞추기 위해 사용된다. 위성에서 전송되는 확산코드는 매우 긴 길이를 가지며, 수신기는 이 코드를 로컬에서 동일하게 생성하여 상관(correlation)을 통해 동기를 획득하고 유지한다. DLL에서는 보통 ‘Early(E)’, ‘Prompt(P)’, ‘Late(L)’ 세 지점에서 상관값을 구한 후, 이들의 차이를 이용하여 코드 지연 오차를 추정한다.
상관기 출력
$I_E, Q_E$: Early 상관 출력 (무선 신호와 로컬 코드가 약간 빠른 쪽으로 합치도록 만든 지점에서의 상관량)
$I_P, Q_P$: Prompt 상관 출력 (정확히 맞춘 지점에서의 상관량)
$I_L, Q_L$: Late 상관 출력 (무선 신호와 로컬 코드가 약간 늦은 쪽에서 합치도록 만든 지점에서의 상관량)
여기서 $I$는 무선 신호와 로컬 반송파가 동상(in-phase)으로 이루어졌을 때의 상관 출력이며, $Q$는 90도 위상 차(quadrature)에서의 상관 출력이다.
DLL 오차 측정
DLL에서 사용하는 오차 측정 식은 다양한 형태가 있으나, 일반적으로 Early와 Late 측의 에너지를 비교하여 그 차이를 코드 루프 필터에 입력한다. 가장 간단한 에너지를 사용하는 예시는 다음과 같이 표현할 수 있다.
코드 루프 필터는 $E_\mathrm{DLL}$을 입력으로 받아 오차 보정량을 계산하고, 이를 통해 로컬 코드 발전기(Local Code Generator)의 타이밍을 조금씩 조절하여 확산코드와 수신신호의 동기가 유지되도록 한다.
DLL 루프 필터
루프 필터는 일반적으로 1차 또는 2차 루프 필터를 사용한다.
1차 필터(비례형 필터)는 오차에 비례하여 제어량을 생성한다.
2차 필터(비례적분형 필터)는 누적 오차에 대해 적분 동작을 수행하므로 저속이지만, 추적 정밀도를 높이는 데 사용된다.
반송파 추적 루프(Carrier Tracking Loop)
반송파 추적 루프는 수신 신호의 반송파 주파수 및 위상을 추적하여 도플러 주파수를 정확하게 보상하고, 위상 정보를 정밀하게 획득하기 위한 루프이다. 주로 **주파수 잠금 루프(FLL)**와 위상 잠금 루프(PLL) 두 가지 방식이 사용된다.
FLL (Frequency Lock Loop)
FLL은 반송파 주파수를 빠르게 추적하기 위한 루프로, PLL과 비교해 상대적으로 간단하며 잡음에 강인하다. 초기 도플러 주파수 추정에 사용되거나, PLL에 도달하기 전에 거친 잠금 단계를 수행하는 데 사용된다.
FLL 오차 측정은 주파수 차이에 비례하는 양을 기반으로 정의된다.
예를 들어, 어떤 관측 구간 동안의 위상 변화량을 이용하거나, 상관기 출력 중 I, Q 신호로부터 추정되는 주파수 편이를 이용해 에러 신호를 생성한다.
PLL (Phase Lock Loop)
PLL은 위상 동기를 추적하여 반송파 위상을 매우 정밀하게 맞추는 루프이다. GNSS 신호에서 높은 정확도가 필요한 위상 측정(예: 고정밀 항법) 시 주로 사용된다.
$I$, $Q$ 상관 출력은 다음과 같이 표현할 수 있다.
I=Acos(ϕe),Q=Asin(ϕe)여기서 $\phi_e$는 현재 실제 반송파 위상과 로컬 반송파 위상의 차이(오차)다.
PLL 오차 측정은 대체로
EPLL=arctan(IQ)또는 $Q \cdot I$의 부호와 크기를 이용하는 방식 등으로 구현된다.
반송파 루프 필터
반송파 루프 필터 역시 1차 혹은 2차 형태가 많이 사용된다. PLL의 경우, 도플러 주파수나 위상 잔차(residual)에 민감하기 때문에 설계 시 노이즈 BW(Noise Bandwidth)를 매우 좁게 설정하는 편이다.
추적 루프의 잡음 분석
추적 루프 성능을 정확히 이해하기 위해서는 코드 및 반송파 추적 루프에 내재된 잡음을 수학적으로 모델링하고 해석하는 과정이 필요하다. GNSS 수신기에서는 열잡음(thermal noise), 위상 잡음(oscillator phase noise), 다중경로(multipath) 등이 대표적인 잡음 요소로 작용한다.
열잡음(thermal noise): 최전치증폭기(LNA) 이후 수신 부품 및 ADC에 의해 발생되는 기본적인 백색가우시안 잡음(White Gaussian Noise)
위상 잡음(phase noise): 로컬 발진기(local oscillator)의 불완전성으로 인해 반송파 신호 생성 시 위상에 미세한 변동이 발생
다중경로(multipath): 위성 신호가 건물, 지면 등에서 반사되어 본 신호와 다른 경로를 통해 들어오는 현상. 특히 코드 추적 루프에 지연 영향을 주며, 반송파 추적에도 위상 오류를 유발
각 잡음 요소가 상관기 출력에 미치는 영향을 분석하기 위해서는 신호대잡음비($C/N_0$) 및 루프 대역폭과의 관계를 수식으로 표현하여 추적 정밀도를 추정하게 된다.
루프 대역폭(Loop Bandwidth) 선정
추적 루프(특히 DLL, PLL)의 대역폭(BW)은 노이즈 억제 능력과 추적 루프 동특성 간의 절충점을 결정한다. 좁은 대역폭을 사용하면 잡음에 대해 강인하나, 동적인 조건(도플러 변동, 위성/수신기 상대속도)이 커질 경우 추적이 어려워진다. 반대로 대역폭을 넓게 설정하면 빠른 동적 추적이 가능하지만, 잡음이 루프 내부로 많이 유입되어 추적 정확도가 떨어질 수 있다.
루프 오차 표준편차
를 대략적으로 나타내는 식은 다음과 같은 형태를 갖는다. (단순화된 PLL 기준 예시)
σϕ≈C/N0BL여기서
$B_L$는 PLL 루프 대역폭,
$C/N_0$는 캐리어 대 잡음 스펙트럼 밀도 비,
$\sigma_{\phi}$는 위상 추적오차의 표준편차다.
코드 루프 역시 비슷한 형태로 잡음 분석을 수행하되, 코드 추적 루프 에러와 신호대잡음비 간의 상관관계를 적절히 고려하여 최적의 루프 대역폭을 결정한다.
루프 동특성(Dynamic Behavior)
GNSS 수신기는 지상, 항공, 우주 등 다양한 플랫폼에서 이동하며, 위성 신호와의 상대속도로 인해 도플러 주파수가 시간에 따라 빠르게 변할 수 있다. 추적 루프 설계 시 다음과 같은 요소를 고려해야 한다.
동작 환경
고속 이동체(비행기, 미사일 등)에서는 큰 도플러 변화량을 빠르게 추적해야 하므로, 넓은 대역폭 혹은 고차 루프 필터가 필요할 수 있다.
루프 차수(order)
1차 루프: 주파수 오차만 보정
2차 루프: 주파수 및 위상(적분항)까지 보정
3차 이상: 가속도 항 추정까지 가능 (고동적 상황에서 사용)
루프 감도(loop gain)
오차 측정치에 대한 루프 제어량 반영 비율
루프의 응답 속도와 안정성(stability)을 결정
멀티패스(Multipath) 영향과 보정
멀티패스는 코드 추적 루프에 가장 크게 영향을 주며, 반송파 추적 루프에도 위상 점프나 지연 등을 유발한다. 멀티패스 신호가 수신신호와 겹치면, 상관기 출력이 왜곡되어 코드 추적 오차가 발생할 수 있다.
주요 영향
코드 추적 루프에서 Early-Late 상관값이 비대칭적으로 변하여 지연잠금 지점이 실제보다 빨라지거나 느려질 수 있음
반송파 위상도 반사 경로로 인해 추가적인 위상 회전이 발생
간단한 보정 기법
**낮은 코히어런트 적분 시간(coherent integration time)**을 사용하여 짧은 반사 경로를 부분적으로 필터링
멀티패스 제거 알고리즘(narrow correlator, double-delta correlator 등)을 적용하여 코드 추적 루프가 보다 예민하게 지연오차를 판단하도록 설계
이러한 기법들 이외에도 높은 차수의 루프 설계, 안테나 설계(저멀티패스 안테나), 신호처리 기법을 복합적으로 활용하여 멀티패스 영향을 줄이고 정확도를 높일 수 있다.
벡터 트래킹(Vector Tracking) 개념
추적 루프를 위성 신호별로 독립적으로 구성하는 전통적 기법과 달리, 벡터 트래킹(Vector Tracking)은 다중 위성 채널을 하나의 추정기(Estimator)로 묶어서 동시에 추적하는 방식을 의미한다. 이때 하나의 상태벡터에 모든 위성의 코드 지연, 반송파 주파수/위상, 그리고 수신기의 동특성(예: 속도, 가속도 등)까지 포함하여 확장 칼만 필터(EKF) 등을 통해 일괄적으로 추정한다.
장점
여러 위성에서 유도되는 측정치를 한꺼번에 활용하므로, 열악한 신호 환경(신호 차단, 열 잡음 증가 등)에서도 추적 루프가 안정적으로 유지될 가능성이 높아진다.
수신기 동특성(예: 높은 가속도)을 공유 정보로 사용하여 일관성 있는 추적 결과를 도출할 수 있다.
단점
구현 복잡도 증가: 전통적 채널별 추적기에 비해 상태공간이 커지고, 실시간 EKF 연산을 수행해야 하므로 CPU 자원 및 알고리즘 설계 복잡도가 높아진다.
오차 전파 가능성: 하나의 필터로 묶여 있으므로, 특정 위성 신호의 품질 저하가 전체 추적 성능에 영향을 줄 수 있다.
벡터 트래킹 수학적 모델 예시
벡터 트래킹에서의 상태벡터는 다음과 같이 구성될 수 있다(예시).
$\delta t(k)$: 수신기 내부 시계 오차(Clock Bias)
$\mathbf{v}\text{rcvr}(k), \mathbf{a}\text{rcvr}(k)$: 수신기의 속도, 가속도 (플랫폼 동특성)
$\tau_i(k)$: $i$번째 위성 신호에 대한 코드 지연 파라미터
$f_i(k)$: $i$번째 위성 신호에 대한 반송파 주파수(도플러) 파라미터
$M$: 추적 중인 위성의 수
이 상태벡터에 대한 측정 모델은 각 위성별 상관기 출력(혹은 추적 루프에서 얻어지는 가상 측정치)과 연결된다. EKF의 상태방정식과 측정방정식을 적절히 구성하면, 매 샘플링 간격(혹은 루프 업데이트 간격)마다 필터가 새로운 추정치를 계산하여 각 채널의 코드와 반송파를 동시에 보정한다.
확장 칼만 필터(EKF) 기반 추적
벡터 트래킹에서 흔히 사용되는 필터 구조는 확장 칼만 필터(EKF)이다. GNSS 추적 문제는 선형성이 보장되지 않는 경우가 많으므로(도플러 등 비선형 요소) EKF를 통해 선형 근사와 공분산 업데이트를 수행한다.
상태방정식
x(k+1)=f(x(k))+w(k)$\mathbf{f}$: 상태 진화 함수를 나타내는 비선형 식
$\mathbf{w}(k)$: 시스템 노이즈(process noise)
측정방정식
z(k)=h(x(k))+v(k)$\mathbf{h}$: 추적 루프에서 산출되는 상관 결과(코드 지연, 반송파 위상/주파수 오차 등)를 비선형 함수로 표현
$\mathbf{v}(k)$: 측정 잡음(measurement noise)
EKF 순서
예측 단계(Prediction):
x^(k∣k−1)=f(x^(k−1∣k−1))P(k∣k−1)=F(k−1)P(k−1∣k−1)FT(k−1)+Q(k−1)여기서 $\mathbf{F}$는 $\mathbf{f}$의 야코비(Jacobian), $\mathbf{Q}$는 시스템 노이즈 공분산.
업데이트 단계(Update):
K(k)=P(k∣k−1)HT(k)[H(k)P(k∣k−1)HT(k)+R(k)]−1x^(k∣k)=x^(k∣k−1)+K(k)[z(k)−h(x^(k∣k−1))]P(k∣k)=[I−K(k)H(k)]P(k∣k−1)여기서 $\mathbf{H}$는 $\mathbf{h}$의 야코비, $\mathbf{R}$는 측정 잡음 공분산.
이 과정을 각 루프 업데이트마다 반복 수행함으로써, 여러 위성 신호에 대한 코드 지연, 반송파 도플러 및 수신기 동특성을 동시에 추정한다.
디지털 신호처리 구현 이슈
GNSS 수신기에서 디지털 신호처리를 구현할 때 고려해야 할 주요 이슈들은 다음과 같다.
ADC 해상도 및 샘플링 속도
지나치게 높은 샘플링 속도는 처리량이 급증하고, 회로 전력 소모가 커진다.
반면에 너무 낮은 해상도를 사용하면 상관기 출력 SNR이 떨어진다.
고정소수점(fixed-point) 연산
DSP나 FPGA 기반으로 구현 시, 부동소수점보다는 고정소수점 연산이 대부분이다.
연산 비트 수(bit-width) 선택에 따라 상관 결과의 정밀도가 달라진다.
실시간성(real-time) 보장
루프 업데이트 주기를 일정 시간(예: 1ms ~ 20ms) 안에 처리해야 한다.
외부 펌웨어/소프트웨어와 인터페이스를 고려하여 데이터 파이프라인과 버퍼 구조를 설계해야 한다.
파이프라인 및 멀티스레딩
여러 채널에 대한 상관 처리를 병렬화하거나, 추적 루프와 탐색(신호 획득) 루프를 분리하여 동시 처리 가능성을 높인다.
파이프라인 구조의 하드웨어 설계를 통해 클록 주기마다 연속적인 상관 연산이 가능하도록 만든다.
고차 루프와 고정밀 추적
높은 동적 상황(고속, 고가속)에서 수신기를 운용해야 할 경우, 기존 2차 루프나 3차 루프보다 더 높은 차수로 반송파 루프를 설계하기도 한다. 예를 들어, 3차 루프는 가속도를 추정 항에 추가하여 빠른 도플러 변화도 추적 가능하게끔 설계한다.
3차 PLL 예시
상태변수: 위상, 주파수, 주파수 변화율
루프 필터 형태가 2차 적분(가속도 항)까지 고려하여 반송파 추정치 업데이트
다른 한편으로, RTK(Real-Time Kinematic)나 PPP(Precise Point Positioning) 등 고정밀 측위를 위해서는 추적 루프의 위상 측정 정확도가 매우 중요하다. 이때 측정 오차를 서브-사이클(sub-cycle) 단위로 줄이기 위해 PLL 대역폭을 매우 좁게 잡고, 다중 위성 정보를 교차 활용하는 기법이 사용된다.
FFT 기반 상관 기법
코드 상관 연산은 시간영역에서 직접 곱셈/덧셈을 수행하는 방식 외에도, FFT(Fast Fourier Transform)를 이용하여 주파수영역에서 빠르게 계산할 수 있다.
시간영역 상관(Time-domain correlation)
R(τ)=n=0∑N−1x(n)c∗(n−τ)이산적 타임 시프트($\tau$)마다 반복 연산이 필요하므로, 실시간 구현 시 계산량이 증가한다.
주파수영역 상관(Frequency-domain correlation) 디지털 신호 $\mathbf{x}(n)$과 코드 $\mathbf{c}(n)$ 각각에 대해 FFT를 취한 뒤, 다음과 같은 방식으로 곱한다.
X(k)=FFT{x(n)},C(k)=FFT{c(n)}R(k)=X(k)C∗(k)그 후 $\mathbf{R}(k)$에 역 FFT(IFFT)를 적용하면 시간영역 상관 결과를 얻을 수 있다.
R(τ)=IFFT{R(k)}장점: 긴 코드(예: P코드, PRS 코드 등)와의 상관 시 획득(Acquisition) 단계에서 계산속도를 크게 향상한다.
단점: 실시간 추적 루프에서의 미세한 코드 지연 조정은 여전히 시간영역에서 수행되므로, FFT 기반 상관이 추적 루프 전체를 대체하지는 못한다(특히 부분 상관·미세 조정).
부분 상관(Partial Correlation) 기법
GNSS 신호의 코드 길이는 매우 길어서(예: GPS L1 C/A 코드는 1023칩, Galileo C 코드 등은 더 길 수 있음), 모든 샘플에 대해 매번 전체 길이의 상관을 수행하는 것은 비효율적일 수 있다. 따라서 부분 상관 기법을 통해 계산 복잡도를 줄이기도 한다.
부분 상관의 아이디어
긴 코드 구간을 여러 하위 블록(sub-integration interval)으로 나눈다.
각 하위 블록마다 상관 연산을 수행하고, 상관 결과를 누적(비코히어런트 누적 등)하거나 적절한 방식으로 합산한다.
누적 과정에서 잡음을 평균화시키되, 전체 코드 길이에 해당하는 에너지를 최대한 확보한다.
장점
실시간 처리 부하 감소.
동적 환경에서 다중경로나 도플러 변화에 더욱 빠르게 반응할 수 있다(짧은 블록 길이).
단점
블록 간 위상 변화를 감안해야 하며, 부분 상관마다 위상 정합(coherent integration)이 어려울 수 있음.
구현 복잡도가 증가.
다중 위성 동시 상관(Parallel Correlator)
수신기 구현에서 여러 위성 채널을 동시에 처리하기 위해 병렬 상관기(Parallel Correlator) 구조를 적용하기도 한다. 전통적으로는 각 위성 채널별로 독립된 코드를 혼합해서 상관하는 방식이지만, FPGA나 ASIC 설계에서는 병렬화된 하드웨어 블록을 통해 동시에 여러 위성 신호의 상관을 처리 가능하다.
엔진(Engine) 단위 병렬화
하나의 상관 엔진이 여러 코드 쉬프팅(shift)을 동시에 계산하도록 파이프라인 설계
초당 수십 개 이상의 코드 쉬프트 결과를 병렬로 산출
이득(Gain)
빠른 탐색(Acquisition) 속도
여러 위성 신호에 대한 상관 작업 병렬 처리
주의사항
하드웨어 자원 소모가 커지고, 설계 복잡도가 증가
채널 간 간섭 및 스케줄링(어느 시점에 어떤 코드 쉬프트를 할지) 관리가 필요
멀티 컨스텔레이션(Multi-Constellation) 추적
GPS 외에도 GLONASS, Galileo, BeiDou, QZSS 등 다양한 위성항법시스템 신호를 동시에 추적하는 멀티 컨스텔레이션 수신기가 일반화되고 있다. 이 경우, 디지털 신호처리와 추적 루프 설계 시 다음 요소를 추가적으로 고려한다.
중간주파수(IF) 배치
여러 주파수 대역(L1, L2, E1, B1 등)을 동시에 수신하려면, RF 프런트엔드에서 채널별 IF 신호를 생성하거나 광대역 ADC로 모두 커버해야 한다.
중복 자원 사용
일부 신호는 동일하거나 유사한 코드 구조(BPSK, BOC 등)를 쓰므로, 상관기 설계를 재사용할 수 있다.
채널 관리
각 GNSS 별로 추적 루프 파라미터(코드 속도, 반송파 주파수)가 다를 수 있으므로, 소프트웨어에서 동적으로 채널 구성과 파라미터를 관리해야 한다.
공동 처리(Beneficial combination)
서로 다른 위성항법시스템에서 획득한 측정치(코드, 위상)를 결합하면, 더 높은 가용성(Availability)과 정확도를 기대할 수 있다(예: 다중 주파수/다중 위성).
고차 변조 신호(BOC, AltBOC 등)
현대 GNSS 신호는 전통적인 BPSK 외에 BOC(Binary Offset Carrier), AltBOC 등 다양한 변조 방식이 사용된다. 예를 들어, Galileo E5 신호는 AltBOC 변조를 사용하여 넓은 대역폭을 커버하며 높은 정확도와 코드 추적 성능을 제공한다.
BOC 신호의 특징
서브캐리어(sub-carrier)로 인해 복소도플러/위상 추적 시 특유의 앰비규이티(ambiguous correlation peak)가 발생할 수 있음
BPSK보다 넓은 주파수 스펙트럼을 점유하여 다중경로 억제 성능이 향상
추적 루프에서의 고려 사항
BOC 신호는 메인 로브(main lobe) 외에도 사이드 로브(side lobe)가 존재하므로, 추적 루프 파라미터를 신중하게 설계해야 한다(코드 추적 루프에서 가짜 피크에 잠기지 않도록).
반송파 루프 측면에서도 서브캐리어 주파수에 대한 추가 오차 항을 고려해야 할 수 있다.
코히어런트/비코히어런트 적분(Coherent / Noncoherent Integration)
GNSS 수신기의 상관 과정에서, 상관값을 누적할 때 코히어런트 적분(coherent integration) 방식과 비코히어런트 적분(noncoherent integration) 방식을 적절히 선택한다.
코히어런트 적분
반송파(또는 중간주파수)와 위상을 정확히 맞춰서 동일 위상에서 상관값을 누적한다.
잡음 제거 효과가 뛰어나지만, 위상 정합 유지가 어려운 동적 상황이나 신호 세기가 약한 경우에 적분 시간이 길어지면 위상 드리프트(phase drift)에 의해 성능이 저하될 수 있다.
짧은 구간(수백 마이크로초~수 밀리초)에서 주로 활용한다.
비코히어런트 적분
각 코히어런트 적분 블록의 크기를 일정하게 설정한 후, 그 상관 결과의 크기(Amplitude 또는 제곱값)를 다시 누적한다.
위상 정합이 필요 없으므로 긴 기간 누적할 수 있다. 다만, 코히어런트 적분에 비해 잡음 억제 효율은 낮을 수 있다.
적분 시간은 추적 루프가 동작하는 주기(루프 업데이트 주기)에 큰 영향을 준다. 일반적으로 코드 추적 루프는 1ms(한 코드 주기) 정도의 코히어런트 적분을 하며, 필요 시 여러 ms까지 비코히어런트 적분을 중첩하여 신호 검출 성능을 높이기도 한다. 반송파 추적 루프는 PLL의 위상 정합을 유지하기 위해 코히어런트 적분 길이를 짧게 두는 편이다.
디스크리미네이터(Discriminator) 설계
추적 루프에서 오차를 측정하는 핵심 블록을 디스크리미네이터(discriminator) 혹은 **에러 검출기(error detector)**라고 부른다.
코드 디스크리미네이터
DLL에서 Early, Late 상관값의 에너지를 이용해 코드 지연 오차를 산출한다.
간단한 에너지 기반 지연-잠금 지표 외에도, 협대역 상관기(narrow correlator), Double-Delta 디스크리미네이터 등 다양한 형태가 존재한다.
반송파 디스크리미네이터
PLL이나 FLL에서 반송파 위상 또는 주파수 편차를 측정한다.
대표적으로 $\arctan\bigl(\frac{Q}{I}\bigr)$, $Q \times I$ 등을 이용한 위상 에러 검출기, 주파수 도함수 기반 검출기가 있다.
디스크리미네이터 선택에 따라 루프 추적 정밀도, 잡음 민감도, 동적 성능이 달라진다. 예컨대 $\arctan\bigl(\frac{Q}{I}\bigr)$ 방식은 전체 위상 범위($\pm \pi$)를 커버하지만, 신호대잡음비가 낮을 때 비교적 잡음에 덜 민감하게 동작한다.
적응형 루프 대역폭(Adaptive Loop Bandwidth)
수신 환경이나 동적 상태가 시시각각 변할 때, 고정 루프 대역폭으로는 최적의 추적 성능을 유지하기 어렵다. 이를 개선하기 위해 적응형(Adaptive) 루프 대역폭 설계가 제안된다.
개념: 신호대잡음비($C/N_0$)가 좋고 동적 변화가 작을 때는 대역폭을 좁게 하여 잡음 민감도를 낮추고, 신호가 약하거나 동적 변화가 클 때는 대역폭을 넓혀서 루프 응답을 빠르게 만든다.
방식:
실시간으로 $C/N_0$를 추정하고, 추적 루프에서 도플러 추정치의 변화율(가속도 항 등)을 모니터링한다.
특정 임계값(threshold)을 넘어가면 루프 대역폭을 단계적으로 늘리거나 줄이는 알고리즘을 적용한다.
이와 같이 루프 대역폭을 동적으로 조절하면 잡음 환경이 급변하거나 위성 블록아웃(신호遮蔽) 이후 다시 재진입할 때에도 보다 안정적으로 추적 루프를 유지할 수 있다.
데이터 채널 vs. 파일럿 채널(Pilot Tracking)
다수의 현대 GNSS 신호(GPS L2C, L5, Galileo E1/E5, BeiDou B2 등)는 데이터(Data) 채널과 파일럿(Pilot) 채널로 분리하여 전송한다.
데이터 채널(Data): 위성 천문력, 이온층 보정 파라미터 등 내비게이션 메시지가 실린다. BPSK나 BOC 변조에 데이터 비트가 실려 위상 회전이 발생한다.
파일럿 채널(Pilot): 메시지가 실리지 않거나 매우 천천히 변하는 부호만 포함하여, 위상 변조로부터 자유롭다.
파일럿 채널은 비트 반전이 없으므로 (또는 매우 낮은 비트율) 코히어런트 적분 시간을 훨씬 길게 잡을 수 있어, PLL 또는 DLL의 추적 정밀도를 높이기 유리하다.
파일럿 루프
PLL, DLL 모두에서 긴 코히어런트 적분으로 높은 신호대잡음비를 확보
지상 환경에서 다중경로나 스펙트럼 간섭이 있을 때도 안정적 추적 가능
데이터 채널
데이터 디멀Tippling과 병행 수행
비트 전이(bit transition)에 의해 코히어런트 적분 구간을 맞춰야 한다
실제로 멀티주파수 수신기에서는 파일럿 채널을 이용한 고정밀 반송파 추적과, 데이터 채널을 이용한 메시지 수신을 동시에 수행하여 최적의 성능을 얻는다.
AGC(Automatic Gain Control)와 양자화(Quantization) 고려
디지털 신호처리에 앞서 RF/IF 단에서 **AGC(Automatic Gain Control)**가 동작하여 ADC 입력 신호 레벨을 적절히 유지한다.
AGC 목적:
ADC가 포화(saturation)되지 않으면서, 해상도(bit 수)를 최대한 활용해 잡음에서 유효신호를 구분하도록 신호 레벨을 맞춘다.
양자화 비트 수:
일반적으로 1~4비트 수준의 저해상도 양자화를 사용하기도 하며, 8비트 이상의 고해상도 ADC를 사용할 수도 있다.
양자화가 너무 낮으면 상관기 SNR이 감소하지만, 하드웨어 복잡도와 전력 소모는 줄어든다.
최근엔 저비트 양자화 기술이 발전하여, 1~2비트만으로도 GNSS 추적이 가능하도록 연구가 진행되기도 한다.
IQ 불균형(I/Q Imbalance)과 클록 오프셋
수신기의 믹서단이나 ADC, 로컬 발진기에서 발생하는 I/Q 불균형(진폭·위상 불일치)은 심도 있는 디지털 보정을 필요로 할 수 있다.
I/Q 매트릭스 모델
실제 수신된 신호 $\mathbf{x}(n)$이 I/Q 불균형에 의해 $\mathbf{y}(n)$으로 변형된다면,
[yI(n)yQ(n)]=[αβ−βα][xI(n)xQ(n)]같은 형태로 나타낼 수 있다.
여기서 $\alpha, \beta$는 불균형 파라미터(진폭, 위상 오차).
보정: 위상 보정 계수, 진폭 보정 계수를 루프 필터나 별도의 DSP 블록에서 추정·보상한다.
또한, 수신기 내부 클록(샘플링 클록, 코덱 클록 등)이 미세하게 오차가 있으면 샘플링 주파수가 표준 주파수와 달라져서 코드 추적 및 반송파 추적에 추가 에러가 유발된다. 이를 보정하기 위해 샘플링 클록의 오프셋(예: ppm 단위)을 추정하고, 소프트웨어 또는 FPGA에서 재샘플링(resampling) 기법을 적용하기도 한다.
INS 보조 추적(INS-Aided Tracking)
고속·고동적 플랫폼(예: 항공기, 무인기)에서 GNSS 단독으로 추적 루프를 구성하면 도플러 편차가 급변하여 루프 손실이 발생하기 쉽다. 이를 보완하기 위해 INS(Inertial Navigation System) 센서(가속도계, 자이로 등)에서 얻는 플랫폼 운동 정보를 추적 루프에 피드백하는 기법이 있다.
방법
INS로부터 얻은 속도·가속도 정보를 이용해 도플러 예측치를 보정한다.
루프 필터에서 INS 예측항을 빼주어, 실제 GNSS 신호와 로컬 반송파 사이의 잔차 도플러만 추적하게끔 만든다.
장점
매우 빠른 상대속도나 급격한 기동이 있을 때도 루프가 쉽게 풀리지 않는다.
벡터 트래킹과 결합하면, 다수 채널이 동시에 INS 정보를 공유하여 추적 안정성을 높일 수 있다.
단점
INS 센서 오차(바이어스, 스케일 팩터 등)가 누적되면 GNSS 추적 성능에도 악영향을 줄 수 있으므로, 센서 캘리브레이션과 융합필터 설계가 정교해야 한다.
고유 루프(수정 PLL)와 하이브리드 루프
전통적인 PLL/FLL/DLL 구조 외에, 다양한 하이브리드 루프 설계가 존재한다. 예를 들어, FLL-PLL 하이브리드는 PLL의 위상 정밀도와 FLL의 주파수 잡음 강인성을 결합한 형태로, 상대속도가 큰 상황에서도 위상을 놓치지 않고 추적할 수 있게 해준다.
FLL-PLL 하이브리드
낮은 대역폭의 PLL과 넓은 대역폭의 FLL을 병렬 또는 순차적으로 동작
FLL에서 빠른 주파수 에러를 추적하고, PLL에서 미세 위상 추정을 담당
SQP(Squaring Loop)
반송파 위상 검출 시, 2차 전력 검출 방식을 사용하는 루프로 BPSK 신호의 데이터 변조 영향(비트 전환)을 제거하려고 사용
GNSS 파일럿 신호가 없는 구형 신호(GPS L1 C/A 등)에서 데이터 전이에 의한 위상 반전을 견디기 위한 방법 중 하나
디지털 루프 시뮬레이션(Test & Verification)
GNSS 수신기의 디지털 신호처리와 추적 루프를 검증하기 위해서는 실제 하드웨어 구현 전, 소프트웨어 시뮬레이션이나 SDR(Software Defined Radio) 플랫폼에서 테스트를 수행한다.
시뮬레이션 환경
MATLAB/Simulink, Python 등에서 GPS/GNSS 신호생성기(신호 발생 모듈) + 추적 루프 알고리즘을 구현
다중경로, 도플러 변동, 열잡음, 위상 잡음 등을 모델링하여 루프 성능(루프 락(lock) 유지 여부, 오차 통계) 확인
SDR 기반 검증
USRP, BladeRF 등 SDR 하드웨어를 통해 실제 GNSS 안테나로부터 신호를 수신하고, PC나 임베디드 보드에서 실시간 또는 준실시간으로 DSP 및 추적 루프를 수행
HIL(Hardware In the Loop)
시뮬레이션 신호발생기(Spirent, R&S 등 GNSS 시뮬레이터)로부터 RF 신호를 만들어내고, 이를 수신기로 입력하여 결과를 비교
기타 최적화와 기법
NCO 분해기법(Numerically Controlled Oscillator decomposition): 반송파 NCO와 코드 NCO를 고속 DSP에서 효율적으로 계산하기 위한 분산 설계.
리샘플링(Resampling) 기법: 샘플링 속도와 코드 칩레이트 간의 비율이 정수가 아닐 경우, 폴리페이즈 필터(polyphase filter)나 CORDIC 기반 리샘플링으로 시간축 정렬 수행.
저전력 설계(Low-power DSP): 휴대형 단말, IoT 기기용 GNSS 모듈에서는 전력 소모가 매우 중요한 문제. 상관기 하드웨어의 클록 게이팅(clock gating) 등으로 불필요한 연산을 줄인다.
Last updated