hPUSCHEVM using with TDD uplink signals

1 view (last 30 days)
Reichmuth Kim
Reichmuth Kim on 12 Nov 2020
Hello,
I try to use the function as described in Title to evaluate the EVM of an LTE UE Uplink signal in TDD. I tried to do it like the example "LT E Uplink EVM and In-Band Emissions Measurements" openExample('lte/UplinkEVMandInBandEmissionsExample')
I generated a signal over the lteRMCULTool and set the Duplex Mode to TDD. Result is that i´ve got EVM over 300% and a warning:
________
Warning: CRC failed on decoded data, using sliced received symbols, EVM may be inaccurate!
> In hPUSCHEVM_ (line 303)
In UplinkEVMandInBandEmissionsExample (line 111)
________
Why does´nt it work with TDD. Can somebody help me?
EDIT: Code as follows:
clear all; close all;
%% Transmitter
% Set the seeds of random number generators used to 0
rng(0);
% UE Configuration, TS36.101 FRC
frc = lteRMCUL('A3-5');
frc.PUSCH.RVSeq = 0; % Redundancy version
frc.TotSubframes = 10; % Total number of subframes to generate
frc.DuplexMode = 'TDD';
% Create UE transmission with random PUSCH data
txWaveform = lteRMCULTool(frc,randi([0 1], frc.PUSCH.TrBlkSizes(1), 1));
%% Impairment Modeling
% Model EVM with additive noise
scfdmaInfo = lteSCFDMAInfo(frc);
txEVMpc = 1.2; % Desired transmit EVM in percent
evmModel = txEVMpc/(100*sqrt(double(scfdmaInfo.Nfft)))* ...
complex(randn(size(txWaveform)),randn(size(txWaveform)))/sqrt(2);
rxWaveform = txWaveform+evmModel;
% Add frequency offset impairment to received waveform
foffset = 33.0; % Frequency offset in Hertz
t = (0:length(rxWaveform)-1).'/scfdmaInfo.SamplingRate;
rxWaveform = rxWaveform.* exp(1i*2*pi*foffset*t);
% Add IQ offset
iqoffset = complex(0.01, -0.005);
rxWaveform = rxWaveform+iqoffset;
%% Receiver
% Apply frequency estimation and correction for the purposes of performing
% timing synchronization
foffset_est = lteFrequencyOffset(frc, rxWaveform);
rxWaveformFreqCorrected = ...
lteFrequencyCorrect(frc, rxWaveform, foffset_est);
% Synchronize to received waveform
offset = lteULFrameOffset(frc, frc.PUSCH, rxWaveformFreqCorrected);
rxWaveform = rxWaveform(1+offset:end,:);
%% Perform Measurements
% Compute EVM and in-band emissions
[evmpusch, evmdrs, emissions, plots] = hPUSCHEVM(frc, rxWaveform);
% Plot the absolute in-band emissions
if (~isempty(emissions.DeltaRB))
hPUSCHEVMEmissionsPlot(emissions);
end
  1 Comment
Zhengguang Zhang
Zhengguang Zhang on 5 Jul 2023
Hi Reichmuth, have you addressed the issue? I encountered the same error. Please kindly let me know if you found solutions. Thank you!

Sign in to comment.

Answers (0)

Categories

Find more on Signal Processing in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!