Main Content

NR Downlink Control Information Formats

This example introduces the NR downlink control information (DCI) formats and their definitions, and shows how to use MATLAB® classes to represent DCI formats and encode and decode DCI information bit payloads.

Introduction

NR and LTE use downlink control information (DCI) to send dynamic physical layer control messages from the network to each UE. This information can be system-wide or user-equipment-specific (UE-specific), and contains aspects of uplink and downlink data scheduling, HARQ management, power control, and other signalling. The sidelink uses sidelink control information (SCI) to carry PHY control messages between UEs via a similar mechanism.

NR defines a number of different DCI formats, each serving a different usage, for example, scheduling of PUSCH or PDSCH. Each format specifies an ordered set of bit fields, where each field conveys distinct transmission information, such the frequency resource assignment, time resource assignment, redundancy version, and modulation and coding. The number of bits associated with a field may be fixed, or be dependent on other protocol state, for example, the active BWP size. All the fields map, in order of the format definition, onto a set of information bits, which are then encoded and carried on the physical downlink control channel (PDCCH). The mapping is such that the most significant bit of each field is mapped to the lowest-order information bit for that field. For NR DCI, both padding of zero bits and truncation may be applied to align the payload sizes according to different DCI formats. This size alignment simplifies the blind decoding process and reduces the number of unique payload sizes that have to be searched for.

The fields defined in a format may also depend on the type of RNTI associated with the control information, for example, system information, paging, power control, and user scheduling. This RNTI value scrambles the CRC attached to the information bit payload sent on the PDCCH.

The DCI formats supported by NR Release 16 are:

DCI FormatUsage0_0Scheduling of PUSCH in one cell0_1Scheduling of one or multiple PUSCH in one cell, or indicating downlink feedback information for configured grant PUSCH (CG-DFI)0_2Scheduling of PUSCH in one cell1_0Scheduling of PDSCH in one cell1_1Scheduling of PDSCH in one cell, and/or triggering one shot HARQ-ACK codebook feedback1_2Scheduling of PDSCH in one cell2_0Notifying a group of UEs of the slot format, available RB sets, COT duration and search space set group switching2_1Notifying a group of UEs of the PRB(s) and OFDM symbol(s) where UE may assume no transmission is intended for the UE2_2Transmission of TPC commands for PUCCH and PUSCH2_3Transmission of a group of TPC commands for SRS transmissions by one or more UEs2_4Notifying a group of UEs of the PRB(s) and OFDM symbol(s) where UE cancels the corresponding UL transmission from the UE2_5Notifying the availability of soft resources as defined in Clause 9.3.1 of TS 38.4732_6Notifying the power saving information outside DRX Active Time for one or more UEs3_0Scheduling of NR sidelink in one cell3_1Scheduling of LTE sidelink in one cell

Representing DCI Formats with MATLAB Classes

MATLAB classes can be used to model DCI formats and fields, where a separate class definition represents each format, and the fields of each format are ordered properties of the class.

In this example, the MATLAB class BitField represents a single DCI field. Each field object has properties to store the field value, current bit size, and a set of possible sizes, which may depend on the protocol state. This class also defines methods to map the field value to and from information bits.

The MATLAB class MessageFormat provides a base class from which to derive specific format classes. Each derived format class defines a set of properties of type BitField for all DCI fields, in the order that they appear for that format. The MessageFormat base class also defines methods to map all derived class DCI fields to and from information bits. Additionally, the MessageFormat class overloads the display, property assignment, and reference functionality to provide easy, direct access to the field values. This class supports optional zero-padding for width alignment, but does not support automatic alignment truncation.

DCI Format 1_0 with CRC Scrambled by SI-RNTI

NR DCI formats often have a large number of fields whose sizes depend on the semi-static UE RRC protocol state. This example uses DCI format 1_0 scrambled by SI-RNTI due to its simple field sequence.

This table describes the ordered fields and bitwidths associated with DCI format 1_0 when the CRC is scrambled by SI-RNTI.

