이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.
5G NR 파형 수집 및 분석
이 예제는 5G 파형 생성기 (5G Toolbox) 앱을 사용하여 5G NR 테스트 모델(NR-TM) 파형을 생성하고, 생성된 파형을 Instrument Control Toolbox™ 소프트웨어를 통해 Keysight™ 벡터 신호 생성기로 다운로드하여 무선 전송을 수행하는 방법을 보여줍니다. 그런 다음 Keysight 신호 분석기를 사용하여 무선으로 전송된 신호를 포착하고, MATLAB®에서 해당 신호를 분석합니다.
소개
이 예제는 5G 파형 생성기 앱을 사용하여 5G NR-TM 파형을 생성하고, 해당 파형을 다운로드하여 Keysight 벡터 신호 생성기로 전송한 다음, Keysight 신호 분석기를 통해 파형을 수신하여 MATLAB에서 파형 분석을 수행합니다. 이 다이어그램은 일반적인 워크플로를 보여줍니다.

요구 사항
이 예제를 실행하려면 다음 계측기가 필요합니다.
Keysight E4438C ESG 벡터 신호 생성기
Keysight N9030A PXA 신호 분석기
5G 파형 생성기 앱을 사용하여 베이스밴드 파형 생성하기
MATLAB에서 앱 탭을 열고 5G 파형 생성기 앱을 클릭합니다.
파형 유형 섹션에서 NR 테스트 모델을 클릭합니다. 앱의 가장 왼쪽 패널에서 선택한 파형의 파라미터를 설정할 수 있습니다. 이 예시의 경우 다음과 같이 설정합니다.
주파수 범위를
FR1 (410 MHz - 7.125 GHz)로 설정테스트 모델을
NR-FR1-TM3.1 (Full band, uniform 64 QAM)으로 설정채널 대역폭(MHz)을
10로 설정부반송파 간격(kHz)을
30로 설정듀플렉스 모드를
FDD로 설정서브프레임을
10으로 설정
앱 툴스트립에서 생성을 클릭합니다.
% Set the NR-TM parameters for the receiver nrtm = "NR-FR1-TM3.1"; % Reference channel bw = "10MHz"; % Channel bandwidth scs = "30kHz"; % Subcarrier spacing dm = "FDD"; % Duplexing mode
이 그림은 기저대역에서 관측되는 10 MHz 5G NR 파형을 보여줍니다.

무선 신호 송신
지원되는 통신 인터페이스 중 하나를 통해 생성된 신호를 RF 신호 생성기로 전송합니다(Instrument Control Toolbox 필요). 이 앱은 TCP/IP 인터페이스를 통해 연결된 신호 생성기를 자동으로 찾아냅니다. 앱의 송신기 탭에서 드라이버 목록에서 Agilent/Keysight Signal Generator SCPI를 선택하십시오. 중심 주파수(Hz) 파라미터를 3.4e9로, 출력 전력(dBm) 파라미터를 -15로 설정하십시오. 이 앱은 생성된 파형에서 베이스밴드 샘플 레이트를 자동으로 추출합니다. 송신을 시작하려면 툴스트립에서 송신을 클릭하십시오.

