Main Content

nrPRACHOFDMModulate

Generate PRACH OFDM modulated waveform

Description

example

[waveform,info] = nrPRACHOFDMModulate(carrier,prach,grid) generates waveform, a physical random access channel (PRACH) time-domain waveform, by performing orthogonal frequency-division multiplexing (OFDM) modulation of PRACH carrier resource array grid for carrier configuration parameters carrier and PRACH configuration parameters prach. The function also returns info, a structure containing OFDM information.

example

[waveform,info] = nrPRACHOFDMModulate(carrier,prach,grid,'Windowing',samples) specifies the number of time-domain samples over which the function applies raised cosine windowing and overlapping of OFDM symbols.

Examples

collapse all

Generate a PRACH waveform by performing OFDM modulation of a resource array that contains PRACH symbols.

Specify carrier configuration parameters.

carrier = nrCarrierConfig;

Configure PRACH for format A1.

prach = nrPRACHConfig('ConfigurationIndex',106,'SubcarrierSpacing',15);

Generate PRACH symbols and map to a PRACH slot resource grid.

sym = nrPRACH(carrier,prach);
ind = nrPRACHIndices(carrier,prach);
grid = nrPRACHGrid(carrier,prach);
grid(ind) = sym;

Generate the PRACH OFDM waveform by modulating the grid. Display PRACH OFDM information.

[waveform,info] = nrPRACHOFDMModulate(carrier,prach,grid);
disp(info)
                   Nfft: 1024
             SampleRate: 15360000
    CyclicPrefixLengths: [152 0 144 0 144 0 152 0 144 0 144 0 0 0]
           GuardLengths: [0 0 0 0 0 0 0 0 0 0 0 0 0 144]
          SymbolLengths: [1176 1024 1168 1024 1168 1024 1176 1024 1168 ... ]
           OffsetLength: 0
              Windowing: 72

Generate a PRACH OFDM modulated waveform by modulating a carrier containing PRACH symbols, specifying the number of samples over which the modulator applies windowing and overlapping of OFDM symbols.

Specify carrier configuration parameters, specifying a subcarrier spacing of 60 kHz.

carrier = nrCarrierConfig('SubcarrierSpacing',60);

Configure and generate PRACH symbols and map to a PRACH slot resource grid.

prach = nrPRACHConfig('FrequencyRange','FR2','SubcarrierSpacing',60,'DuplexMode','TDD');
sym = nrPRACH(carrier,prach);
ind = nrPRACHIndices(carrier,prach);
grid = nrPRACHGrid(carrier,prach);
grid(ind) = sym;

Generate the PRACH OFDM waveform by modulating the grid, specifying the number of time domain samples over which the PRACH OFDM modulator applies windowing and overlapping of OFDM symbols.

samples = 80;
[waveform,info] = nrPRACHOFDMModulate(carrier,prach,grid,'Windowing',samples);

Input Arguments

collapse all

Carrier configuration parameters for a specific OFDM numerology, specified as an nrCarrierConfig object. Only these object properties are relevant for this function.

PRACH configuration parameters, specified as an nrPRACHConfig object. The function uses only these properties of this input.

PRACH resource grid, specified as a K-by-L-by-P complex array.

  • K is the number of subcarriers equal to (carrier.SubcarrierSpacing / prach.SubcarrierSpacing) × carrier.NSizeGrid × 12

  • L is the number of OFDM symbols and depends on the PRACH preamble format.

    • For long formats, L = prach.PRACHDuration.

    • For short format C0, L = 7.

    • For all other short formats, L = 14.

      For more information on PRACH preamble formats, see TS 38.211 Tables 6.3.3.1-1 and 6.3.3.1-2 [1].

  • P is the number of transmit antennas.

Data Types: double
Complex Number Support: Yes

Number of time-domain samples over which the function applies raised cosine windowing and overlapping of OFDM symbols, specified as a nonnegative integer or [].

If you do not specify this input, or if you specify it as [], the function sets this input to the maximum value E that does not impact error vector magnitude (EVM) tests, as specified in TS 38.101-1 Annex F.5.5 and TS 38.101-2 Annex F.5.5. E is equal to value of floor((NCPW) × info.NfftNFFT, nominal), where NCP, W, and NFFT, nominal are the values in the table columns labeled "Cyclic prefix length", "EVM window length", and "FFT size", respectively.

Data Types: double

Output Arguments

collapse all

PRACH OFDM modulated waveform, returned as a complex-valued matrix of size T-by-P.

  • T is the number of time domain samples in the waveform for the current slot, equal to the value of info.OffsetLengths + sum(info.SymbolLengths).

    The NPRACHSlot property of the prach input determines the current slot.

  • P is the number of transmit antennas.

Data Types: double
Complex Number Support: Yes

OFDM information, returned as a structure containing these fields.

FieldsValuesDescription
NfftPositive integerNumber of FFT points
SampleRatePositive integerWaveform sample rate
CyclicPrefixLengths1-by-N vector of nonnegative integers, where N is the number of OFDM symbols in a PRACH slotCyclic prefix lengths of each OFDM symbol, in samples
GuardLengths1-by-N vector of positive integers, where N is the number of OFDM symbols in a PRACH slotGuard lengths of OFDM symbols, in samples
SymbolLengths1-by-N vector of nonnegative integers, where N is the number of OFDM symbols in a PRACH slotOFDM symbol lengths, in samples
OffsetLengthNonnegative integerLength, in samples, of the initial time offset between the start of the configured PRACH slot period to the start of the cyclic prefix
WindowingNonnegative integerNumber of time-domain samples over which the function applies raised cosine windowing and overlapping of OFDM symbols

For long formats, for which the LRA property of the prach input is 839, the first slot of a PRACH preamble can occur part of the way through the nominal PRACH slot period. In this case, the function increases the value of the OffsetLength field, which ensures that the OFDM waveform spans the entire active PRACH preamble. To balance these slots with the nominal PRACH slot period, some inactive PRACH slots have OFDM waveforms that are shorter than the nominal PRACH slot period. The function conveys this by returning the CyclicPrefixLengths and GuardLengths fields as [], corresponding to no OFDM symbols, and setting the OffsetLength field equal to the number of empty subframes required.

Data Types: struct

References

[1] 3GPP TS 38.211. “NR; Physical channels and modulation.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[2] 3GPP TS 38.101-1. “NR; User Equipment (UE) radio transmission and reception; Part 1: Range 1 Standalone.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[3] 3GPP TS 38.101-2. “NR; User Equipment (UE) radio transmission and reception; Part 2: Range 2 Standalone.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

Extended Capabilities

Introduced in R2020b