5G Toolbox TS38.211 Table 6.3.3.1-7 for Short PRACH Preamble Generation
9 views (last 30 days)
Show older comments
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
0 Comments
Answers (1)
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
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!