Main Content

lteRMCULTool

Uplink RMC or FRC waveform generation

Description

lteRMCULTool starts the LTE Waveform Generator app for the parameterization and generation of a reference measurement channel (RMC) waveform. For a list of the default top-level configuration associated with the available uplink reference channels, see UL Reference Channel Options.

example

[waveform,grid,rmccfgout] = lteRMCULTool(rc,trdata) specifies the reference channel, rc, and information bits, trdata.

[waveform,grid,rmccfgout] = lteRMCULTool(rc,trdata,duplexmode,totsubframes) also accepts optional input arguments to define the duplex mode of the generated waveform and total number of subframes that make up the grid.

example

[waveform,grid,rmccfgout] = lteRMCULTool(rmccfg,trdata) where rmccfg specifies a reference channel structure. The reference channel structure with default parameters can easily be created with the function lteRMCUL then modified as desired.

[waveform,grid,rmccfgout] = lteRMCULTool(rmccfg,trdata,cqi,ri,ack) where support for control information transmission on PUSCH is specified in vectors cqi, ri, and ack. Together, these three fields form an uplink control information (UCI) message. If these particular control information bits are not present in this transmission, cqi, ri, and ack can be empty vectors. The UCI is encoded for PUSCH transmission using the processing defined in TS 36.212 [3], Section 5.2.4, consisting of UCI coding and channel interleaving. The vectors cqi, ri, and ack are not treated as data streams. Thus, each subframe contains the same CQI, RI, and ACK information bits.

Examples

collapse all

Generate a time domain signal and a 3-dimensional array of the resource elements for A3-2 as specified in TS 36.104 Annex A. The A3-2 fixed reference channel (FRC) settings include: FDD, 1.4MHz, QPSK, and 1/3 code rate.

rmc = lteRMCUL('A3-2');
[waveform,grid,rmccfgout] = lteRMCULTool(rmc,1);

Inspect the FRC configuration settings.

rmccfgout
rmccfgout = struct with fields:
                RC: 'A3-2'
             NULRB: 6
           NCellID: 0
            NFrame: 0
         NSubframe: 0
    CyclicPrefixUL: 'Normal'
       CyclicShift: 0
         Shortened: 0
           Hopping: 'Off'
          SeqGroup: 0
      TotSubframes: 10
              RNTI: 1
           NTxAnts: 1
         Windowing: 0
        DuplexMode: 'FDD'
             PUSCH: [1x1 struct]
      SamplingRate: 1920000
              Nfft: 128

rmccfgout.PUSCH
ans = struct with fields:
             Modulation: 'QPSK'
                NLayers: 1
         DynCyclicShift: 0
               NBundled: 0
                BetaACK: 2
                BetaCQI: 2
                 BetaRI: 2
         NHARQProcesses: 8
                  RVSeq: [0 2 3 1]
                     RV: 0
           NTurboDecIts: 5
              OrthCover: 'On'
                    PMI: 0
                 PRBSet: [6x1 double]
         TargetCodeRate: 0.3333
         ActualCodeRate: [0.3611 0.3611 0.3611 0.3611 0.3611 0.3611 0.3611 0.3611 0.3611 0.3611]
             TrBlkSizes: [600 600 600 600 600 600 600 600 600 600]
        CodedTrBlkSizes: [1728 1728 1728 1728 1728 1728 1728 1728 1728 1728]
    HARQProcessSequence: [1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8]

rmccfgout.PUSCH.ActualCodeRate
ans = 1×10

    0.3611    0.3611    0.3611    0.3611    0.3611    0.3611    0.3611    0.3611    0.3611    0.3611

The actual code rate of 0.3611 is slightly higher then the target code rate of 1/3.

Generate a time-domain signal and a 2-D array of the resource elements for a modified A1-1 fixed reference channel.

Initialize the frc configuration structure and change the modulation scheme to '16QAM'. Generate the txWaveform, txGrid, and output the configuration structure. Create a spectrum analyzer object, setting the sampling rate. Plot the waveform.

frc = lteRMCUL('A1-1');
frc.PUSCH.Modulation = '16QAM';
[txWaveform,txGrid,rmcCfgOut] = lteRMCULTool(frc,[1;0;0;1]);
saScope = spectrumAnalyzer(SampleRate=rmcCfgOut.SamplingRate);
saScope(txWaveform)

Create a new customized parameter set by overriding selected values of an existing preset RMC to define a full-band, 5MHz, PUSCH using 64QAM modulation, and 1/3 coding rate.

