Skip to content

Commit 7d6bdbf

Browse files
author
Xavier Arteaga
committed
Expose CFO compensation and smoothing filter in PUSCH BLER
1 parent cfa4391 commit 7d6bdbf

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

apps/simulators/PUSCHBLER/PUSCHBLER.m

+15-5
Original file line numberDiff line numberDiff line change
@@ -199,9 +199,16 @@
199199
%Bit-width of the compressed IQ samples.
200200
% Only applies if ApplyOFHCompression is set to true.
201201
CompIQwidth (1, 1) double {mustBeInteger, mustBeInRange(CompIQwidth, 1, 16)} = 9
202+
%Channel estimator frequency-domain smoothing strategy ('none', 'mean', 'filter').
203+
% Valid only for SRS estimator.
204+
SRSSmoothing (1, :) char {mustBeMember(SRSSmoothing, {'none', 'mean', 'filter'})} = 'filter'
202205
%Time-domain interpolation strategy ('average', 'interpolate').
203206
% Valid only for SRS estimator.
204207
SRSInterpolation (1, :) char {mustBeMember(SRSInterpolation, {'average', 'interpolate'})} = 'average'
208+
%Channel estimator CFO compensation.
209+
% Valid only for SRS estimator.
210+
SRSCompensateCFO (1, 1) logical = true
211+
205212
end % of properties (Nontunable)
206213

207214
properties % Tunable
@@ -638,8 +645,11 @@ function stepImpl(obj, SNRIn, nFrames)
638645

639646
if useSRSDecoder
640647
srsDemodulatePUSCH = srsMEX.phy.srsPUSCHDemodulator(EqualizerStrategy = obj.SRSEqualizerType);
641-
srsChannelEstimate = srsMEX.phy.srsMultiPortChannelEstimator(ImplementationType = obj.SRSEstimatorType, ...
642-
Smoothing = 'filter', Interpolation = obj.SRSInterpolation, CompensateCFO = true);
648+
srsChannelEstimate = srsMEX.phy.srsMultiPortChannelEstimator(...
649+
ImplementationType = obj.SRSEstimatorType, ...
650+
Smoothing = obj.SRSSmoothing, ...
651+
Interpolation = obj.SRSInterpolation, ...
652+
CompensateCFO = obj.SRSCompensateCFO);
643653
end
644654

645655
% %%% Simulation loop.
@@ -1040,7 +1050,7 @@ function releaseImpl(obj)
10401050
flag = isempty(obj.ThroughputMATLABCtr) || strcmp(obj.ImplementationType, 'srs');
10411051
case {'ThroughputSRS', 'BlockErrorRateSRS'}
10421052
flag = isempty(obj.ThroughputSRSCtr) || strcmp(obj.ImplementationType, 'matlab');
1043-
case {'SRSEstimatorType', 'SRSInterpolation'}
1053+
case {'SRSEstimatorType', 'SRSSmoothing', 'SRSInterpolation', 'SRSCompensateCFO'}
10441054
flag = strcmp(obj.ImplementationType, 'matlab') || obj.PerfectChannelEstimator;
10451055
case 'SRSEqualizerType'
10461056
flag = strcmp(obj.ImplementationType, 'matlab');
@@ -1078,8 +1088,8 @@ function releaseImpl(obj)
10781088
... Compression.
10791089
'ApplyOFHCompression', 'CompIQwidth', ...
10801090
... Other simulation details.
1081-
'ImplementationType', 'SRSEqualizerType', 'SRSEstimatorType', 'SRSInterpolation', ...
1082-
'QuickSimulation', 'DisplaySimulationInformation', 'DisplayDiagnostics'};
1091+
'ImplementationType', 'SRSEqualizerType', 'SRSEstimatorType', 'SRSSmoothing', 'SRSInterpolation', ...
1092+
'SRSCompensateCFO', 'QuickSimulation', 'DisplaySimulationInformation', 'DisplayDiagnostics'};
10831093
groups = matlab.mixin.util.PropertyGroup(confProps, 'Configuration');
10841094

10851095
resProps = {};

0 commit comments

Comments
 (0)