Main Content

lteSCFDMAModulate

Modulate using SC-FDMA

Description

[waveform,info] = lteSCFDMAModulate(ue,grid) performs single-carrier frequency-division multiple access (SC-FDMA) modulation for user-equipment-specific (UE-specific) settings ue. The function returns waveform, an SC-FDMA-modulated waveform, and its corresponding information info. You can use this syntax for LTE and multitone narrowband Internet of Things (NB-IoT) configurations.

The function calculates the inverse fast Fourier transform (IFFT), half-subcarrier shifts, and cyclic prefix insertions. The function also optionally performs raised-cosine windowing and overlapping of adjacent SC-FDMA symbols in resource array grid. For a block diagram that illustrates the steps in SC-FDMA modulation, see Algorithms.

example

[waveform,info] = lteSCFDMAModulate(ue,grid,windowing) performs SC-FDMA modulation for the chosen number of windowed and overlapped samples, windowing, used in the time-domain windowing. If you specify the Windowing field in ue, the function ignores it, and the output Windowing field of info is as specified in windowing. You can use this syntax for LTE and multitone NB-IoT configurations.

example

[waveform,info] = lteSCFDMAModulate(ue,chs,grid) performs SC-FDMA modulation for channel transmission configuration chs. You can use this syntax for LTE, single-tone NB-IoT, and multitone NB-IoT configurations. When you use this syntax without configuring ue for NB-IoT, the function ignores chs.

example

[waveform,info] = lteSCFDMAModulate(ue,chs,grid,windowing) performs SC-FDMA modulation for the specified channel transmission configuration and number of windowed and overlapped samples. You can use this syntax for LTE, single-tone NB-IoT, and multitone NB-IoT configurations. When you use this syntax without configuring ue for NB-IoT, the function ignores chs.

Examples

collapse all

Perform SC-FDMA modulation of one subframe of random uniformly distributed noise.

Initialize UE-specific settings for the specified number of resource blocks.

ue = struct('NULRB',50);

Obtain the size of the resource array.

d = lteULResourceGridSize(ue);

Get the resource grid by mapping a randomly generated vector of bits to the relevant modulation symbols, specifying QPSK modulation.

grid = reshape(lteSymbolModulate(randi([0,1],prod(d)*2,1),'QPSK'),d);

Perform SC-FDMA modulation for the specified UE-specific settings and resource grid.

waveform = lteSCFDMAModulate(ue,grid);

Perform SC-FDMA modulation of ten time slots of uniformly distributed noise, specifying a multitone NB-IoT downlink configuration and a windowing value.

Initialize the UE-specific settings by specifying the NB-IoT uplink subcarrier spacing.

ue.NBULSubcarrierSpacing = '15kHz';

Get the resource grid for the specified number of time slots.

NSlots = 10; % Number of slots in the generated waveform
dims = [12 7*NSlots];
grid = reshape(lteSymbolModulate(randi([0,1],prod(dims)*2,1),'QPSK'),dims);

Specify a windowing value of 6.

windowing = 6;

Perform SC-FDMA modulation and display the first five symbols of the modulated waveform.

waveform = lteSCFDMAModulate(ue,grid,windowing);
disp(waveform(1:5));
   0.0152 + 0.0178i
   0.0126 + 0.0159i
   0.0092 + 0.0130i
   0.0052 + 0.0092i
   0.0006 + 0.0047i

Perform SC-FDMA modulation of ten time slots of uniformly distributed noise, specifying a multitone NB-IoT downlink configuration.

Initialize the UE-specific settings by specifying the NB-IoT uplink subcarrier spacing.

ue.NBULSubcarrierSpacing = '15kHz';

Get the resource grid for the specified number of time slots.

NSlots = 10; % Number of slots in the generated waveform
dims = [12 7*NSlots];
grid = reshape(lteSymbolModulate(randi([0,1],prod(dims)*2,1),'QPSK'),dims);

Perform SC-FDMA modulation and display the first five symbols of the modulated waveform.

