5G Toolbox TS38.211 Table 6.3.3.1-7 for Short PRACH Preamble Generation

11 views (last 30 days)
Hi everyone,
I was trying to produce a PRACH preamble and pass it through a TDL channel. For that purpose, I was using the example script given in the link:
However, under the PRACH Configuration section of the link, I obtained an error when trying to obtain the zero correlation zone value. The code segment that I am talking about is below:
% Set PRACH configuration
prach = nrPRACHConfig;
prach.FrequencyRange = 'FR1'; % Frequency range
prach.DuplexMode = 'FDD'; % Frequency Division Duplexing (FDD)
%prach.ConfigurationIndex = 27; % Configuration index for format 0
prach.ConfigurationIndex = 107; % Configuration index for format A1
%prach.SubcarrierSpacing = 1.25; % Subcarrier spacing
prach.SubcarrierSpacing = 15; % Subcarrier spacing
prach.SequenceIndex = 22; % Logical sequence index
prach.PreambleIndex = 32; % Preamble index
prach.RestrictedSet = 'UnrestrictedSet'; % Normal mode
%prach.ZeroCorrelationZone = zeroCorrelationZone; % Cyclic shift index
prach.FrequencyStart = 0; % Frequency location
% Define the value of ZeroCorrelationZone using the NCS table stored in
% the nrPRACHConfig object
switch prach.Format
case {'0','1','2'}
ncsTable = nrPRACHConfig.Tables.NCSFormat012;
ncsTableCol = (string(ncsTable.Properties.VariableNames) == prach.RestrictedSet);
case '3'
ncsTable = nrPRACHConfig.Tables.NCSFormat3;
ncsTableCol = (string(ncsTable.Properties.VariableNames) == prach.RestrictedSet);
otherwise
ncsTable = nrPRACHConfig.Tables.NCSFormatABC;
ncsTableCol = contains(string(ncsTable.Properties.VariableNames), num2str(prach.LRA));
end
NCS = 13;
zeroCorrelationZone = ncsTable.ZeroCorrelationZone(ncsTable{:,ncsTableCol}==NCS);
prach.ZeroCorrelationZone = zeroCorrelationZone; % Cyclic shift index
The changes I made were to set the configuration index from 27 to 107 (therefore, changing the format from 0 to A1) and changing the subcarrier spacing from 1.25 kHz to 15 kHz since I was working with short preamble format. However, I received the error in the last line because the ncsTableCol returned an empty variable from the switch case. I debugged the code further and realized that the Table values were missing in the prach object. What I mean is, in the class definition script, nrPRACHConfig.m, from lines 316 to 324 the tables are defined like so:
Tables = struct('LongPreambleFormats', nr5g.internal.prach.getTable6331x(1), ... % Table 6.3.3.1-1
'ShortPreambleFormats', nr5g.internal.prach.getTable6331x(2), ... % Table 6.3.3.1-2
'NCSFormat012', nr5g.internal.prach.getTable6331x(5), ... % Table 6.3.3.1-5
'NCSFormat3', nr5g.internal.prach.getTable6331x(6), ... % Table 6.3.3.1-6
'NCSFormatABC', nr5g.internal.prach.getTable6331x(7), ... % Table 6.3.3.1-7
'SupportedSCSCombinations', nr5g.internal.prach.getTable6332x(1), ... % Table 6.3.3.2-1
'ConfigurationsFR1PairedSUL', nr5g.internal.prach.getTable6332x(2), ... % Table 6.3.3.2-2
'ConfigurationsFR1Unpaired', nr5g.internal.prach.getTable6332x(3), ... % Table 6.3.3.2-3
'ConfigurationsFR2', nr5g.internal.prach.getTable6332x(4)); % Table 6.3.3.2-4
However, when 'NCSFormatABC' is called, it returns a wrong table because in "nr5g.internal.prach.getTable6331x(7)" the Table 6.3.3.1-7 is defined incorrectly, as below:
% Define TS 38.211 Table 6.3.3.1-7
% Each column represents the following:
% Column 1: zeroCorrelationZoneConfig
% Column 2: NCS value for unrestricted set
% Column 3: NCS value for restricted set type A
% Column 4: NCS value for restricted set type B
t63317 = {
0 0 NaN NaN
1 2 NaN NaN
2 4 NaN NaN
3 6 NaN NaN
4 8 NaN NaN
5 10 NaN NaN
6 12 NaN NaN
7 13 NaN NaN
8 15 NaN NaN
9 17 NaN NaN
10 19 NaN NaN
11 23 NaN NaN
12 27 NaN NaN
13 34 NaN NaN
14 46 NaN NaN
15 69 NaN NaN
};
table63317 = cell2table(t63317,'VariableNames',{'ZeroCorrelationZone','UnrestrictedSet','RestrictedSetTypeA','RestrictedSetTypeB'});
table63317.Properties.Description = 'TS 38.211 Table 6.3.3.1-7: NCS for short preambles';
However, I believe the correct table should be like this:
%% Table 6.3.3.1-7 from TS38.211
% Define TS 38.211 Table 6.3.3.1-7
% Each column represents the following:
% Column 1: zeroCorrelationZoneConfig
% Column 2: NCS value for L_RA = 139
% Column 3: NCS value for L_RA = 571
% Column 4: NCS value for L_RA = 1151
t63317 = {
0 0 0 0
1 2 8 17
2 4 10 21
3 6 12 25
4 8 15 30
5 10 17 35
6 12 21 44
7 13 25 52
8 15 31 63
9 17 40 82
10 19 51 104
11 23 63 127
12 27 81 164
13 34 114 230
14 46 190 383
15 69 285 575
};
table63317 = cell2table(t63317,'VariableNames',{'ZeroCorrelationZone','139','571','1151'});
table63317.Properties.Description = 'TS 38.211 Table 6.3.3.1-7: NCS for short preambles';
The table I proposed above is copied from TS38.211 Table 6.3.3.1-7. Document version is V16.5.0. I think the difference between the two tables is because the old table is from Release 15 and the new table is from Release 16. I solved this issue by writing the table manually in my program however I wonder, is there a planned update to address this issue?
Kind regards,
Dogukan

Answers (1)

Sriram Tadavarty
Sriram Tadavarty on 8 Jun 2023
Hi Dogukan,
The 3GPP Release 16 updates of PRACH generation are available in 5G Toolbox from MATLAB R2021b release.
Hope this helps.
Regards,
Sriram

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!