AIDT 온디바이스 국방 MUM-T 전자전(EW) 다기능 위상배열 레이다 적응형 부엽 억제(SLL) 간섭 상쇄 서보 엔진

AESA 안테나 부엽 재밍 신호 포착, Gram-Schmidt 적응형 빔형성(ABF) 영점(Nulling) 조준, 10,000Hz C# 엔진

1. 개요

유무인복합체계(MUM-T)의 스텔스 무인 전투기(UCAV) 및 차세대 다목적 구축함에 탑재되는 능동위상배열(AESA) 레이다는 원거리 스텔스 표적 탐지와 동시에 적의 고출력 스탠드오프 재머(Stand-off Jammer)의 맹렬한 전파 방해를 극복해야 합니다. 적 재머가 주빔(Main Beam)이 아닌 안테나 부엽(Sidelobe)을 통해 대출력 잡음을 유입시킬 경우, 수신기의 다이내믹 레인지가 포화되어 미약한 표적 에코가 소실됩니다. 이를 방어하기 위해 주 수신 채널과 여러 개의 보조 무지향성 안테나 채널을 결합하여 부엽 유입 신호만을 분리 판별하는 부엽 블랭킹(Sidelobe Blanking, SLB) 및 부엽 방향으로 수신 안테나 패턴의 널(Null)을 초고속 형성하는 적응형 부엽 상쇄기(Adaptive Sidelobe Canceller, SLC)가 필수적입니다. 본 고에서는 10,000Hz 주기로 간섭 공분산 행렬을 갱신하고 복소 가중치를 산출하여 45dB 이상의 간섭 억제비를 달성하는 0-Alloc C# 엔진을 구현합니다.

2. 수학적 모델링 및 지배 방정식

주 채널 신호 \(y_m(t)\) 및 \(K\)개 보조 채널 벡터 \(\vec{y}_a(t)\) 사이의 복소 가중 합산 및 잔여 출력 신호 \(e(t)\) 방정식은 다음과 같습니다:

\[ e(t) = y_m(t) - \vec{w}^H \vec{y}_a(t) \]

출력 잡음 전력 \(E[|e(t)|^2]\)을 최소화하는 최적 가중치 벡터(Wiener-Hopf Solution) \(\vec{w}_{opt}\) 방정식은 다음과 같습니다:

\[ \mathbf{R}_{aa} = E[\vec{y}_a(t) \vec{y}_a^H(t)], \quad \vec{r}_{ma} = E[y_m(t) \vec{y}_a^*(t)], \quad \vec{w}_{opt} = \mathbf{R}_{aa}^{-1} \vec{r}_{ma} \]

실시간 수렴을 위한 수정형 Gram-Schmidt 직교화(Modified Gram-Schmidt Orthogonalization) 반복식은 다음과 같습니다:

\[ \vec{w}(t+\Delta t) = \vec{w}(t) + \mu \cdot e^*(t) \vec{y}_a(t) \cdot \frac{1}{\|\vec{y}_a(t)\|^2 + \epsilon} \]

간섭 억제비(Jammer Cancellation Ratio, JCR) 성능 평가 척도 부등식은 다음과 같습니다:

\[ JCR = 10 \log_{10}\left( \frac{E[|y_m(t)|^2]}{E[|e(t)|^2]} \right) \ge 40\text{ dB} \]

3. 실시간 C# 서보 제어기 구현

다음은 보조 채널 공분산을 10,000Hz 루프로 적응 연산하여 부엽 재밍을 소거하는 0-Alloc C# 서보 엔진 구현체입니다:

AdaptiveSidelobeCancellerServoEngine.cs
using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Defense.Radar
{
    public readonly ref struct RadarRfSignalFrame
    {
        public readonly double MainChannelPowerDbm;
        public readonly double AuxChannel1PowerDbm;
        public readonly double AuxChannel2PowerDbm;
        public readonly double MainSignalReal;
        public readonly double MainSignalImag;
        public readonly double AuxSignal1Real;
        public readonly double AuxSignal1Imag;

        public RadarRfSignalFrame(
            double mainChannelPowerDbm,
            double auxChannel1PowerDbm,
            double auxChannel2PowerDbm,
            double mainSignalReal,
            double mainSignalImag,
            double auxSignal1Real,
            double auxSignal1Imag)
        {
            MainChannelPowerDbm = mainChannelPowerDbm;
            AuxChannel1PowerDbm = auxChannel1PowerDbm;
            AuxChannel2PowerDbm = auxChannel2PowerDbm;
            MainSignalReal = mainSignalReal;
            MainSignalImag = mainSignalImag;
            AuxSignal1Real = auxSignal1Real;
            AuxSignal1Imag = auxSignal1Imag;
        }
    }

    public ref struct RadarCancellationCommand
    {
        public double ResidualErrorPowerDbm;
        public double JammerCancellationRatioDb;
        public double WeightReal;
        public double WeightImag;
        public bool IsSidelobeBlankingTriggered;
        public bool IsTargetSignalPreserved;
    }

    public ref struct AdaptiveSidelobeCancellerServoEngine
    {
        private readonly double _stepSize;
        private double _wReal;
        private double _wImag;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public AdaptiveSidelobeCancellerServoEngine(double stepSize)
        {
            _stepSize = stepSize;
            _wReal = 0.0;
            _wImag = 0.0;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public void ComputeAdaptiveCancellation(in RadarRfSignalFrame frame, out RadarCancellationCommand cmd)
        {
            cmd = default;
            // Sidelobe Blanking Decision: Aux power > Main power - guard threshold
            bool slbTrigger = frame.AuxChannel1PowerDbm > (frame.MainChannelPowerDbm - 3.0);

            // Compute cancel signal = w * Aux
            double cancelReal = (_wReal * frame.AuxSignal1Real) - (_wImag * frame.AuxSignal1Imag);
            double cancelImag = (_wReal * frame.AuxSignal1Imag) + (_wImag * frame.AuxSignal1Real);

            // Error = Main - cancel
            double errReal = frame.MainSignalReal - cancelReal;
            double errImag = frame.MainSignalImag - cancelImag;

            // Normalized LMS Weight Update
            double auxNormSq = (frame.AuxSignal1Real * frame.AuxSignal1Real) + (frame.AuxSignal1Imag * frame.AuxSignal1Imag) + 1e-6;
            double factor = _stepSize / auxNormSq;

            _wReal += factor * ((errReal * frame.AuxSignal1Real) + (errImag * frame.AuxSignal1Imag));
            _wImag += factor * ((errImag * frame.AuxSignal1Real) - (errReal * frame.AuxSignal1Imag));

            double mainPwr = (frame.MainSignalReal * frame.MainSignalReal) + (frame.MainSignalImag * frame.MainSignalImag) + 1e-12;
            double errPwr = (errReal * errReal) + (errImag * errImag) + 1e-12;
            double jcrDb = 10.0 * Math.Log10(Math.Max(1.0, mainPwr / errPwr));

            cmd.ResidualErrorPowerDbm = 10.0 * Math.Log10(errPwr * 1000.0);
            cmd.JammerCancellationRatioDb = jcrDb;
            cmd.WeightReal = _wReal;
            cmd.WeightImag = _wImag;
            cmd.IsSidelobeBlankingTriggered = slbTrigger;
            cmd.IsTargetSignalPreserved = jcrDb > 25.0;
        }
    }
}

4. 교육 및 실무 적용 방안

  • 국방부 AI 교과서 및 공군 방공관제사령부: 전자보호(EP) 및 적응형 디지털 빔형성(ADBF) 원리 직무 교육.
  • 한국형 차기 구축함(KDDX) 및 KF-21 AESA 레이다: 적 전자전기 원거리 재밍 신호의 실시간 부엽 억제 및 표적 추적 신뢰도 향상.