TCP/IP를 통해 신호 분석기에서 IQ 데이터 읽기
분석을 위해 동상 및 직교(IQ) 데이터를 MATLAB으로 읽어 들이려면, Instrument Control Toolbox 소프트웨어를 사용하여 Keysight N9030A 신호 분석기를 설정하십시오.
측정하려는 신호에 따라 계측기 파라미터를 정의하십시오.
% Set parameters for the spectrum analyzer centerFrequency = 3.4e9; sampleRate = 15.36e6; measurementTime = 20e-3; mechanicalAttenuation = 0; %dB startFrequency = 3.39e9; stopFrequency = 3.41e9; resolutionBandwidth = 220e3; videoBandwidth = 220000;
스펙트럼 분석기에 연결하기 전에 다음 단계를 수행하십시오.
Keysight N9030A 신호 분석기의 리소스 ID를 찾으십시오.
VISA(가상 계측기 소프트웨어 아키텍처) 인터페이스를 사용하여 계측기에 연결하십시오.
계측기에서 반환되는 데이터를 수용할 수 있도록 입력 버퍼 크기를 조정하십시오.
측정 및 데이터 전송에 충분한 시간이 확보되도록 타임아웃을 설정하십시오.
foundVISA = visadevlist; resourceID = foundVISA(foundVISA.Model == "N9030A",:).ResourceName; resourceID = resourceID(contains(resourceID,"N9030A")); % Extract resourceID which contains "N9030A" sigAnalyzerObj = visadev(resourceID); sigAnalyzerObj.ByteOrder = "big-endian"; sigAnalyzerObj.Timeout = 20;
프로그래밍 가능한 계측기에 대한 적절한 표준 명령어(SCPI)를 사용하여 계측기를 알려진 상태로 초기화하십시오. 정확한 계측기가 연결되었는지 확인하기 위해 계측기 식별 정보를 쿼리하십시오.
writeline(sigAnalyzerObj,"*RST"); instrumentInfo = writeread(sigAnalyzerObj,"*IDN?"); fprintf("Instrument identification information: %s",instrumentInfo);
Instrument identification information: Agilent Technologies,N9030A,US00071181,A.14.16
X-시리즈 신호 및 스펙트럼 분석기는 스펙트럼 측정뿐만 아니라 IQ 측정도 수행합니다. 이 예제에서는 시간 영역 IQ 데이터를 수집하고, MATLAB를 사용하여 데이터를 시각화한 다음, 수집된 데이터에 대해 신호 분석을 수행합니다. SCPI 명령어는 계측기를 설정하고, 측정이 완료된 후의 데이터 전송 형식을 정의합니다.
% Set up signal analyzer mode to basic IQ mode writeline(sigAnalyzerObj,":INSTrument:SELect BASIC"); % Set the center frequency writeline(sigAnalyzerObj,strcat(":SENSe:FREQuency:CENTer ",num2str(centerFrequency))); % Set the capture sample rate writeline(sigAnalyzerObj,strcat(":SENSe:WAVeform:SRATe ",num2str(sampleRate))); % Turn off averaging writeline(sigAnalyzerObj,":SENSe:WAVeform:AVER OFF"); % Set the spectrum analyzer to take one single measurement after the trigger line goes high writeline(sigAnalyzerObj,":INIT:CONT OFF"); % Set the trigger to external source 1 with positive slope triggering writeline(sigAnalyzerObj,":TRIGger:WAVeform:SOURce IMMediate"); writeline(sigAnalyzerObj,":TRIGger:LINE:SLOPe POSitive"); % Set the time for which measurement needs to be made writeline(sigAnalyzerObj,strcat(":WAVeform:SWE:TIME ",num2str(measurementTime))); % Turn off electrical attenuation writeline(sigAnalyzerObj,":SENSe:POWer:RF:EATTenuation:STATe OFF"); % Set the mechanical attenuation level writeline(sigAnalyzerObj,strcat(":SENSe:POWer:RF:ATTenuation ",num2str(mechanicalAttenuation))); % Turn IQ signal ranging to auto writeline(sigAnalyzerObj,":SENSe:VOLTage:IQ:RANGe:AUTO ON"); % Set the endianness of returned data writeline(sigAnalyzerObj,":FORMat:BORDer NORMal"); % Set the format of the returned data writeline(sigAnalyzerObj,":FORMat:DATA REAL,64");
측정을 시작하려면 계측기를 작동하십시오. 측정 작업이 완료될 때까지 기다린 다음, 파형을 읽어 들이십시오. 데이터를 처리하기 전에, 계측기에서 수신된 인터리빙된 데이터에서 I 성분과 Q 성분을 분리하고, MATLAB에 복소수 벡터를 생성하십시오.
% Trigger the instrument and initiate measurement writeline(sigAnalyzerObj,"*TRG"); writeline(sigAnalyzerObj,":INITiate:WAVeform"); % Wait until measure operation is complete measureComplete = writeread(sigAnalyzerObj,"*OPC?"); % Read the IQ data writeline(sigAnalyzerObj,":READ:WAV0?"); data = readbinblock(sigAnalyzerObj,"double"); % Separate the data and build the complex IQ vector inphase = data(1:2:end); quadrature = data(2:2:end); rxWaveform = inphase+1i*quadrature;
가장 최근에 수집된 데이터에 대한 정보를 가져와 표시합니다.
writeline(sigAnalyzerObj,":FETCH:WAV1?"); signalSpec = readbinblock(sigAnalyzerObj,"double"); % Display the measurement information captureSampleRate = 1/signalSpec(1); fprintf("Sample Rate (Hz) = %s",num2str(captureSampleRate));
Sample Rate (Hz) = 15360000
fprintf("Number of points read = %s",num2str(signalSpec(4)));Number of points read = 307201
fprintf("Max value of signal (dBm) = %s",num2str(signalSpec(6)));Max value of signal (dBm) = -29.4588
fprintf("Min value of signal (dBm) = %s",num2str(signalSpec(7)));Min value of signal (dBm) = -91.9621
획득한 파형의 주파수 응답을 플로팅하여 수신 신호의 대역폭을 확인하십시오.
% Ensure rxWaveform is a column vector if ~iscolumn(rxWaveform) rxWaveform = rxWaveform.'; end % Plot the power spectral density (PSD) of the acquired signal spectrumPlotRx = spectrumAnalyzer; spectrumPlotRx.SampleRate = captureSampleRate; spectrumPlotRx.SpectrumType = "Power density"; spectrumPlotRx.YLimits = [-135 -85]; spectrumPlotRx.YLabel = "PSD"; spectrumPlotRx.Title = "Received Signal Spectrum: 10 MHz 5G NR-TM Waveform"; spectrumPlotRx(rxWaveform);