DCI Format 1_0 field (SI-RNTI)SizeFrequency domain resource assignmentlog2(NRBDL,BWP(NRBDL,BWP+1)/2)bits, whereNRBDL,BWPis the size of CORESET 0Time domain resource assignment4 bits as defined in Clause 5.1.2.1 of TS 38.214VRB-to-PRB mapping1 bit according to TS 38.212 Table 7.3.1.2.2-5Modulation and coding scheme5 bits as defined in Clause 5.1.3 of TS 38.214 Table 5.1.3.1-1Redundancy version2 bits as defined in TS 38.212 Table 7.3.1.1.1-2System information indicator 1 bit as defined in TS 38.212 Table 7.3.1.2.1-2Reserved bits17 bits for operation in a cell with shared spectrum channel access; otherwise 15 bits

Define a DCIFormat1_0_SIRNTI class for the format by deriving from MessageFormat and specifying a BitField property for each format field. In this format, the first and last fields have bitwidths that depend on protocol state parameters (CORESET 0 size and whether the cell has shared spectrum access) and therefore the field widths are set in the class constructor. This ensures that the bitwidths are sized correctly before using DCIFormat1_0_SIRNTI.

% DCI format 1_0 with CRC scrambled by SI-RNTI
classdef DCIFormat1_0_SIRNTI < MessageFormat
            
    properties
                
        FrequencyDomainResources = BitField();    % Field size depends on CORESET 0 size provided to the constructor
        TimeDomainResources = BitField(4);        % 4 bits
        VRBToPRBMapping = BitField(1);            % 1 bit
        ModulationCoding = BitField(5);           % 5 bit MCS
        RedundancyVersion = BitField(2);          % 2 bit RV
        SystemInformationIndicator = BitField(1); % 1 bit
        ReservedBits = BitField(15);              % 15 bits reserved (17 bits if Release 16 shared spectrum is enabled in constructor)
    
    end
         
    methods
        
        function obj = DCIFormat1_0_SIRNTI(NDLRB,sharedspectrum)
        % Class constructor
          ...
        end

    end

end

DCI Format 1_0 with CRC Scrambled by SI-RNTI

Use DCIFormat1_0_SIRNTI objects to map field values to information bit payloads for this format, and to parse information bits back into field values.

% Create DCI format 1_0 object for SI-RNTI and the given cell configuration parameters
CORESET0NRB = 24;
Rel16SharedSpectrum = 0;
dciformat1_0 = DCIFormat1_0_SIRNTI(CORESET0NRB,Rel16SharedSpectrum);

% The display customization prints the BitField property values directly
% along with the format padding and alignment related properties
display(dciformat1_0)
dciformat1_0 = 
  DCIFormat1_0_SIRNTI with field values:

      FrequencyDomainResources: 0
           TimeDomainResources: 0
               VRBToPRBMapping: 0
              ModulationCoding: 0
             RedundancyVersion: 0
    SystemInformationIndicator: 0
                  ReservedBits: 0

   Writeable properties:
                  AlignedWidth: []

   Read-only properties:
                         Width: 37

% Use the info function to get the individual field sizes
info(dciformat1_0,'fieldsizes')
ans = struct with fields:
      FrequencyDomainResources: 9
           TimeDomainResources: 4
               VRBToPRBMapping: 1
              ModulationCoding: 5
             RedundancyVersion: 2
    SystemInformationIndicator: 1
                  ReservedBits: 15

% Get the non-padded bitwidth for this format and configuration
% 
% Without any further alignment padding, the number of information bits 
% is given by the Width property
dciformat1_0.Width
ans = 37
% Set the aligned width if the information bit payload should
% be padded to a specific size 
dciformat1_0.AlignedWidth = 40
dciformat1_0 = 
  DCIFormat1_0_SIRNTI with field values:

      FrequencyDomainResources: 0
           TimeDomainResources: 0
               VRBToPRBMapping: 0
              ModulationCoding: 0
             RedundancyVersion: 0
    SystemInformationIndicator: 0
                  ReservedBits: 0

   Writeable properties:
                  AlignedWidth: 40

   Read-only properties:
                         Width: 40
                  PaddingWidth: 3