Begin with TS 36.104 Annex A, RMC A1-3, which matches this criteria but with QPSK modulation.

rmcOverride.RC = 'A1-3';
rmc = lteRMCUL(rmcOverride,1);
rmc.PUSCH
ans = struct with fields:
         Modulation: 'QPSK'
            NLayers: 1
     DynCyclicShift: 0
           NBundled: 0
            BetaACK: 2
            BetaCQI: 2
             BetaRI: 2
     NHARQProcesses: 8
              RVSeq: [0 2 3 1]
                 RV: 0
       NTurboDecIts: 5
          OrthCover: 'On'
                PMI: 0
             PRBSet: [25x1 double]
     TargetCodeRate: 0.3333
     ActualCodeRate: [0.3111 0.3111 0.3111 0.3111 0.3111 0.3111 0.3111 0.3111 0.3111 0.3111]
         TrBlkSizes: [2216 2216 2216 2216 2216 2216 2216 2216 2216 2216]
    CodedTrBlkSizes: [7200 7200 7200 7200 7200 7200 7200 7200 7200 7200]

Override the PUSCH modulation. lteRMCUL returns recomputed PUSCH transport block sizes and physical channel capacities to maintain the coding rate of R=1/3.

rmcOverride.PUSCH.Modulation = '64QAM';
rmc = lteRMCUL(rmcOverride,1);
rmc.PUSCH
ans = struct with fields:
         Modulation: '64QAM'
            NLayers: 1
     DynCyclicShift: 0
           NBundled: 0
            BetaACK: 2
            BetaCQI: 2
             BetaRI: 2
     NHARQProcesses: 8
              RVSeq: [0 2 3 1]
                 RV: 0
       NTurboDecIts: 5
          OrthCover: 'On'
                PMI: 0
             PRBSet: [25x1 double]
     TargetCodeRate: 0.3333
     ActualCodeRate: [0.3378 0.3378 0.3378 0.3378 0.3378 0.3378 0.3378 0.3378 0.3378 0.3378]
         TrBlkSizes: [7224 7224 7224 7224 7224 7224 7224 7224 7224 7224]
    CodedTrBlkSizes: [21600 21600 21600 21600 21600 21600 21600 21600 21600 21600]

Input Arguments

collapse all

Reference channel, specified as a character vector or string scalar. Use double quotes for string. This argument identifies the reference measurement channel (RMC) number, as specified in TS 36.104 [2]. See UL Reference Channel Options for a list of the default top-level configuration associated with the available uplink reference channels.

Data Types: char | string

Information bits, specified as a column vector or a cell array containing one or two column vectors of bit values. Each vector contains the information bits stream to be coded across the duration of the generation, which represents multiple concatenated transport blocks. Internally these vectors are looped if the number of bits required across all subframes of the generation exceeds the length of the vectors provided. Looping on the information bits allows you to enter a short pattern, such as [1;0;0;1], that is repeated as the input to the transport coding. The TrBlkSizes matrix field of rmccfgout.PUSCH defines the number of data bits taken from the information bit stream for each subframe of generation.

Data Types: double | cell

Duplexing mode, specified as 'FDD' or 'TDD' to indicate the frame structure type of the generated waveform.

Data Types: char | string

Total number of subframes, specified as a numeric scalar. Optional. This argument specifies the total number of subframes that form the resource grid.

Data Types: double

Reference channel configuration, specified as a structure. The structure defines any (or all) of the fields or subfields. The reference configuration structure with default parameters can easily be created using the lteRMCUL function. lteRMCUL generates the various FRC configuration structures, as defined in TS 36.104 [2], Annex A.

You can specify rmccfg to include fields that are contained in the output structure, rmccfgout.

Data Types: struct

CQI information bits, specified as a numeric vector. CQI stands for channel quality information. cqi can be empty if these particular control information bits are not present in the transmission. cqi is not treated as a data stream, and thus each subframe contains the same CQI information bits.

Data Types: double

RI information bits, specified as a numeric vector. RI stands for rank indication. ri can be empty if these particular control information bits are not present in the transmission. ri is not treated as a data stream, and thus each subframe contains the same RI information bits.

Data Types: double

ACK information bits, specified as a numeric vector. ACK stands for acknowledgment in automatic repeat request (ARQ) protocols. ack can be empty if these particular control information bits are not present in the transmission. ack is not treated as a data stream, and thus each subframe contains the same ACK information bits.

Data Types: double

Output Arguments

collapse all