계측기를 스펙트럼 분석기 모드로 전환하고 MATLAB에서 생성된 스펙트럼 뷰를 신호 분석기의 뷰와 비교합니다. 추가 SCPI 명령을 사용하여 계측기 측정 및 디스플레이 설정을 구성합니다.
% Switch back to the spectrum analyzer view writeline(sigAnalyzerObj,":INSTrument:SELect SA"); % Set the mechanical attenuation level writeline(sigAnalyzerObj,strcat(":SENSe:POWer:RF:ATTenuation ",num2str(mechanicalAttenuation))); % Set the center frequency, RBW, and VBW writeline(sigAnalyzerObj,strcat(":SENSe:FREQuency:CENTer ",num2str(centerFrequency))); writeline(sigAnalyzerObj,strcat(":SENSe:FREQuency:STARt ",num2str(startFrequency))); writeline(sigAnalyzerObj,strcat(":SENSe:FREQuency:STOP ",num2str(stopFrequency))); writeline(sigAnalyzerObj,strcat(":SENSe:BANDwidth:RESolution ",num2str(resolutionBandwidth))); writeline(sigAnalyzerObj,strcat(":SENSe:BANDwidth:VIDeo ",num2str(videoBandwidth))); % Enable continuous measurement on the spectrum analyzer writeline(sigAnalyzerObj,":INIT:CONT ON"); % Begin receiving the over-the-air signal writeline(sigAnalyzerObj,"*TRG");
계측기를 정리하려면 계측기 연결을 지웁니다.
clear sigAnalyzerObj;5G NR-TM 파형 전송을 중지하려면 앱 툴스트립의 계측기 섹션에서 Stop Transmission을 클릭하십시오.
수신된 5G 파형 측정 수행
hNRReferenceWaveformGenerator 헬퍼 파일을 사용하여 특정 TM에 대한 nrDLCarrierConfig (5G Toolbox) 객체를 생성하고 추출합니다.
tmwavegen = hNRReferenceWaveformGenerator(nrtm,bw,scs,dm); cfgDL = tmwavegen.Config;
EVM 측정값
hNRDownlinkEVM 함수를 사용하여 파형을 분석하십시오. 이 함수는 다음 단계를 수행합니다.
주파수 편차를 예측하고 보정합니다
I/Q 불균형을 추정하고 보정합니다
FDD(주파수 분할 이중화)의 경우 DM-RS를 1개 프레임 단위로 동기화하며 TDD(시분할 이중화)의 경우 2개 프레임 단위로 동기화합니다
수신된 파형을 복조합니다
DC 부반송파 성분을 제거한다
채널을 추정합니다
기호를 균등하게 배열합니다
일반적인 위상 오차(CPE)를 추정하고 보정합니다
물리적 하향 링크 공유 채널(PDSCH)의 EVM을 계산합니다
물리 하향 링크 제어 채널(PDCCH)의 EVM을 계산합니다
hNRDownlinkEVM 함수에 대한 자세한 내용은 EVM Measurement of 5G NR Downlink Waveforms with RF Impairments (5G Toolbox) 예제를 참조하십시오.
hNRDownlinkEVM 함수의 구성 설정을 정의하십시오.
cfg = struct(); cfg.PlotEVM = true; % Plot EVM statistics cfg.DisplayEVM = true; % Print EVM statistics cfg.Label = nrtm; % Set to TM name of captured waveform cfg.SampleRate = captureSampleRate; % Use sample rate during capture cfg.IQImbalance = true; cfg.CorrectCoarseFO = true; cfg.CorrectFineFO = true; cfg.ExcludeDC = true; [evmInfo,eqSym,refSym] = hNRDownlinkEVM(cfgDL,rxWaveform,cfg);
EVM stats for BWP idx : 1 PDSCH RMS EVM, Peak EVM, slot 0: 2.666 9.007% PDSCH RMS EVM, Peak EVM, slot 1: 2.653 8.812% PDSCH RMS EVM, Peak EVM, slot 2: 2.615 7.824% PDSCH RMS EVM, Peak EVM, slot 3: 2.661 8.099% PDSCH RMS EVM, Peak EVM, slot 4: 2.703 7.532% PDSCH RMS EVM, Peak EVM, slot 5: 2.715 8.699% PDSCH RMS EVM, Peak EVM, slot 6: 2.741 8.065% PDSCH RMS EVM, Peak EVM, slot 7: 2.677 8.297% PDSCH RMS EVM, Peak EVM, slot 8: 2.667 8.566% PDSCH RMS EVM, Peak EVM, slot 9: 2.672 9.212% PDSCH RMS EVM, Peak EVM, slot 10: 2.689 8.082% PDSCH RMS EVM, Peak EVM, slot 11: 2.711 9.935% PDSCH RMS EVM, Peak EVM, slot 12: 2.606 7.931% PDSCH RMS EVM, Peak EVM, slot 13: 2.641 7.583% PDSCH RMS EVM, Peak EVM, slot 14: 2.810 11.276% PDSCH RMS EVM, Peak EVM, slot 15: 2.710 8.925% PDSCH RMS EVM, Peak EVM, slot 16: 2.652 7.819% PDSCH RMS EVM, Peak EVM, slot 17: 2.615 9.181% PDSCH RMS EVM, Peak EVM, slot 18: 2.617 7.642% PDSCH RMS EVM, Peak EVM, slot 19: 2.675 7.504% PDSCH RMS EVM, Peak EVM, slot 20: 2.672 8.327% PDSCH RMS EVM, Peak EVM, slot 21: 2.550 7.932% PDSCH RMS EVM, Peak EVM, slot 22: 2.663 10.029% PDSCH RMS EVM, Peak EVM, slot 23: 2.710 9.863% PDSCH RMS EVM, Peak EVM, slot 24: 2.652 7.724% PDCCH RMS EVM, Peak EVM, slot 0: 4.091 7.352% PDCCH RMS EVM, Peak EVM, slot 1: 3.288 8.030% PDCCH RMS EVM, Peak EVM, slot 2: 3.315 5.373% PDCCH RMS EVM, Peak EVM, slot 3: 3.548 6.459% PDCCH RMS EVM, Peak EVM, slot 4: 3.178 7.353% PDCCH RMS EVM, Peak EVM, slot 5: 3.404 8.247% PDCCH RMS EVM, Peak EVM, slot 6: 2.877 5.912% PDCCH RMS EVM, Peak EVM, slot 7: 3.171 6.461% PDCCH RMS EVM, Peak EVM, slot 8: 3.578 8.686% PDCCH RMS EVM, Peak EVM, slot 9: 3.477 6.330% PDCCH RMS EVM, Peak EVM, slot 10: 3.628 7.232% PDCCH RMS EVM, Peak EVM, slot 11: 3.410 8.697% PDCCH RMS EVM, Peak EVM, slot 12: 3.333 6.797% PDCCH RMS EVM, Peak EVM, slot 13: 3.160 6.639% PDCCH RMS EVM, Peak EVM, slot 14: 3.157 6.172% PDCCH RMS EVM, Peak EVM, slot 15: 3.619 8.186% PDCCH RMS EVM, Peak EVM, slot 16: 2.911 5.377% PDCCH RMS EVM, Peak EVM, slot 17: 3.136 9.346% PDCCH RMS EVM, Peak EVM, slot 18: 3.348 9.101% PDCCH RMS EVM, Peak EVM, slot 19: 3.425 6.827% PDCCH RMS EVM, Peak EVM, slot 20: 3.321 6.858% PDCCH RMS EVM, Peak EVM, slot 21: 3.347 5.715% PDCCH RMS EVM, Peak EVM, slot 22: 3.254 8.079% PDCCH RMS EVM, Peak EVM, slot 23: 2.989 7.005% PDCCH RMS EVM, Peak EVM, slot 24: 3.299 6.602% Averaged RMS EVM frame 0: 2.675%






Averaged overall PDSCH RMS EVM: 2.675% Overall PDSCH Peak EVM = 11.2764% Averaged overall PDCCH RMS EVM: 3.363% Overall PDCCH Peak EVM = 9.3461%
hNRDownlinkEVM 함수의 출력 결과를 보면, 수신된 파형의 복조가 성공적으로 이루어졌음을 알 수 있습니다.