Main Content

setTransportBlock

Load transport block into UL-SCH or DL-SCH encoder

Description

The setTransportBlock function loads a transport block into an uplink shared channel (UL-SCH) encoder or downlink shared channel (DL-SCH) encoder System object™. Call this function before calling the corresponding encoder.

setTransportBlock(encUL,trblk) loads the trblk transport block into the specified UL-SCH encoder encUL. When trblk specifies a single transport block, the function loads trblk into transport block number 0.

setTransportBlock(encDL,trblk) loads the trblk transport block into the specified DL-SCH encoder encDL. When trblk specifies a single transport block, the function loads trblk into transport block number 0.

setTransportBlock(encDL,trblk,trblkID) loads the transport block into the specified DL-SCH encoder for the specified transport block number trblkID.

example

setTransportBlock(___,harqID) loads the transport block for the specified hybrid automatic repeat-request (HARQ) process number harqID. Specify harqID in addition to the input arguments in any of the previous syntaxes.

example

setTransportBlock(encUL,trblk,Name=Value) and setTransportBlock(encDL,trblk,Name=Value) specify options using one or more name-value arguments. For example, to specify transport block number 1, set BlockID to 1. (since R2024a)

Examples

collapse all

Generate a random sequence of binary values corresponding to one transport block of length 5120.

trBlkLen = 5120;
trBlk = randi([0 1],trBlkLen,1,'int8');

Create and configure an UL-SCH encoder System object for use with multiple HARQ processes.

encUL = nrULSCH;
encUL.MultipleHARQProcesses = true;

Load the transport block into the UL-SCH encoder, specifying HARQ process number 2.

harqID = 2;
setTransportBlock(encUL,trBlk,harqID);

Call the encoder with QPSK modulation scheme, 3 transmission layers, an output length of 10,002 bits, and redundancy version 3. The encoder applies the UL-SCH processing chain to the transport block loaded into the object for HARQ process number 2.

mod = 'QPSK';
nLayers = 3;
outlen = 10002;
rv = 3;
codedTrBlock = encUL(mod,nLayers,outlen,rv,harqID);

Verify that the encoded transport block has the required number of bits.

isequal(length(codedTrBlock),outlen)
ans = logical
   1

Generate a random sequence of binary values corresponding to one transport block of length 5120.

trBlkLen = 5120;
trBlk = randi([0 1],trBlkLen,1,'int8');

Create and configure a DL-SCH encoder System object for use with multiple HARQ processes.

encDL = nrDLSCH;
encDL.MultipleHARQProcesses = true;

Load transport block trBlk for transport block number 0 into the DL-SCH encoder, specifying HARQ process number 2.

harqID = 2;
trBlkID = 0;
setTransportBlock(encDL,trBlk,trBlkID,harqID);

Call the encoder with QPSK modulation scheme, 3 transmission layers, an output length of 10,002 bits, and redundancy version 3. The encoder applies the DL-SCH processing chain to the transport block loaded into the object for HARQ process number 2.

mod = 'QPSK';
nLayers = 3;
outlen = 10002;
rv = 3;
codedTrBlock = encDL(mod,nLayers,outlen,rv,harqID);

Verify that the encoded transport block has the required number of bits.

isequal(length(codedTrBlock),outlen)
ans = logical
   1

Input Arguments

collapse all

UL-SCH encoder, specified as an nrULSCH System object. The object implements the UL-SCH processing chain specified in TS 38.212 Section 6.2.

Transport block, specified as one of these values:

  • Binary column vector — Use this option to load a single transport block.

  • Cell array of one or two binary column vectors — Use this option to load one or two transport blocks. For DL-SCH processing, the two-element cell array option applies only when the transport block number trblkID is not specified.

Data Types: int8 | double | logical

DL-SCH encoder, specified as an nrDLSCH System object. The object implements the DL-SCH processing chain specified in TS 38.212 Section 7.2.

Transport block number in DL-SCH processing, specified as 0 or 1.

Data Types: double

HARQ process number, specified as an integer from 0 to 31. To specify a value other than 0, set the MultipleHARQProcesses object property to true.

Data Types: double

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: setTransportBlock(encUL,trblk,HARQI=10,BlockID=1)

Since R2024a

HARQ process number, specified as an integer from 0 to 31. To specify a value other than 0, set the MultipleHARQProcesses object property to true.

Data Types: double

Since R2024a

Transport block number, specified as 0 or 1.

Data Types: double

References

[1] 3GPP TS 38.212. “NR; Multiplexing and channel coding.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2019a

expand all

See Also

Functions

Objects