Generated RMC time-domain waveform, returned as a T-by-P numeric matrix. T is the number of time-domain samples and P is the number of antennas.

grid is a 3-D array of resource elements for the generated subframes across all configured antenna ports, as described in Represent Resource Grids. rmccfgout is a structure containing information about the SC-FDMA modulated waveform and RMC configuration parameters.

Data Types: double
Complex Number Support: Yes

Populated resource grid, returned as a numeric 3-D array of resource elements for several subframes across all configured antenna ports, as described in Represent Resource Grids.

grid represents the populated resource grid for all the physical channels specified in TS 36.104 [2], Annex A

Data Types: double
Complex Number Support: Yes

Configuration Parameters Structure

Configuration parameters, returned as a structure. rmccfgout contains the following fields.

Parameter FieldValuesDescription
RC

'A1-1' (default), 'A1-2', 'A1-3', 'A1-4', 'A1-5', 'A2-1', 'A2-2', 'A2-3', 'A3-1', 'A3-2', 'A3-3', 'A3-4', 'A3-5', 'A3-6', 'A3-7', 'A4-1', 'A4-2', 'A4-3', 'A4-4', 'A4-5', 'A4-6', 'A4-7', 'A4-8', 'A5-1', 'A5-2', 'A5-3', 'A5-4', 'A5-5', 'A5-6', 'A5-7', 'A7-1', 'A7-2', 'A7-3', 'A7-4', 'A7-5', 'A7-6', 'A8-1', 'A8-2', 'A8-3', 'A8-4', 'A8-5', 'A8-6', 'A11-1', 'A3-2-9RB', 'A4-3-9RB'

Reference channel number

NULRB

Scalar integer from 6 to 110

Number of uplink resource blocks. (NRBUL)

NCellID

Integer from 0 to 503

Physical layer cell identity

NFrame

0 (default), nonnegative scalar integer

Frame number

NSubFrame

0 (default), nonnegative scalar integer

Initial subframe number

CyclicPrefixUL

'Normal' (default), 'Extended'

Cyclic prefix length

CyclicShift

0, 1, 2, 3, 4, 5, 6, 7

Cyclic shift. This argument yields nDMRS(1).

Shortened

0 (default), 1

Subframe shortened flag. If the function sets the flag to 1, the last symbol of the subframe is not used. Subframes with possible SRS transmission require this flag to be set.

Hopping

'Off' (default), 'Group', or 'Sequence'

Hopping type

SeqGroup

0 (default), integer from 0 to 29

PUSCH sequence group assignment (ΔSS).

TotSubFrames

10 (default)

Positive scalar integer

Total number of subframes to generate

This argument specifies the total number of subframes that form the resource grid.

RNTI

1 (default)

Scalar integer

Radio network temporary identifier (RNTI) value (16 bits)

NTxAnts

1, 2, 4

Number of transmission antennas.

Windowing

Nonnegative scalar integer

The number of time-domain samples over which windowing and overlapping of SC-FDMA symbols is applied

DuplexMode

'FDD' (default), 'TDD'

Duplexing mode, specified as either:

  • 'FDD' for Frequency Division Duplex

  • 'TDD' for Time Division Duplex

It represents the frame structure type.

PUSCH

Structure

PUSCH transmission configuration

SRS

Structure

Sounding Reference Signal (SRS) configuration

SamplingRate

Numeric scalar

Carrier sampling rate in Hz, NSC / NSYM × 3.84e6, where NSC is the number of subcarriers and NSYM is the number of SC-FDMA symbols in a subframe.

Nfft

Scalar integer, typically one of {128, 256, 512, 1024, 1536, 2048} for standard channel bandwidths {'1.4MHz', '3MHz', '5MHz', '10MHz', '15MHz', '20MHz'}, respectively.

Number of FFT frequency bins

PUSCH Substructure

The substructure PUSCH relates to the physical channel configuration and contains these fields:

Parameter FieldValuesDescription
Modulation'QPSK', '16QAM', '64QAM', or '256QAM'

Modulation format

NLayers

1, 2, 3, 4

Number of transmission layers.

DynCyclicShift

0, 1, 2, 3, 4, 5, 6, 7

Cyclic shift for DM-RS (yields nDMRS(2)).

NBundled

0, 1, 2, 3, 4, 5, 6, 7, 8, 9

HARQ-ACK bundling scrambling sequence index

BetaACK

Scalar integer

Modulation and coding scheme (MCS) offset for HARQ-ACK bits

BetaCQI

