주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

5G NR 파형 수집 및 분석

이 예제는 5G 파형 생성기 (5G Toolbox) 앱을 사용하여 5G NR 테스트 모델(NR-TM) 파형을 생성하고, 생성된 파형을 Instrument Control Toolbox™ 소프트웨어를 통해 Keysight™ 벡터 신호 생성기로 다운로드하여 무선 전송을 수행하는 방법을 보여줍니다. 그런 다음 Keysight 신호 분석기를 사용하여 무선으로 전송된 신호를 포착하고, MATLAB®에서 해당 신호를 분석합니다.

소개

이 예제는 5G 파형 생성기 앱을 사용하여 5G NR-TM 파형을 생성하고, 해당 파형을 다운로드하여 Keysight 벡터 신호 생성기로 전송한 다음, Keysight 신호 분석기를 통해 파형을 수신하여 MATLAB에서 파형 분석을 수행합니다. 이 다이어그램은 일반적인 워크플로를 보여줍니다.

5g_ict_workflow.png

요구 사항

이 예제를 실행하려면 다음 계측기가 필요합니다.

  • 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%

Figure contains 3 axes objects. Axes object 1 with title PDSCH EVM vs OFDM symbol, BWP index : 1, xlabel Symbol number, ylabel EVM (%) contains 2 objects of type line. These objects represent rms EVM, peak EVM. Axes object 2 with title PDSCH EVM vs Slot, BWP index : 1, xlabel Slot number, ylabel EVM (%) contains 2 objects of type line. These objects represent rms EVM, peak EVM. Axes object 3 with title PDSCH EVM vs Subcarrier, BWP index : 1, xlabel Subcarrier number, ylabel EVM (%) contains 2 objects of type line. These objects represent rms EVM, peak EVM.

Figure EVM (%) contains an axes object. The axes object with title PDSCH EVM Resource Grid, BWP index : 1, xlabel OFDM symbols, ylabel Subcarriers contains an object of type surface.

Figure contains an axes object. The axes object with title PDSCH Equalized Symbols Constellation, BWP index : 1 contains 2 objects of type line. One or more of the lines displays its values using only markers

Figure contains 3 axes objects. Axes object 1 with title PDCCH EVM vs OFDM symbol, BWP index : 1, xlabel Symbol number, ylabel EVM (%) contains 2 objects of type line. These objects represent rms EVM, peak EVM. Axes object 2 with title PDCCH EVM vs Slot, BWP index : 1, xlabel Slot number, ylabel EVM (%) contains 2 objects of type line. These objects represent rms EVM, peak EVM. Axes object 3 with title PDCCH EVM vs Subcarrier, BWP index : 1, xlabel Subcarrier number, ylabel EVM (%) contains 2 objects of type line. These objects represent rms EVM, peak EVM.

Figure EVM (%) contains an axes object. The axes object with title PDCCH EVM Resource Grid, BWP index : 1, xlabel OFDM symbols, ylabel Subcarriers contains an object of type surface.

Figure contains an axes object. The axes object with title PDCCH Equalized Symbols Constellation, BWP index : 1 contains 2 objects of type line. One or more of the lines displays its values using only markers

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 함수의 출력 결과를 보면, 수신된 파형의 복조가 성공적으로 이루어졌음을 알 수 있습니다.