AIDT 온디바이스 STEM 방사광 X선 극저온 테라헤르츠(0.1~10THz) 차주파수 생성(DFG) 듀얼 파장 서보 제어기

비선형 유기 DAST/BNA 결정 듀얼 파장 레이저 차주파수 생성 THz 주파수 빗 위상 고정 및 볼로미터 검출 서보, 10,000Hz C# 엔진

1. 개요

전파와 광파의 경계 영역인 테라헤르츠(Terahertz, 0.1~10 THz) 대역은 생체 고분자의 저주파 집단 진동 모드(Collective Vibration), 초전도체의 에너지 갭(Energy Gap), 그리고 비파괴 X선 대체 투과 영상화에 독보적인 전자기파 창을 제공합니다. 고출력 단일 주파수 연속파(CW) 테라헤르츠 파를 효율적으로 발생시키기 위해 비선형 광학 유기 결정(DAST, BNA)에 두 개의 근접한 근적외선 레이저 광(\(\lambda_1, \lambda_2 \approx 1550\,\text{nm}\))을 동시 입사시켜 차주파수 생성(Difference-Frequency Generation, DFG)을 유도합니다. 두 레이저 간의 비트 주파수(\(\Delta\nu = |\nu_1 - \nu_2| = f_{THz}\))가 테라헤르츠 주파수를 결정하므로, 두 레이저의 상대 주파수 차이를 헤르츠(Hz) 수준으로 정밀하게 고정하지 않으면 THz 방출 주파수가 수백 MHz 단위로 급격히 요동칩니다. 본 고에서는 4K 극저온 볼로미터(Bolometer) 및 광학 헤테로다인 비트 신호를 10,000Hz 주기로 샘플링하여 DFB 레이저 다이오드 전류와 PZT 미러를 폐루프 제어하는 0-Alloc C# 엔진을 구현합니다.

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

차주파수 생성(DFG) 위상정합 조건 및 테라헤르츠 복사 출력 \(P_{THz}\) 수식은 다음과 같습니다:

\\[ \omega_{THz} = \omega_1 - \omega_2, \quad \Delta k = k_1 - k_2 - k_{THz} = \frac{2\pi}{c} \left( n_1 \omega_1 - n_2 \omega_2 - n_{THz} \omega_{THz} \right) = 0 \\]
\\[ P_{THz} = \frac{2 \omega_{THz}^2 d_{eff}^2 L^2}{\epsilon_0 c^3 n_1 n_2 n_{THz} A_{eff}} P_1 P_2 \cdot \text{sinc}^2\left( \frac{\Delta k L}{2} \right) \\]

두 레이저의 광학 헤테로다인 비트 주파수 \(f_{beat}(t)\) 및 위상 오차 수식은 다음과 같습니다:

\\[ e_{freq}[k] = f_{target,THz} - |f_1[k] - f_2[k]|, \quad \theta_{err}[k] = \arg\left( V_{beat}[k] \right) - 2\pi f_{ref} k \Delta t \\]

10,000Hz 주기 DFB 슬레이브 레이저 구동 전류 \(I_{ld}[k]\) 고속 주파수 서보 제어 법칙은 다음과 같습니다:

\\[ I_{ld}[k] = I_{ld}[k-1] + \frac{1}{K_{current}} \left[ K_p e_{freq}[k] + K_i \sum e_{freq} \Delta t + K_d \frac{e_{freq}[k] - e_{freq}[k-1]}{\Delta t} \right] \\]

3. C# 고성능 온디바이스 서보 엔진 구현

10,000Hz 주기로 두 레이저 파장을 록킹하여 안정적인 THz 파를 생성하는 0-Alloc C# 엔진입니다.