% Create a DCI message for transmission on PDCCH
txdci = dciformat1_0;

% Set the DCI field values
% 
% The assignment customization allows the BitField property values to be set directly 
txdci.FrequencyDomainResources = 10;
txdci.TimeDomainResources = 3;
txdci.ModulationCoding = 3;
txdci.RedundancyVersion = 3;
display(txdci);
txdci = 
  DCIFormat1_0_SIRNTI with field values:

      FrequencyDomainResources: 10
           TimeDomainResources: 3
               VRBToPRBMapping: 0
              ModulationCoding: 3
             RedundancyVersion: 3
    SystemInformationIndicator: 0
                  ReservedBits: 0

   Writeable properties:
                  AlignedWidth: 40

   Read-only properties:
                         Width: 40
                  PaddingWidth: 3

% Map the DCI format fields into information payload bits
dciinfobits = toBits(txdci)
dciinfobits = 40x1 int8 column vector

   0
   0
   0
   0
   0
   1
   0
   1
   0
   0
      ⋮

% Map DCI format fields from information bits
rxdci = fromBits(dciformat1_0,dciinfobits)
rxdci = 
  DCIFormat1_0_SIRNTI with field values:

      FrequencyDomainResources: 10
           TimeDomainResources: 3
               VRBToPRBMapping: 0
              ModulationCoding: 3
             RedundancyVersion: 3
    SystemInformationIndicator: 0
                  ReservedBits: 0

   Writeable properties:
                  AlignedWidth: 40

   Read-only properties:
                         Width: 40
                  PaddingWidth: 3

isequal(txdci,rxdci)
ans = logical
   1

% Encode the DCI information bits and send on PDCCH

ncellid = 1;                    % NCellID
si_rnti = hex2dec('FFFF');      % SI-RNTI for PDCCH in a UE-specific search space
K = dciformat1_0.Width;         % Number of DCI message bits
E = 2*288;                      % Number of bits for PDCCH candidate

% Encode DCI
dciCW = nrDCIEncode(dciinfobits,si_rnti,E);
% Create PDCCH QPSK symbols
sym = nrPDCCH(dciCW,ncellid,0);

% Add noise to PDCCH symbols 
EbNo = 3;                       % EbNo in dB
bps = 2;                        % Bits per symbol, 2 for QPSK
EsNo = EbNo + 10*log10(bps);
snrdB = EsNo + 10*log10(K/E);
rxSym = awgn(sym,snrdB,'measured');

% Recover softbits from PDCCH symbols
noiseVar = 10.^(-snrdB/10);     % Assumes unit signal power
rxCW = nrPDCCHDecode(rxSym,ncellid,0,noiseVar);

% Decode DCI information bits
listLen = 8;                    % Polar decoding list length
decDCIBits = nrDCIDecode(rxCW,K,listLen,si_rnti);

% Map DCI format field from info bits
rxdci = fromBits(dciformat1_0,decDCIBits)
rxdci = 
  DCIFormat1_0_SIRNTI with field values:

      FrequencyDomainResources: 10
           TimeDomainResources: 3
               VRBToPRBMapping: 0
              ModulationCoding: 3
             RedundancyVersion: 3
    SystemInformationIndicator: 0
                  ReservedBits: 0

   Writeable properties:
                  AlignedWidth: 40

   Read-only properties:
                         Width: 40
                  PaddingWidth: 3

isequal(rxdci,txdci)
ans = logical
   1

For more information about the NR downlink control channel, see Modeling Downlink Control Information and Downlink Control Processing and Procedures. For more information about applying MATLAB classes, see Representing Structured Data with Classes.

References

  1. 3GPP TS 38.212. "NR; Multiplexing and channel coding (Release 16)." 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

Related Topics