waveform = lteSCFDMAModulate(ue,grid);
disp(waveform(1:5));
   0.0152 + 0.0178i
   0.0126 + 0.0159i
   0.0092 + 0.0130i
   0.0052 + 0.0092i
   0.0006 + 0.0047i

Perform SC-FDMA modulation for 20 time slots of uniformly distributed noise, specifying a single-tone NB-IoT configuration with 15 kHz subcarrier spacing.

Initialize UE-specific settings, specifying an NB-IoT configuration with a subcarrier spacing of 15 kHz.

ue.NBULSubcarrierSpacing = '15kHz';

Set the channel transmission configuration, specifying the fields required for the chosen NB-IoT configuration.

chs = struct('NULSlots',16,'NRU',2,'NRep',4,'SlotIdx',120, ...
    'NBULSubcarrierSet',0,'Modulation','QPSK');

Get the narrowband resource grid for the 20 time slots.

NSlots =  20;
grid = repmat(lteNBResourceGrid(ue),1,NSlots);
grid(chs.NBULSubcarrierSet+1,:) = lteSymbolModulate(randi([0,1],size(grid,2)*2,1),'QPSK').';

Perform SC-FDMA modulation and display the first five symbols in the modulated time-domain waveform.

waveform = lteSCFDMAModulate(ue,chs,grid);
disp(waveform(1:5));
   0.0074 + 0.0026i
   0.0078 + 0.0006i
   0.0077 - 0.0015i
   0.0070 - 0.0035i
   0.0058 - 0.0052i

Input Arguments

collapse all

UE-specific settings, specified as a structure. The fields you specify in ue and chs determine whether the function performs SC-FDMA modulation for an LTE or NB-IoT configuration. To choose an NB-IoT configuration, specify the NBULSubcarrierSpacing field. To choose an LTE configuration, omit the NBULSubcarrierSpacing field. The Windowing field is optional, and you can specify it for either an LTE or NB-IoT configuration. The CyclicPrefixUL field is optional and is applicable only for an LTE configuration.

Number of time-domain samples over which the function applies windowing and overlapping of SC-FDMA symbols, specified as a nonnegative integer. This field is optional.

Note

If you do not specify Windowing, lteSCFDMAModulate returns the Windowing field of info as a default value chosen as a function of NULRB (for LTE uplink configurations) or NBULSubcarrierSpacing (for NB-IoT uplink configurations). This behavior compromises between the effective duration of the cyclic prefix (and therefore the channel delay spread tolerance) and the spectral characteristics of the transmitted signal (not considering any additional FIR filtering). If Windowing is zero, issues identified in the description of grid concerning concatenation of slots before SC-FDMA modulation do not apply.

The number of samples used for windowing depends on the cyclic prefix length (normal or extended) and the number of resource blocks. The default is chosen in accordance with the maximum values implied in TS 36.104, Tables E.5.1-1 and E.5.1-2 [1]. For a larger value of Windowing, the effective duration of the cyclic prefix is reduced but the transmitted signal spectrum has smaller out-of-band emissions.

Number of Resource Blocks NRB

Windowing Samples for Normal Cyclic Prefix

Windowing Samples for Extended Cyclic Prefix

6

4

4

15

6

6

25

4

4

50

6

6

75

8

8

100

8

8

Data Types: double

Cyclic prefix length, specified as 'Normal' or 'Extended'. This field is optional.

Dependencies

This field applies only when you choose an LTE configuration by omitting the NBULSubcarrierSpacing field.

Data Types: char | string

NB-IoT subcarrier spacing, specified as '3.75kHz' or '15kHz'. To set a subcarrier spacing of 3.75 kHz, specify this field as '3.75kHz'. To set a subcarrier spacing of 15 kHz, specify this field as '15kHz'.

To use lteSCFDMAModulate for NB-IoT modulation, you must specify this field. To indicate an LTE configuration, omit this field.

Note

For a subcarrier spacing of 3.75 kHz, lteSCFDMAModulate supports only single-tone NB-IoT configurations.

Data Types: char | string