Scalar integer

Modulation and coding scheme (MCS) offset for CQI and PMI bits

BetaRI

Scalar integer

Modulation and coding scheme (MCS) offset for RI bits

NHARQProcesses

1, 2, 3, 4, 5, 6, 7, 8

Number of HARQ processes per component carrier

RVSeq

Numeric matrix

Redundancy version (RV) indicator used by all HARQ processes, returned as a numeric matrix. RVSeq is a one- or two-row matrix for one or two codewords, respectively. The number of columns in RVSeq equals the number of transmissions of the transport blocks associated with a HARQ process. The RV sequence specified in each column is applied to the transmission of the transport blocks. If RVSeq is a scalar (or column vector in the case of two codewords), then there is a single initial transmission of each block with no retransmissions. If RVSeq is a row vector in a two-codeword transmission, then the same RV sequence is applied to both codewords.

RV

Numeric matrix

Redundancy version (RV) indicator in initial subframe, returned as a numeric matrix. This argument is a one- or two-column vector that specifies the redundancy version for one or two codewords used in the initial subframe number, NSubframe. This parameter field is only for informational purposes and is read-only.

NTurboDecIts

Positive scalar integer

Number of turbo decoder iteration cycles

OrthCover

'Off' (default), 'On'

Orthogonal cover sequence flag.

Applies ('On'), or does not apply ('Off'), orthogonal cover sequence w (Activate-DMRS-with OCC).

PMI

Integer from 0 to 23

Scalar precoder matrix indication (PMI) to be used during precoding

PRBSet

Integer matrix

Physical resource block set of indices, returned as an integer matrix. This argument is a 1- or 2-column matrix that contains the 0-based physical resource block indices (PRBs) corresponding to the resource allocations for this PUSCH.

TargetCodeRate

Numeric scalar or vector

Target code rates for each subframe in a frame. Used for calculating the transport block sizes according to TS 36.101 [1], Annex A.2.1.2.

If TargetCodeRate is not provided and TrBlkSizes is provided at the input, TargetCodeRate == ActualCodeRate.

ActualCodeRate

Numeric vector

Actual code rates for each subframe in a frame. The maximum actual code rate is 0.93. This parameter field is only for informational purposes and is read-only.

TrBlkSizes

Numeric vector

Transport block sizes for each subframe in a frame

CodedTrBlkSizes

Numeric vector

Coded transport block sizes for each a subframe in a frame, returned as a numeric vector. This parameter field is only for informational purposes and is read-only.

HARQProcessSequence

1-by-LHARQ_Seq integer vector.

One-based HARQ process indices for the internal HARQ scheduling sequence, based on same transport block size in all active subframes.

See footnote.

  1. When creating the HARQ process sequence, TTI bundling is considered. The length of the HARQ process sequence, LHARQ_Seq = 10 × lcm(NHARQProcesses × ttiPerBundle,sum(activesfs)) / sum(activesfs). The number of TTI per bundle, ttiPerBundle = 4. The sum(activesfs) is the number of active subframes. For FDD, all subframes are active and for TDD, all uplink subframes are active. The uplink supports NHARQProcesses allowed by the standard and also the transport block sizes are the same for all the active subframes.

SRS Substructure

The substructure SRS contains these fields:

Parameter FieldValuesDescription
NTxAnts

1 (default), 2, 4

Number of transmission antennas.

BWConfig

0, 1, 2, 3, 4, 5, 6, 7

Cell-specific SRS Bandwidth Configuration value (CSRS)

BW

0, 1, 2, 3

UE-specific SRS Bandwidth value (BSRS)

ConfigIdx

Integer from 0 to 644

Configuration index (ISRS) for UE-specific periodicity (TSRS) and subframe offset (Toffset).

TxComb

0 or 1

Transmission comb. Controls SRS positions; SRS is transmitted in 6 carriers per resource block on odd (1) and even (0) resource indices.

HoppingBW

0, 1, 2, 3

SRS Frequency hopping configuration index (bhop)

FreqPosition

Integer from 0 to 23

Frequency domain position (nRRC)

CyclicShift

0 (default), integer from 0 to 7

UE-specific cyclic shift (nSRScs)

SeqGroup

0 (default), integer from 0 to 29

SRS sequence group number (u)

SeqIdx

0 or 1

Base sequence number (v)

SubframeConfig

Integer from 0 to 15

Sounding reference signal (SRS) subframe configuration

The following fields are present only when DuplexMode is set to 'TDD'.
NF4RachPreambles

