AIDT 온디바이스 STEM 테라헤르츠 시간영역 분광(THz-TDS) 광전도 안테나 캐리어 수명 서보 제어기

LT-GaAs 광전도 안테나(PCA) 서브-피코초 광캐리어 재결합, 지연단 광경로 드리프트 보정, 10,000Hz C# 엔진

1. 개요

생체 분자의 저주파 집단 진동 모드 및 차세대 반도체 나노 박막의 전기적 특성을 비파괴 진단하는 테라헤르츠 시간영역 분광법(THz Time-Domain Spectroscopy, THz-TDS)은 펨토초 레이저 펄스와 저온 성장 갈륨비소(LT-GaAs) 광전도 안테나(Photoconductive Antenna, PCA)의 결합을 기반으로 합니다. 펨토초 레이저 펄스가 안테나 전극 갭에 조사되면 순식간에 전자-정공 쌍이 여기되고, 인가된 직류 바이어스 전계에 의해 가속되면서 피코초 폭의 극초단 테라헤르츠 전자기 펄스가 방사됩니다. 그러나 장시간 분광 측정 시 광학 지연단(Optical Delay Stage)의 기계적 진동, 펨토초 레이저의 강도 변동, 안테나 기판의 줄 열(Joule Heating)에 따른 광캐리어 수명(\(\tau_c\)) 열화는 분광 신호의 신호 대 잡음비(SNR)를 급격히 저하시킵니다. 본 고에서는 10,000Hz 주기로 시간영역 테라헤르츠 파형의 피크 오차를 추종하고 바이어스 전압 및 지연단 옵셋을 동적 제어하는 0-Alloc C# 서보 엔진을 구현합니다.

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

광전도 안테나에서 방사되는 원거리 테라헤르츠 전계 \(E_{thz}(t)\)와 과도 광전류(Transient Photocurrent) \(J_{pc}(t)\) 사이의 시간 미분 관계식은 다음과 같습니다:

\[ E_{thz}(t) \propto \frac{\partial J_{pc}(t)}{\partial t} = e \mu_e E_{bias} \frac{\partial n(t)}{\partial t} + e n(t) \mu_e \frac{\partial E_{loc}}{\partial t} \]

광캐리어 밀도 \(n(t)\)의 여기 및 포획-재결합 속도 방정식은 다음과 같습니다:

\[ \frac{d n(t)}{dt} = \frac{\alpha_{opt} I_{laser}(t)}{h \nu} - \frac{n(t)}{\tau_c(T)}, \quad \tau_c(T) = \tau_0 \left(1 + \beta_{trap} \Delta T\right) \]

복소 굴절률 \(\tilde{n}(\omega) = n(\omega) + i \kappa(\omega)\) 추출을 위한 푸리에 변환 스펙트럼 전달함수 \(H(\omega)\) 방정식은 다음과 같습니다:

\[ H(\omega) = \frac{\mathcal{F}\{E_{sample}(t)\}}{\mathcal{F}\{E_{ref}(t)\}} = \frac{4 \tilde{n}(\omega)}{(\tilde{n}(\omega) + 1)^2} \exp\left( - i \frac{(\tilde{n}(\omega) - 1)\omega d}{c} \right) \]

광학 지연단 잔여 지터(Residual Timing Jitter) 억제 조건 부등식은 다음과 같습니다:

\[ \Delta \tau_{jitter} = \frac{2 \Delta x_{stage}}{c} \le 1.0\text{ fs} \quad (\Delta x_{stage} \le 150\text{ nm}) \]

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

다음은 테라헤르츠 피크 신호 지터와 기판 온도 드리프트를 10,000Hz 주기로 상쇄하는 0-Alloc C# 엔진 구현체입니다:

ThzTdsPhotoconductiveServoEngine.cs
using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.Terahertz
{
    public readonly ref struct ThzSensorFrame
    {
        public readonly double DetectedPeakElectricFieldVPerCm;
        public readonly double TargetPeakElectricFieldVPerCm;
        public readonly double DelayStagePositionNm;
        public readonly double AntennaJouleTemperatureC;
        public readonly double LaserIntensityMilliWatt;

        public ThzSensorFrame(
            double detectedPeakElectricFieldVPerCm,
            double targetPeakElectricFieldVPerCm,
            double delayStagePositionNm,
            double antennaJouleTemperatureC,
            double laserIntensityMilliWatt)
        {
            DetectedPeakElectricFieldVPerCm = detectedPeakElectricFieldVPerCm;
            TargetPeakElectricFieldVPerCm = targetPeakElectricFieldVPerCm;
            DelayStagePositionNm = delayStagePositionNm;
            AntennaJouleTemperatureC = antennaJouleTemperatureC;
            LaserIntensityMilliWatt = laserIntensityMilliWatt;
        }
    }

    public ref struct ThzControlCommand
    {
        public double BiasVoltageOutputVolts;
        public double DelayStageOffsetCorrectionNm;
        public double DynamicSnrDb;
        public bool IsCarrierRecombinationOptimal;
    }

    public ref struct ThzTdsPhotoconductiveServoEngine
    {
        private readonly double _kpBias;
        private readonly double _kiBias;
        private readonly double _kpDelay;
        private readonly double _dt;
        private double _biasErrorIntegral;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public ThzTdsPhotoconductiveServoEngine(double kpBias, double kiBias, double kpDelay, double dt)
        {
            _kpBias = kpBias;
            _kiBias = kiBias;
            _kpDelay = kpDelay;
            _dt = dt;
            _biasErrorIntegral = 0.0;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public void ComputeAntennaServo(in ThzSensorFrame frame, out ThzControlCommand cmd)
        {
            cmd = default;
            double fieldErr = frame.TargetPeakElectricFieldVPerCm - frame.DetectedPeakElectricFieldVPerCm;
            _biasErrorIntegral += fieldErr * _dt;
            if (_biasErrorIntegral > 10.0) _biasErrorIntegral = 10.0;
            else if (_biasErrorIntegral < -10.0) _biasErrorIntegral = -10.0;

            // Bias voltage PID (nominal 30V, max 60V)
            double vBias = 30.0 + (_kpBias * fieldErr) + (_kiBias * _biasErrorIntegral);
            vBias = Math.Clamp(vBias, 5.0, 60.0);

            // Temperature derating: if antenna gets hot, back off bias
            if (frame.AntennaJouleTemperatureC > 60.0)
            {
                vBias *= Math.Max(0.5, 1.0 - (frame.AntennaJouleTemperatureC - 60.0) * 0.02);
            }

            // Delay stage correction
            double delayCorrNm = -_kpDelay * (frame.DelayStagePositionNm % 100.0);

            double signalPower = frame.DetectedPeakElectricFieldVPerCm * frame.DetectedPeakElectricFieldVPerCm;
            double snrDb = 10.0 * Math.Log10(Math.Max(1.0, signalPower / 0.01));

            cmd.BiasVoltageOutputVolts = vBias;
            cmd.DelayStageOffsetCorrectionNm = delayCorrNm;
            cmd.DynamicSnrDb = snrDb;
            cmd.IsCarrierRecombinationOptimal = Math.Abs(fieldErr) < 2.0 && frame.AntennaJouleTemperatureC < 55.0;
        }
    }
}

4. 교육 및 실무 적용 방안

  • 한국방송통신대학교 AI 교구: 초고속 광학, 반도체 광캐리어 수송 및 푸리에 분광학 실무 연수.
  • 차세대 6G 반도체 및 신소재 평가 연구소: THz 대역 유전율 및 전기전도도 비파괴 정밀 측정기 탑재.