using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.TerahertzDfg
{
    /// <summary>
    /// THz 차주파수 간섭 텔레메트리 상태
    /// </summary>
    public readonly ref struct TerahertzTelemetryState
    {
        public readonly double MeasuredBeatFrequencyThz; // 측정된 헤테로다인 비트 주파수 [THz]
        public readonly double TargetThzFrequency;       // 목표 테라헤르츠 주파수 [THz]
        public readonly double BolometerDetectedPowerUw; // 극저온 볼로미터 수신 THz 파워 [uW]
        public readonly double DastCrystalTemperatureK;  // DAST 유기 결정 온도 [K]

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public TerahertzTelemetryState(double beatThz, double tgtThz, double pwr, double temp)
        {
            MeasuredBeatFrequencyThz = beatThz;
            TargetThzFrequency = tgtThz;
            BolometerDetectedPowerUw = pwr;
            DastCrystalTemperatureK = temp;
        }
    }

    /// <summary>
    /// THz 듀얼 레이저 전류 및 온도 서보 명령
    /// </summary>
    public readonly ref struct TerahertzServoCommand
    {
        public readonly double SlaveLaserCurrentMilliAmps; // 슬레이브 DFB 레이저 전류 [mA]
        public readonly double CrystalTecVoltageVolts;      // 결정 온도 제어 TEC 전압 [V]
        public readonly double FrequencyOffsetMegahertz;    // THz 주파수 잔여 편차 [MHz]
        public readonly bool ThzPhaseLocked;               // THz 주파수 잠금 여부

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public TerahertzServoCommand(double current, double tecV, double offsetMhz, bool locked)
        {
            SlaveLaserCurrentMilliAmps = current;
            CrystalTecVoltageVolts = tecV;
            FrequencyOffsetMegahertz = offsetMhz;
            ThzPhaseLocked = locked;
        }
    }

    /// <summary>
    /// 10,000Hz 주기 테라헤르츠 DFG 듀얼 파장 서보 엔진
    /// </summary>
    public ref struct TerahertzDfgDualLaserServoEngine
    {
        private const double CurrentTuningGainMhzPerMa = 450.0; // 450 MHz/mA
        private double _accumulatedCurrentMa;
        private double _prevFreqErrorMhz;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public TerahertzServoCommand UpdateServo(
            in TerahertzTelemetryState state, double dtSeconds)
        {
            // 1. 주파수 오차 계산 [MHz 단위]
            double freqErrorMhz = (state.TargetThzFrequency - state.MeasuredBeatFrequencyThz) * 1e6;
            double errorDiff = (dtSeconds > 1e-9) ? (freqErrorMhz - _prevFreqErrorMhz) / dtSeconds : 0.0;
            _prevFreqErrorMhz = freqErrorMhz;

            // PI 폐루프 전류 제어
            _accumulatedCurrentMa += (0.65 * freqErrorMhz / CurrentTuningGainMhzPerMa) * dtSeconds;
            _accumulatedCurrentMa = Math.Clamp(_accumulatedCurrentMa, -25.0, 25.0);

            double commandCurrent = 120.0 + _accumulatedCurrentMa + (0.12 * freqErrorMhz / CurrentTuningGainMhzPerMa) + 0.001 * errorDiff;
            commandCurrent = Math.Clamp(commandCurrent, 50.0, 200.0);

            // 2. DAST 결정 위상정합 TEC 전압 (출력 파워 극대화)
            double commandTecV = 2.4 + 0.02 * (state.TargetThzFrequency - 2.5);
            commandTecV = Math.Clamp(commandTecV, 0.5, 5.0);

            // 잠금 상태 판정: 주파수 오차 1.5MHz 이내 & 볼로미터 파워 > 5uW
            bool isLocked = (Math.Abs(freqErrorMhz) < 1.5) && (state.BolometerDetectedPowerUw > 5.0);

            return new TerahertzServoCommand(commandCurrent, commandTecV, freqErrorMhz, isLocked);
        }
    }
}

4. 교육 및 실무 응용 가이드

본 고의 테라헤르츠 차주파수 서보 제어기는 다음 연구에 적용됩니다:

  • 방통대 및 전자기파 직무연수: 광자-포논 결합 폴라리톤(Polariton) 분산 및 광학 차주파수 생성(DFG) 원리 실습.
  • 생체 고분자 저주파 분광학: DNA/RNA 염기쌍 분자간 수소결합 진동 지문 스펙트럼 측정.
  • 차세대 6G 무선통신: 0.3~1.0 THz 초고속 반송파 발생용 초안정 국부 발진기(LO) 소스.

5. 결론

유기 결정 DAST의 비선형 위상정합 특성을 수치화하고, 10,000Hz 온디바이스 0-Alloc C# 엔진으로 듀얼 레이저 헤테로다인 비트를 실시간 고정하여 0.1~10THz 전 대역에서 초안정 테라헤르츠 파를 방출하는 서보 시스템을 완성하였습니다.