0, 1, 2, 3, 4, 5, 6

Number of RACH preamble frequency resources of Format 4 in UpPTS

OffsetIdx

0 or 1

Choice of SRS Subframe Offset in the case of 2 ms SRS periodicity. This parameter indexes the two SRS Subframe Offset entries in the row specified by the ConfigIdx parameter in table 8.2-2 of TS 36.213 for the SRS Configuration Index.

More About

collapse all

UL Reference Channel Options

Initialization choices available for the uplink reference channel and associated top-level configuration defaults include:

Reference channelsReference channels (continued)Reference channels (continued)

A1-1 (6 RB, QPSK, R=1/3)

A1-2 (15 RB, QPSK, R=1/3)

A1-3 (25 RB, QPSK, R=1/3)

A1-4 (3 RB, QPSK, R=1/3)

A1-5 (9 RB, QPSK, R=1/3)

A2-1 (6 RB, 16QAM, R=2/3)

A2-2 (15 RB, 16QAM, R=2/3)

A2-3 (25 RB, 16QAM, R=2/3)

A3-1 (1 RB, QPSK, R=1/3)

A3-2 (6 RB, QPSK, R=1/3)

A3-3 (15 RB, QPSK, R=1/3)

A3-4 (25 RB, QPSK, R=1/3)

A3-5 (50 RB, QPSK, R=1/3)

A3-6 (75 RB, QPSK, R=1/3)

A3-7 (100 RB, QPSK, R=1/3)

A4-1 (1 RB, 16QAM, R=3/4)

A4-2 (1 RB, 16QAM, R=3/4)

A4-3 (6 RB, 16QAM, R=3/4)

A4-4 (15 RB, 16QAM, R=3/4)

A4-5 (25 RB, 16QAM, R=3/4)

A4-6 (50 RB, 16QAM, R=3/4)

A4-7 (75 RB, 16QAM, R=3/4)

A4-8 (100 RB, 16QAM, R=3/4)

A5-1 (1 RB, 64QAM, R=5/6)

A5-2 (6 RB, 64QAM, R=5/6)

A5-3 (15RB, 64QAM, R=5/6)

A5-4 (25 RB, 64QAM, R=5/6)

A5-5 (50 RB, 64QAM, R=5/6)

A5-6 (75 RB, 64QAM, R=5/6)

A5-7 (100 RB, 64QAM, R=5/6)

A7-1 (3 RB, 16QAM, R=3/4)

A7-2 (6 RB, 16QAM, R=3/4)

A7-3 (12 RB, 16QAM, R=3/4)

A7-4 (25 RB, 16QAM, R=3/4)

A7-5 (25 RB, 16QAM, R=3/4)

A7-6 (25 RB, 16QAM, R=3/4)

A8-1 (3 RB, QPSK, R=1/3)

A8-2 (6 RB, QPSK, R=1/3)

A8-3 (12 RB, QPSK, R=1/3)

A8-4 (25 RB, QPSK, R=1/3)

A8-5 (25 RB, QPSK, R=1/3)

A8-6 (25 RB, QPSK, R=1/3)

A11-1 (3 RB, QPSK, R=11/27)

A17-1 (6 RB, 256QAM, R=5/6)

A17-2 (15 RB, 256QAM, R=5/6)

A17-3 (25 RB, 256QAM, R=5/6)

A17-4 (50 RB, 256QAM, R=5/6)

A17-5(75 RB, 256QAM, R=5/6)

A17-6 (100 RB, 256QAM, R=5/6)

A3-2-9RB (9 RB, QPSK, R=1/3)

A4-3-9RB (9 RB, 16QAM, R=3/4)

The fields in the output configuration structure, rmccfgout, are initialized in accordance with the reference channels defined in TS 36.104, Annex A.

  • 'A3-2-9RB' and 'A4-3-9RB' are custom RMC configured for non-standard bandwidth but with the same code rate as the standardized version.

  • 'A11-1' enables TTI bundling and the corresponding HARQ pattern (enhanced HARQ pattern for FDD).

References

[1] 3GPP TS 36.101. “Evolved Universal Terrestrial Radio Access (E-UTRA); User Equipment (UE) Radio Transmission and Reception.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network. URL: https://www.3gpp.org.

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

[3] 3GPP TS 36.212. “Evolved Universal Terrestrial Radio Access (E-UTRA); Multiplexing and channel coding.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network. URL: https://www.3gpp.org.

Version History

Introduced in R2014a

expand all