5G Toolbox TS38.211 Table 6.3.3.1-7 for Short PRACH Preamble Generation
    12 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
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 comentarios
Respuestas (1)
  Sriram Tadavarty
    
 el 8 de Jun. de 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 comentarios
Ver también
Categorías
				Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

