主要内容

lteRateMatchTurbo

R2026b

Turbo rate matching

Description

[out,rminfo] = lteRateMatchTurbo(in,outlen,rv) performs rate matching of input data in to create the output vector out with length outlen. rminfo is a structure that contains intermediate rate matching calculations such as soft buffer sizes, code block dimensions, and buffer output offsets. The function performs subblock interleaving, bit collection and bit selection, and pruning defined for turbo encoded data. For more information, see Section 5.1.4.1 of [1].

The specified rv controls the redundancy version of the output. The bit selection stage assumes a quadrature phase shift-keying (QPSK) transmission mapped onto a single layer and no restriction on the number of soft bits, as in an uplink shared channel (UL-SCH).

example

[out,rminfo] = lteRateMatchTurbo(in,outlen,rv,chs) allows additional control of the bit selection stage through selection of parameters for the soft buffer size and physical channel configuration in the chs input structure.

Examples

collapse all

Rate match an input vector of 132 bits to a length of 100 with the RV parameter set to 0.

codedBlklen = 132;
invec = ones(codedBlklen,1);
outlen = 100;
rv = 0;
rmatched = lteRateMatchTurbo(invec,outlen,rv);
size(rmatched)
ans = 1×2

   100     1

Input Arguments

collapse all

Input data, specified as a vector or a cell array of vectors, assumed to be code blocks.

If you specify this input as a cell array, the function rate matches each vector separately and concatenates the results into a single output vector out. The length of each nonempty input vector must be an integer multiple of 3.

The function treats negative values in this input as <NULL> filler bits inserted during code block segmentation, and does not process them during rate matching.

Example: ones(132,1)

Data Types: double | cell

Output vector length, specified as a nonnegative integer.

Data Types: double

Redundancy version control, specified as a nonnegative integer. If PMCHTimeInterleavingN is not present in the chs structure, rv must be in the range [0, 3]. If PMCHTimeInterleavingN is present, rv must be in the range [0, PMCHTimeInterleavingN–1].

Data Types: double

Channel transmission configuration, specified as a structure. It allows additional control of the bit selection stage through parameters for the soft buffer size and physical channel configuration.

For DL-SCH and PCH turbo coded transport channels that place a limit on the soft buffer size for a transport block, you can control the soft buffer dimensions by including either NIR or the combined set of NSoftbits, TxScheme, and DuplexMode. If DuplexMode is 'TDD', also specify TDDConfig. If included, NIR takes precedence for controlling the soft buffer dimensions. The above soft bit rules apply if PMCHTimeInterleavingN is not present.

For the multicast channel (MCH) transport channel, if PMCHTimeInterleavingN is present and set to 1 or [] then there is no limit on the number of soft bits. If PMCHTimeInterleavingN is present and greater than 1, you can control the soft buffer dimensions by including either NIR or the combined set of NSoftbits, ScalingFactorBeta, and PMCHTimeInterleavingM. If included, NIR takes precedence.

When neither NIR nor NSoftbits are present, or they are set to zero, the function assumes an uplink or sidelink turbo coded transport channel and places no limit on the number of soft bits.

chs can contain the following fields.

Modulation scheme, specified as 'QPSK', '16QAM', '64QAM', '256QAM', or '1024QAM'.

Data Types: char | string

Number of transmission layers for transport block, specified as a positive integer in the interval [1, 8]. DL-SCH rate matching only. Not necessary if TxScheme is set to 'Port0', 'TxDiversity', 'Port5', or 'Port8'.

Data Types: double

PDSCH transmission scheme, specified as one of the following options.

Transmission schemeDescription
'Port0'Single antenna port, port 0
'TxDiversity'Transmit diversity
'CDD'Large delay cyclic delay diversity scheme
'SpatialMux'Closed loop spatial multiplexing
'MultiUser'Multi-user MIMO
'Port5'Single-antenna port, port 5
'Port7-8'Single-antenna port, port 7, when NLayers = 1. Dual layer transmission, ports 7 and 8, when NLayers = 2.
'Port8'Single-antenna port, port 8
'Port7-14'Up to eight layer transmission, ports 7–14

Data Types: char | string

Soft buffer size for the entire input transport block, specified as a nonnegative integer.

Data Types: double

Total number of soft channel bits, specified as a nonnegative integer.

Data Types: double

Duplex mode, specified as 'FDD' or 'TDD'.

Data Types: char | string

Uplink or downlink configuration, specified as a nonnegative scalar integer in the interval [0, 6]. Optional. Only required if DuplexMode is set to 'TDD'.

Data Types: double

Since R2026b

Number of retransmissions of a single transport block in a time-interleaved physical multicast channel (PMCH) set, specified as [] or an integer in the range [1, 16]. Optional. Use this field for MCH transport channel rate matching.

If PMCHTimeInterleavingN is greater than 1, the function performs rate matching for an MCH configured with time interleaving. If PMCHTimeInterleavingN is 1 or empty, the function performs rate matching for an MCH without time interleaving.

In both cases, rv must be in the range [0, PMCHTimeInterleavingN–1].

Data Types: double

Since R2026b

Fractional coefficient for MCH soft buffer size calculation, specified as a scalar in the range [0, 1]. Optional. The function uses this input only when PMCHTimeInterleavingN is greater than 1.

Data Types: double

Since R2026b

Number of different transport blocks in a time-interleaved PMCH set, specified as an integer in the range [4, 32]. Optional. The function uses this input only when PMCHTimeInterleavingN is greater than 1.

Data Types: double

Data Types: struct

Output Arguments

collapse all

Turbo rate matched output, returned as a numeric column vector.

Data Types: double | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64

Since R2026b

Rate matching information, returned as a structure containing the following fields.

Soft buffer size for the transport block, returned as a nonnegative integer. A value of 0 means no limit.

Data Types: double

Total number of code blocks, returned as a nonnegative integer.

Data Types: double

Soft buffer size divided by the number of code blocks, returned as a nonnegative integer. A value of 0 means no limit.

Data Types: double

Circular buffer lengths (encoded code block lengths) of the code blocks, returned as a vector.

Data Types: double

Soft buffer sizes for the code blocks, returned as a vector.

Data Types: double

Rate matched sizes of the code blocks, returned as a vector.

Data Types: double

Buffer output offsets for the code blocks, returned as a vector.

Data Types: double

Data Types: struct

References

[1] 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 R2013b

expand all