hPUSCHEVM using with TDD uplink signals
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commento
Zhengguang Zhang
il 5 Lug 2023
Hi Reichmuth, have you addressed the issue? I encountered the same error. Please kindly let me know if you found solutions. Thank you!
Risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!