This example shows how an over-the-air LTE waveform can be captured and analyzed using the LTE System Toolbox™, the Instrument Control Toolbox™ and an RF signal analyzer.
The LTE System Toolbox can be used to perform both standard compliant and custom decoding and analysis of baseband LTE signals. Using the LTE System Toolbox with the Instrument Control Toolbox allows waveforms to be captured using test and measurement hardware and be taken into MATLAB® for visualization, analysis and decoding.
In this example the Instrument Control Toolbox is used to capture an over-the-air LTE signal using an Agilent Technologies® N9010A signal analyzer and retrieve it into MATLAB for analysis. The over-the-air signal is generated using an Agilent Technologies N5172B signal generator.
In this example the captured waveform is analyzed by performing two measurements using the LTE System Toolbox:
PDSCH Error Vector Magnitude. EVM is a measure of the difference between the ideal symbols and the measured symbols after the equalization. See PDSCH Error Vector Magnitude (EVM) Measurement for a more detailed explanation.
Adjacent Channel Leakage Power Ratio. ACLR is used as a measure of the amount of power leaking into adjacent channels and is defined as the ratio of the filtered mean power centered on the assigned channel frequency to the filtered mean power centered on an adjacent channel frequencies. See LTE Downlink Adjacent Channel Leakage Power Ratio (ACLR) Measurement for a more detailed explanation.
The LTE System Toolbox can be used to generate standard or custom baseband IQ waveforms. Waveform Generation and Transmission using LTE System Toolbox with Test and Measurement Equipment demonstrates how to generate an over-the-air LTE waveform using the LTE System Toolbox and an Agilent Technologies signal generator.
In this example Agilent Technologies N7624B Signal Studio and an Agilent Technologies N5172B signal generator are used to generate a standard-compliant RF LTE downlink waveform at a 1GHz center frequency. Note 1GHz is selected as an example frequency and is not intended to be a recognized LTE channel. A 40ms 10MHz FDD R.3 Reference Measurement Channel (RMC) waveform is generated and looped for capture.
To analyze the over-the-air transmission in MATLAB, the Instrument Control Toolbox is used to configure the Agilent Technologies N9010A signal analyzer and capture baseband IQ data. The helper function hCaptureIQUsingN9010A.m retrieves the baseband IQ data and the capture sampling rate from the signal analyzer, ready for analysis in MATLAB. Note that 40 subframes are captured for analysis.
capSubframes = 40; % Number of subframes to capture centerFrequency = 1e9; % 1GHz center frequency bandwidth = 10e6; % 10MHz bandwidth startFreq = centerFrequency-bandwidth/2; stopFreq = centerFrequency+bandwidth/2; externalTrigger = false; capTime = capSubframes*1e-3; % 1 subframes is 1ms resBW = 91e3; videoBW = 91e3; [captureWaveform,captureSampleRate] = hCaptureIQUsingN9010A( ... 'A-N9010A-21026.dhcp.mathworks.com',capTime, ... centerFrequency,bandwidth,externalTrigger,startFreq,stopFreq, ... resBW,videoBW); rxWaveform = captureWaveform(1:end-1); captureSampleRate = round(captureSampleRate);
Inspect the function hCaptureIQUsingN9010A.m for more details on input parameters and the commands needed to configure the Agilent Technologies N9010A signal analyzer and retrieve the data.
Plotting the frequency spectrum of the retrieved time domain baseband waveform using the DSP System Toolbox™ spectrum analyzer shows the expected 10 MHz occupied bandwidth, with impairments due to RF transmission and reception.
spectrumPlotRx = dsp.SpectrumAnalyzer; spectrumPlotRx.SampleRate = captureSampleRate; spectrumPlotRx.SpectrumType = 'Power density'; spectrumPlotRx.PowerUnits = 'dBm'; spectrumPlotRx.RBWSource = 'Property'; spectrumPlotRx.RBW = 1.3e3; spectrumPlotRx.FrequencySpan = 'Span and center frequency'; spectrumPlotRx.Span = bandwidth; spectrumPlotRx.CenterFrequency = 0; spectrumPlotRx.Window = 'Rectangular'; spectrumPlotRx.SpectralAverages = 10; spectrumPlotRx.YLabel = 'PSD'; spectrumPlotRx.ShowLegend = false; spectrumPlotRx.Title = 'Received Signal Spectrum: 10 MHz LTE Carrier'; spectrumPlotRx(rxWaveform);
To analyze the received waveform a number of system parameters must be known. As a standard RMC waveform is captured lteRMCDL is used to generate a configuration structure for RMC R.3. This provides the parameters required for analysis, such as the signal bandwidth, downlink control configuration and resource allocation. Alternatively these parameters can be obtained through blind decoding as demonstrated in Cell Search, MIB and SIB1 Recovery.
% RMC configuration rmc = lteRMCDL('R.3');
The waveform is resampled to the sample rate of the OFDM modulator which will be used to demodulate the received signal, and synchronized to the first frame boundary to allow for OFDM demodulation.
% Obtain sampling rate and resample info = lteOFDMInfo(rmc); rmc.SamplingRate = info.SamplingRate; rxWaveform = resample(rxWaveform,rmc.SamplingRate,captureSampleRate); % Synchronize to the first frame head offset = lteDLFrameOffset(rmc,rxWaveform); rxWaveform = rxWaveform(1+offset:end,:); % Extract 2 frames (20ms) for analysis nFramesAnalyse = 2; nFramesWaveform = length(rxWaveform)/(info.SamplingRate*10e-3); rxWaveform = rxWaveform( ... 1:(info.SamplingRate*(min(nFramesAnalyse,nFramesWaveform)*10e-3)));
The average EVM of the received PDSCH symbols is measured using the helper function hPDSCHEVM.m. The example PDSCH Error Vector Magnitude (EVM) Measurement demonstrates a standard compliant EVM measurement as per TS36.104, Annex E [ 1 ]. Note that the helper function hPDSCHEVM.m can also measure the EVM of Test Model (E-TM) waveforms such as that generated in Waveform Generation and Transmission using LTE System Toolbox with Test and Measurement Equipment.
In this example the channel estimator is configured to estimate a time and frequency varying channel as an over-the-air signal capture is analyzed. A conservative 9-by-9 pilot averaging window is used, in time and frequency, to reduce the impact of noise on pilot estimates during channel estimation.
cec.PilotAverage = 'UserDefined'; cec.FreqWindow = 9; cec.TimeWindow = 9; cec.InterpType = 'cubic'; cec.InterpWinSize = 3; cec.InterpWindow = 'Causal';
The average EVM for the received waveform is displayed at the command window. A number of plots are also produced:
EVM versus OFDM symbol
EVM versus subcarrier
EVM versus resource block
EVM versus OFDM symbol and subcarrier (i.e. the EVM resource grid)
% Perform EVM measurement fprintf('\nEVM Analysis:\n'); [evmMeas, evmPlots] = hPDSCHEVM(rmc,cec,rxWaveform);
EVM Analysis: Low edge EVM, subframe 0: 2.852% High edge EVM, subframe 0: 2.848% Low edge EVM, subframe 1: 2.846% High edge EVM, subframe 1: 2.850% Low edge EVM, subframe 2: 2.794% High edge EVM, subframe 2: 2.797% Low edge EVM, subframe 3: 2.792% High edge EVM, subframe 3: 2.791% Low edge EVM, subframe 4: 2.792% High edge EVM, subframe 4: 2.782% Low edge EVM, subframe 6: 2.786% High edge EVM, subframe 6: 2.798% Low edge EVM, subframe 7: 2.801% High edge EVM, subframe 7: 2.795% Low edge EVM, subframe 8: 2.818% High edge EVM, subframe 8: 2.811% Low edge EVM, subframe 9: 2.809% High edge EVM, subframe 9: 2.801% Averaged low edge EVM, frame 0: 2.810% Averaged high edge EVM, frame 0: 2.808% Averaged EVM frame 0: 2.810% Low edge EVM, subframe 0: 2.824% High edge EVM, subframe 0: 2.822% Low edge EVM, subframe 1: 2.770% High edge EVM, subframe 1: 2.773% Low edge EVM, subframe 2: 2.828% High edge EVM, subframe 2: 2.816% Low edge EVM, subframe 3: 2.793% High edge EVM, subframe 3: 2.786% Low edge EVM, subframe 4: 2.787% High edge EVM, subframe 4: 2.776% Low edge EVM, subframe 6: 2.844% High edge EVM, subframe 6: 2.849% Low edge EVM, subframe 7: 2.803% High edge EVM, subframe 7: 2.807% Low edge EVM, subframe 8: 2.822% High edge EVM, subframe 8: 2.828% Low edge EVM, subframe 9: 2.892% High edge EVM, subframe 9: 2.888% Averaged low edge EVM, frame 1: 2.818% Averaged high edge EVM, frame 1: 2.816% Averaged EVM frame 1: 2.818% Averaged overall EVM: 2.814%
The E-UTRA and UTRA ACLR of the captured waveform are measured using the helper functions hACLRMeasurementEUTRA.m and hACLRMeasurementUTRA.m. The example LTE Downlink Adjacent Channel Leakage Power Ratio (ACLR) Measurement describes E-UTRA and UTRA measurements in more detail.
% Calculate ACLR measurement parameters rmc.UTRAChipRate = 3.84; % UTRA chip rate in MCPS [aclr, nRC, R_C, BWUTRA] = hACLRParameters(rmc); % Apply required oversampling resampled = resample(rxWaveform,aclr.OSR,1); % Measure E-UTRA and UTRA ACLR aclr = hACLRMeasurementEUTRA(aclr,resampled); aclr = hACLRMeasurementUTRA(aclr,resampled,nRC,R_C,BWUTRA); % Plot ACLR results fprintf('\nACLR Analysis:\n'); hACLRResults(aclr);
ACLR Analysis: Bandwidth: 10000000 BandwidthConfig: 9000000 BandwidthACLR: 50000000 OSR: 4 SamplingRate: 61440000 EUTRACenterFreq: [-20000000 -10000000 10000000 20000000] EUTRAPowerdBm: -32.7919 EUTRAdB: [78.9508 39.8602 40.2815 79.4126] UTRAPowerdBm: -30.5223 UTRAdB: [62.7287 34.2533 34.7296 62.4425] UTRACenterFreq: [-12500000 -7500000 7500000 12500000]
This example uses the following helper functions:
3GPP TS 36.104 "Base Station (BS) radio transmission and reception"