Resource grid, specified as a numeric array of size M-by-N-by-P, where:

  • M is the number of subcarriers.

  • N is the number of SC-FDMA symbols.

  • P is the number of transmission antennas.

You can specify grid to contain REs for various time slots across all configured antenna ports, as described in Represent Resource Grids. Alternatively, you can specify grid to contain multiple such matrices concatenated across the second dimension to give multiple slots. The antenna planes in grid are each OFDM modulated to give the columns of the waveform output.

For an LTE uplink configuration, M must be a multiple of 12, since the number of resource blocks is NRB = M/12, up to a maximum of 2048. For an NB-IoT downlink or uplink configuration with the NBULSubcarrierSpacing field of ue set to '15kHz', M = 12. For an NB-IoT uplink configuration with NBULSubcarrierSpacing set to '3.75kHz', M = 48. Specify N as a multiple of the number of symbols in a slot L, where L = 14 for normal cyclic prefix and L = 12 for extended cyclic prefix. You can specify P as 1, 2, or 4.

The grid can span multiple time slots. Windowing and overlapping are applied between all adjacent SC-FDMA symbols, including the last of one slot and the first of the next. Therefore, a different result is obtained than when lteSCFDMAModulate is called on individual slots and those time-domain waveforms are concatenated. The resulting waveform in the latter case has discontinuities at the start and end of each slot. It is recommended that all slots for SC-FDMA modulation first be concatenated before calling lteSCFDMAModulate on the resulting multislot array. However, you can perform OFDM modulation on individual slots and create the resulting multislot time-domain waveform by manually overlapping.

Data Types: double
Complex Number Support: Yes

Channel transmission configuration, specified as a structure. For an NB-IoT configuration, you can set additional uplink-specific parameters by specifying the NB-IoT-specific fields in chs. Except for the NBULSubcarrierSet field, the fields in chs are applicable either when the NBULSubcarrierSpacing field of ue is '3.75kHz' or when NBULSubcarrierSpacing is '15kHz' and length(chs.NBULSubcarrierSet) is 1.

NB-IoT uplink subcarrier indices, specified as a vector of nonnegative integers in the interval [0, 11] or a nonnegative integer in the interval [0, 47]. The indices are in zero-based form. To use lteSCFDMAModulate for single-tone NB-IoT modulation, you must specify NBULSubcarrierSet as a scalar. If you do not specify NBULSubcarrierSet, lteSCFDMAModulate performs multitone NB-IoT modulation by default. If you specify the NBULSubcarrierSpacing field of ue as '15kHz', this field is required.

Data Types: double

Modulation type, specified as 'BPSK', 'QPSK' or '16QAM'. For binary phase shift keying (BPSK), specify Modulation as 'BPSK'. For quadrature phase shift keying (QPSK), specify Modulation as 'QPSK'. For 16-point quadrature amplitude modulation (16-QAM), specify Modulation as '16QAM'.

Data Types: char | string

Number of slots per resource unit (RU), specified as a positive integer. To use lteSCFDMAModulate for single-tone NB-IoT modulation, you must specify this field.

Data Types: double

Number of RUs, specified as a positive integer. To use lteSCFDMAModulate for single-tone NB-IoT modulation, you must specify this field.

Data Types: double

Number of repetitions for a codeword, specified as a nonnegative integer. To use lteSCFDMAModulate for single-tone NB-IoT modulation, you must specify this field.

Data Types: double

Relative slot index in a narrowband physical uplink shared channel (NPUSCH) bundle, specified as a nonnegative integer. This field determines the zero-based relative slot index in a bundle of time slots for transmission of a transport block or control information bit.

Data Types: double

Data Types: struct

Number of windowed and overlapped samples, specified as a nonnegative integer. This argument controls the number of windowed and overlapped samples used in time-domain windowing. If you specify this input, the function uses the value you specify for SC-FMDA modulation (instead of the Windowing field of the ue input) and returns it as the value of the Windowing field in the info output.

Data Types: double

Output Arguments

collapse all

