유무인 편대 간 송수신 분리형 Bi-static SAR의 위상 일관성(Coherence) 사수
현대전의 유무인복합(MUM-T) 작전에서 고출력 레이더 송신기는 후방의 유인 지휘기가 담당하고, 무인 정찰기(UAV)들이 전방 저고도로 침투하여 표적 반사 신호만을 침묵 수신(Passive Receiver)하는 이중기지 합성개구레이다(Bi-static SAR)는 완벽한 전파 은밀성을 보장합니다. 그러나 송·수신기 간 분리된 독립 발진기(Local Oscillator)의 위상 드리프트($\Delta \phi_{LO}$)와 편대 간 비행 진동에 따른 펄스 도달 지터($\tau_{jitter}$)는 SAR 영상의 결맞음(Coherence)을 파괴하여 방위 해상도를 급격히 저하시킵니다. 본 논문에서는 직시 링크(Direct-path Synchronization Link) 신호를 .NET 9 SIMD(`Vector256
1. 서론: Bi-static SAR의 위상 왜곡과 포인트 확산 함수(PSF) 붕괴
Bi-static SAR의 총 왕복 거리 $R_{bi}(t)$는 송신기 거리 $R_T(t)$와 수신기 거리 $R_R(t)$의 합으로 표현되며, 수신 에코 신호의 위상 $\Phi_{rx}(t)$는 다음과 같습니다:
$$\Phi_{rx}(t) = -\frac{2\pi}{\lambda} \left[ R_T(t) + R_R(t) \right] + \Delta \phi_{LO}(t) + 2\pi f_0 \cdot \Delta \tau_{jitter}(t)$$발진기 위상 오차 $\Delta \phi_{LO}(t)$가 백색 주파수 잡음(White Frequency Noise) 및 랜덤 워크 위상 드리프트(Random Walk Phase Drift)를 가질 때, 아지무스(Azimuth) 방향 임펄스 응답(PSF)의 주엽 폭(Mainlobe Width)이 팽창하고 부엽비(PSLR)가 훼손됩니다:
$$\text{PSF}(t_a) = \int_{-T_a/2}^{T_a/2} \exp\left( j \left[ \pi K_a t_a^2 + \Delta \phi_{LO}(t_a) \right] \right) e^{-j 2\pi f_a t_a} dt_a$$2. 직접파 위상 락-인 및 능동 시간 지터 보정 수리 모델
수신기에 장착된 전용 동기화 채널(Direct-path Sync Channel)에서 추출된 기준 신호 $s_{dir}(t)$로부터 발진기 위상 편차를 추정하여 에코 신호의 결맞음을 능동 복원합니다:
$$\widehat{\Delta \phi}_{LO}(t) = \arg\left\{ s_{dir}(t) \cdot \exp\left( j \frac{2\pi}{\lambda} R_{baseline}(t) \right) \right\}$$ $$s_{comp}(t) = s_{rx}(t) \cdot \exp\left( -j \widehat{\Delta \phi}_{LO}(t) \right) \cdot \exp\left( -j 2\pi f_0 \Delta \tau_{jitter} \right)$$3. .NET 9 SIMD 기반 초저지연 Bi-static SAR 위상 서보 구현
다음 C# 코드는 8개 수신 서브채널의 복소 위상 데이터를 AVX-256 벡터 레지스터로 병렬 복원하여 나노초 단위의 위상 일관성을 유지합니다.
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.X86;
namespace ZeliDesk.Defense.Avionics
{
/// <summary>
/// MUM-T 이중기지 SAR(Bi-static SAR) 위상동기화 및 펄스 지터 보정 서보
/// GC 제로 할당 ref struct 및 AVX-256 SIMD 가속화
/// </summary>
public ref struct BistaticSarSyncServo
{
private readonly ReadOnlySpan<float> _measuredPhases; // 실측 수신 위상 Phi_rx (rad)
private readonly ReadOnlySpan<float> _directPathPhases; // 직접파 기준 위상 Phi_dir (rad)
private readonly ReadOnlySpan<float> _baselineDistances;// 편대 간 실시간 기준 거리 (m)
private readonly Span<float> _compensatedPhases; // 보정된 일관 위상 (rad)
private readonly Span<float> _phaseCorrections; // 능동 피드백 위상 보정값 (rad)
private readonly float _waveNumber; // 파수 k = 2*pi / lambda
private readonly float _syncGain; // 동기화 루프 게인
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public BistaticSarSyncServo(
ReadOnlySpan<float> measuredPhases,
ReadOnlySpan<float> directPathPhases,
ReadOnlySpan<float> baselineDistances,
Span<float> compensatedPhases,
Span<float> phaseCorrections,
float waveLength = 0.03f, // X-band (10 GHz)
float syncGain = 0.95f)
{
_measuredPhases = measuredPhases;
_directPathPhases = directPathPhases;
_baselineDistances = baselineDistances;
_compensatedPhases = compensatedPhases;
_phaseCorrections = phaseCorrections;
_waveNumber = (2.0f * MathF.PI) / waveLength;
_syncGain = syncGain;
}
/// <summary>
/// 직접파 위상과 기준 거리 기하학을 바탕으로 SIMD 8개 병렬 채널 위상 동기화
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveOptimization)]
public void ExecutePhaseSyncLoop()
{
int length = _measuredPhases.Length;
int simdLength = length - (length % 8);
Vector256<float> vK = Vector256.Create(_waveNumber);
Vector256<float> vGain = Vector256.Create(_syncGain);
int i = 0;
if (Avx2.IsSupported)
{
for (; i < simdLength; i += 8)
{
Vector256<float> vRxPhase = Vector256.Create(MemoryMarshal.Cast<float, Vector256<float>>(_measuredPhases.Slice(i, 8))[0]);
Vector256<float> vDirPhase = Vector256.Create(MemoryMarshal.Cast<float, Vector256<float>>(_directPathPhases.Slice(i, 8))[0]);
Vector256<float> vDist = Vector256.Create(MemoryMarshal.Cast<float, Vector256<float>>(_baselineDistances.Slice(i, 8))[0]);
// 거리 전파 위상 지연: Phi_geo = k * dist
Vector256<float> vGeoPhase = Avx.Multiply(vK, vDist);
// 발진기 위상 오차 추정: DeltaPhi_LO = DirPhase - GeoPhase
Vector256<float> vDeltaLo = Avx.Subtract(vDirPhase, vGeoPhase);
// 위상 보정값: PhaseCorr = Gain * DeltaPhi_LO
Vector256<float> vCorr = Avx.Multiply(vGain, vDeltaLo);
// 보정된 수신 위상: CompPhase = RxPhase - PhaseCorr
Vector256<float> vComp = Avx.Subtract(vRxPhase, vCorr);
vCorr.CopyTo(_phaseCorrections.Slice(i, 8));
vComp.CopyTo(_compensatedPhases.Slice(i, 8));
}
}
for (; i < length; i++)
{
float geoPhase = _waveNumber * _baselineDistances[i];
float deltaLo = _directPathPhases[i] - geoPhase;
float corr = _syncGain * deltaLo;
_phaseCorrections[i] = corr;
_compensatedPhases[i] = _measuredPhases[i] - corr;
}
}
}
}
4. 교육 및 국방 실무 시사점
- 국방 항공전자 및 유무인복합 MUM-T 실무진: 유인 송신기와 무인 수신기간 거리 변화 및 비간섭 국부발진기 드리프트를 실시간 제어하여 은밀 고해상도 레이더 영상을 획득하는 C# 알고리즘 검증.
- 방통대 전자·정보 융합교육 교구: 통신 및 전자기학에서 다루는 위상동기루프(PLL)와 파동의 결맞음(Coherence) 현상을 시뮬레이션할 수 있는 교육 프레임워크 제공.