Main Content

nrDCIDecode

Decode downlink control information (DCI)

Description

dcibits = nrDCIDecode(softbits,K,L) decodes the input softbits and returns the decoded DCI bits of length K. The function implements the inverse of the features specified in TS 38.212 Sections 7.3.4, 7.3.3, and 7.3.2 [1], such as rate recovery, polar decoding, and cyclic redundancy check (CRC) decoding. L specifies the list length used for polar decoding.

[dcibits,mask] = nrDCIDecode(softbits,K,L) also looks for a cyclic redundancy check (CRC) error in the DCI decoding. If mask is not equal to 0, either an error has occurred or the input CRC has been masked. When there are no CRC errors, mask is the actual value used for masking the CRC bits.

example

[dcibits,mask] = nrDCIDecode(softbits,K,L,rnti) specifies a radio network temporary identifier (RNTI). You can use this syntax when the value of rnti masks the CRC parity bits at the transmit end. When you specify rnti and there are no CRC errors, mask equals to 0.

Examples

collapse all

Create a random sequence of binary values corresponding to a DCI message of 32 bits. Encode the message based on the specified RNTI and rate-matched DCI codeword length. The RNTI masks the CRC parity bits.

K = 32; 
rnti = 100; 
E = 240; 
dciBits = randi([0 1],K,1);
dcicw = nrDCIEncode(dciBits,rnti,E);

Decode the soft bits representing the DCI codeword dcicw by specifying the RNTI used for the CRC masking. Set the length of the polar decoding list to 8.

L = 8;
[recBits,mask] = nrDCIDecode(1-2*dcicw,K,L,rnti)
recBits = 32x1 int8 column vector

   1
   1
   0
   1
   1
   0
   0
   1
   1
   1
      ⋮

mask = uint32
    0

Verify that the transmitted and received message bits are identical.

isequal(recBits,dciBits)
ans = logical
   1

Verify that the decoding is without error. As the decoding specified the RNTI used for masking, a mask value of 0 indicates no error.

mask
mask = uint32
    0

Input Arguments

collapse all

Coded block of soft bits, specified as a column vector of real numbers.

Data Types: double | single

Length of decoded output in bits, specified as an integer from 12 to 140.

Data Types: double

Length of polar decoding list, specified as a power of two.

Data Types: double

RNTI of the UE, specified as an integer from 0 to 65,535.

Data Types: double

Output Arguments

collapse all

Decoded DCI message bits, returned as a K-by-1 column vector of binary values. The message bits were transmitted on a single physical downlink control channel (PDCCH).

Data Types: int8

Result of CRC decoding, returned as a nonnegative integer less than or equal to 216–1. If mask is not equal to 0, either an error has occurred or the CRC has been masked. When there are no errors, mask is the actual value used for masking the CRC bits.

Data Types: uint32

Compatibility Considerations

expand all

Behavior changed in R2020a

References

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

Extended Capabilities

See Also

Functions

Introduced in R2018b