SC-FDMA-modulated waveform, returned as a complex-valued matrix. The dimensions of waveform are T-by-P, where T is the number of time-domain samples, and P is the number of transmission antennas. The dimension T is given by T = 15K/NFFT, where NFFT is the IFFT size, and K is the number of time slots in the grid input. When M ≥ 72, NFFT is a function of the number of resource blocks (NRB), and NRB = M/12.

NRB

N FFT

6

128

15

256

25

512

50

1024

75

2048

100

2048

When M = 12 or the NBULSubcarrierSpacing field is '15kHz' (NB-IoT downlink or NB-IoT uplink with 15-kHz subcarrier spacing), NFFT = 128. When the NBULSubcarrierSpacing field is '3.75kHz' (NB-IoT uplink with 3.75-kHz subcarrier spacing), NFFT = 512. When M ≥ 72, NFFT is the smallest power of 2 greater than or equal to 12NRB/0.85. This value is the smallest FFT that spans all subcarriers and results in a bandwidth occupancy (12NRB/NFFT) of no more than 85%.

Data Types: double
Complex Number Support: Yes

Information about SC-FDMA modulated waveform, returned as a structure containing these fields.

Number of padded gap samples at the end of each time slot, returned as a positive integer. When the NBULSubcarrierSpacing field is '3.75kHz', NBULGapSamples is 144. Otherwise, NBULGapSamples is 0.

Dependencies

This argument is returned only when the NBULSubcarrierSpacing field of ue is specified.

Data Types: double

Cyclic prefix length, in number of time-domain samples, returned as a vector of positive integers. Each entry represents the cyclic prefix length of the corresponding orthogonal frequency-division multiplexing (OFDM) symbol in a time slot. The function returns CyclicPrefixLengths in accordance with the specified input fields shown in these tables.

LTE Configuration

NfftCyclicPrefixLengths when CyclicPrefixUL is set to 'Normal'CyclicPrefixLengths when CyclicPrefixUL is set to 'Extended')
128[10 9 9 9 9 9 9 10 9 9 9 9 9 9][32 32 32 32 32 32 32 32 32 32 32 32]
256[20 18 18 18 18 18 18 20 18 18 18 18 18 18][64 64 64 64 64 64 64 64 64 64 64 64]
512[40 36 36 36 36 36 36 40 36 36 36 36 36 36][128 128 128 128 128 128 128 128 128 128 128 128]
1024[80 72 72 72 72 72 72 80 72 72 72 72 72 72][256 256 256 256 256 256 256 256 256 256 256 256]
2048[160 144 144 144 144 144 144 160 144 144 144 144 144 144][512 512 512 512 512 512 512 512 512 512 512 512]

NB-IoT Configuration

NfftNBULSubcarrierSpacingCyclicPrefixLengths
128'15kHz'[10 9 9 9 9 9 9 10 9 9 9 9 9 9]
512'3.75kHz'[16 16 16 16 16 16 16 16 16 16 16 16 16 16]

Note

As shown in the tables, for values of Nfft less than 2048, the entries of CyclicPrefixLengths are given by multiplying the cyclic prefix lengths when Nfft is 2048 by Nfft/2048.

Data Types: int32

Number of time-domain samples over which the function applies windowing and overlapping of SC-FDMA symbols, returned as a nonnegative integer.

Data Types: double

Number of FFT points, NFFT, returned as a positive integer.

Data Types: double

Sampling rate of time-domain waveform, returned as a positive scalar. When the NBULSubcarrierSpacing field is '15kHz' or unspecified, the sampling rate of the waveform is (30.72 MHz / 2048) × NFFT, where NFFT is the number of fast Fourier transform (FFT) points. When you indicate an NB-IoT configuration by specifying ue.NBULSubcarrierSpacing, the sampling rate is 1.92 MHz.

Data Types: double

Data Types: struct

Algorithms

collapse all

SC-FDMA Modulation Processing

This diagram shows the processing performed by SC-FDMA modulation.

References

[1] 3GPP TS 36.104. “Base Station (BS) radio transmission and reception.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network; Evolved Universal Terrestrial Radio Access (E-UTRA). URL: https://www.3gpp.org.

Version History

Introduced in R2014a

expand all