# lteDCI

## Syntax

• ```[dcistr,dcibits] = lteDCI(enb,istr)``` example
• ```[dcistr,dcibits] = lteDCI(istr)```
• ```[dcistr,dcibits] = lteDCI(istr,ibits)```

## Description

example

``````[dcistr,dcibits] = lteDCI(enb,istr)``` creates and manipulates downlink control information (DCI) messages of the formats defined in TS 36.212, Section 5.3.3 of [2]. `lteDCI` creates a DCI message as it's output based on the cell-wide settings `enb` and the input structure `istr`. This function returns a DCI message in two forms:a structure `dcistr` whose fields match the associated DCI formata vector `dcibits` representing the set of message fields mapped to the information bit payload (including any zero padding).`lteDCI` can be used to create default DCI or to blindly decode DCI format types.The field names associated with the `dcistr` output structure depend on the DCI format field in `istr`.By default, all values are set to zero. However, if any of the DCI fields are already present in the input `istr`, their values are carried forward into `dcistr`. Carrying the values forward allows for easy initialization of DCI field values, particularly the resource allocation type.Note:   Our implementation assumes symmetric link bandwidth unless you specifically assign different values to `NULRB and NDLRB`. If the number of resource blocks is only initialized in one link direction then the initialized number of resource blocks (```NULRB or NDLRB```) is used for both uplink and downlink. When this mapping is used, no warning is displayed. An error occurs if neither, ```NULRB or NDLRB```, is defined.```
``````[dcistr,dcibits] = lteDCI(istr)``` creates a DCI message. The fields described in the structure `enb` must be present as part of the input structure `istr`. The `dcistr`, in this case, also carries forward the `NDLRB` and `istr.DCIFormat` fields. This syntax is deprecated and will be removed in a future release. ```
``````[dcistr,dcibits] = lteDCI(istr,ibits)``` creates a DCI where all the message fields are initialized from the input bit vector, `ibits`. In this case, `ibits` is treated as the DCI information bit payload; `dcibits` is equal to `ibits`. The length of `ibits` must be one of the valid sizes for the format type and `NULRB`/`NDLRB` (see `lteDCIInfo` for details). The fields described in the `enb` structure must be present as part of the `istr` input structure. This syntax differs from the previous one in that the `istr` input argument does not require the `DCIFormat` field. If this field is not present, the function attempts to decode the format blindly from the length of the payload vector, `ibits`. ```

## Examples

collapse all

### Create DCI

This example shows the creation of downlink control information (DCI) with Format 1A and distributed virtual resource block (VRB).

Create a DCI with Format 1A and distributed VRB allocation type. A distributed VRB allocation is configured by setting `AllocationType` to 1.

```enb = struct('NDLRB',50,'CellRefP',1,'DuplexMode','FDD'); istr = struct('DCIFormat','Format1A','AllocationType',1); dcistr = lteDCI(enb,istr) ```
```dcistr = DCIFormat: 'Format1A' CIF: 0 AllocationType: 1 Allocation: [1x1 struct] ModCoding: 0 HARQNo: 0 NewData: 0 RV: 0 TPCPUCCH: 0 TDDIndex: 0 ```

## Input Arguments

collapse all

### `enb` — eNodeB cell-wide settingsstructure

eNodeB cell-wide settings, specified as a structure that can contain the following parameter fields.

Parameter FieldRequired or OptionalValuesDescription
`NDLRB`Required

Scalar integer (6, ..., 110). Standard bandwidth values are 6, 15, 25, 50, 75, and 100. `NDLRB` will also accept the standardized bandwidths in string format from the set {'1.4MHz', '3MHz', ‘5MHz', '10MHz', ‘15MHz', ‘20MHz'}.

Number of downlink (DL) resource blocks (RBs)

`NULRB`Required

Positive scalar integer

Number of uplink (UL) resource blocks (RBs)

`CellRefP`Optional

1 (default), 2, 4

Number of cell-specific reference signal (CRS) antenna ports

`DuplexMode`Optional

`'FDD'` (default), `'TDD'`

Duplexing mode, specified as:

• `'FDD'` for Frequency Division Duplex or

• `'TDD'` for Time Division Duplex

### `istr` — Input structurestructure

Input structure, specified as a structure that can contain the following fields.

Parameter FieldRequired or OptionalValuesDescription
`DCIFormat`Required,

except when `ibits` is input then `DCIFormat` is optional

`'Format0'`, `'Format1'`, `'Format1A'`, `'Format1B'`, `'Format1C'`, `'Format1D'`, `'Format2'`, `'Format2A'`, `'Format2B'`, `'Format2C'`, `'Format2D'`, `'Format3'`, `'Format3A'`, `'Format4'`

Downlink control information (DCI) format type string

### `ibits` — Input bitsvector

Input bits, specified as a column vector. `ibits` is treated as the DCI information bit payload that is, `dcibits` == `ibits`. The length of `ibits` must be one of the valid sizes for the format type and `NULRB`/`NDLRB` (see `lteDCIInfo` for details). When you specify `ibits`, the structure `istr` does not require the `DCIFormat` field. If the `DCIFormat` field is not present, `lteDCI` attempts to decode the format from the length of the payload vector `ibits`.

Data Types: `double`

## Output Arguments

collapse all

### `dcistr` — DCI message structurestructure

DCI message structure, returned as a structure whose fields match the associated DCI format contents.

The field names associated with `dcistr` depend on the DCI format field in `istr`. By default, all values are set to zero. However, if any of the DCI fields are already present in the input `istr`, their values are carried forward into `dcistr`. Carrying the values forward allows for easy initialization of DCI field values, particularly the resource allocation type. The `dcistr` also carries forward the `NDLRB` and `DCIFormat` fields supplied in `istr`.

The following table presents the fields associated with each DCI format as defined in TS 36.212, Section 5.3.3 [2].

DCI FormatsDCISTR FieldsSizeDescription
`'Format0'``DCIFormat`-`'Format0'`
`FreqHopping`1-bit PUSCH frequency hopping flag
`Allocation`variable Resource block assignment/allocation
`ModCoding`5-bits Modulation, coding scheme and redundancy version
`NewData`1-bit New data indicator
`TPC`2-bits PUSCH TPC command
`CShiftDMRS`3-bits Cyclic shift for DM RS
`CQIReq`1-bit CQI request
`TDDIndex`2-bits For TDD config 0, this field is the Uplink Index.

For TDD Config 1–6, this field is the Downlink Assignment Index.

Not present for FDD.

`'Format1'``DCIFormat    `-`'Format1'`
`AllocationType`

1-bit

Resource allocation header: type 0, type 1

(only if downlink bandwidth is >10 PRBs)

`Allocation   `variableResource block assignment/allocation
`ModCoding    `5-bitsModulation and coding scheme
`HARQNo       `3 bits (FDD)

4 bits (TDD)

HARQ process number
`NewData      `1-bit New data indicator
`RV           `2-bits Redundancy version
`TPCPUCCH     `2-bits PUCCH TPC command
`TDDIndex`2-bits For TDD config 0, this field is not used.

For TDD Config 1–6, this field is the Downlink Assignment Index.

Not present for FDD.

`'Format1A'``DCIFormat    ` -`'Format1A'`
`AllocationType`1-bit VRB assignment flag: 0 (localized), 1 (distributed)
`Allocation   `variable Resource block assignment/allocation
`ModCoding    `5-bits Modulation and coding scheme
`HARQNo       `3 bits (FDD)

4 bits (TDD)

HARQ process number
`NewData      `1-bitNew data indicator
`RV           `2-bits Redundancy version
`TPCPUCCH     `2-bits PUCCH TPC command
`TDDIndex`2-bits For TDD config 0, this field is not used.

For TDD Config 1–6, this field is the Downlink Assignment Index.

Not present for FDD.

`'Format1B'``DCIFormat    ` -`'Format1B'`
`AllocationType`1-bit VRB assignment flag: 0 (localized), 1 (distributed)
`Allocation   `variable Resource block assignment/allocation
`ModCoding    `5-bits Modulation and coding scheme
`HARQNo       `3 bits (FDD)

4 bits (TDD)

HARQ process number
`NewData      `1-bitNew data indicator
`RV           `2-bits Redundancy version
`TPCPUCCH     `2-bits PUCCH TPC command
`TPMI         `2 bits for two antennas

4 bits for four antennas

PMI information
`PMI          `1-bitPMI confirmation
`TDDIndex`2-bits For TDD config 0, this field is not used.

For TDD Config 1–6, this field is the Downlink Assignment Index.

Not present for FDD.

`'Format1C'``DCIFormat    ` - `'Format1C'`
`Allocation   `variable Resource block assignment/allocation
`ModCoding     `5-bits Modulation and coding scheme
`'Format1D'``DCIFormat    ` - `'Format1D'`
`AllocationType`1-bit VRB assignment flag: 0 (localized), 1 (distributed)
`Allocation   `variable Resource block assignment/allocation
`ModCoding    `5-bits Modulation and coding scheme
`HARQNo       `3 bits (FDD)

4 bits (TDD)

HARQ process number
`NewData      `1-bitNew data indicator
`RV           `2-bits Redundancy version
`TPCPUCCH     `2-bits PUCCH TPC command
`TPMI         `2 bits for two antennas

4 bits for four antennas

Precoding TPMI information
`DlPowerOffset`1-bit Downlink power offset
`TDDIndex`2-bits For TDD config 0, this field is not used.

For TDD Config 1–6, this field is the Downlink Assignment Index.

Not present for FDD.

`'Format2'``DCIFormat    ` - `'Format2'`
`AllocationType`1-bit Resource allocation header: type 0, type 1

(only if downlink bandwidth is >10 PRBs)

`Allocation   `variable Resource block assignment/allocation
`TPCPUCCH`2-bits PUCCH TPC command
`HARQNo       `3 bits (FDD)

4 bits (TDD)

HARQ process number
`SwapFlag     `1-bitTransport block to codeword swap flag
`ModCoding1   `5-bits Modulation and coding scheme for transport block 1
`NewData1     `1-bit

New data indicator for transport block 1

`RV1          `2-bits Redundancy version for transport block 1
`ModCoding2   `5-bits Modulation and coding scheme for transport block 2
`NewData2     `1-bit New data indicator for transport block 2
`RV2          `2-bits Redundancy version for transport block 2
`PrecodingInfo`3 bits for two antennas

6 bits for four antennas

Precoding information
`TDDIndex`2-bitsFor TDD config 0, this field is not used.

For TDD Config 1–6, this field is the Downlink Assignment Index.

Not present for FDD.

`'Format2A'``DCIFormat    ` -`'Format2A'`
`AllocationType`1-bit Resource allocation header: type 0, type 1

(only if downlink bandwidth is >10 PRBs)

`Allocation   `variable Resource block assignment/allocation
`TPCPUCCH     `2-bits PUCCH TPC command
`HARQNo       `3 bits (FDD)

4 bits (TDD)

HARQ process number
`SwapFlag     `1-bitTransport block to codeword swap flag
`ModCoding1   `5-bits Modulation and coding scheme for transport block 1
`NewData1     `1-bit New data indicator for transport block 1
`RV1          `2-bits Redundancy version for transport block 1
`ModCoding2   `5-bits Modulation and coding scheme for transport block 2
`NewData2     `1-bit New data indicator for transport block 2
`RV2          `2-bits Redundancy version for transport block 2
`PrecodingInfo`0 bits for two antennas

2 bits for four antennas

Precoding information
`TDDIndex`2-bits For TDD config 0, this field is not used.

For TDD Config 1–6, this field is the Downlink Assignment Index.

Not present for FDD.

`'Format2B'``DCIFormat` - `'Format2B'`
`AllocationType`1-bit Resource allocation header: type 0, type 1

(only if downlink bandwidth is >10 PRBs)

`Allocation`variable Resource block assignment/allocation
`TPCPUCCH`2-bits PUCCH TPC command
`HARQNo`3 bits (FDD)

4 bits (TDD)

HARQ process number
`ScramblingId`1-bitScrambling identity
`ModCoding1   `5-bits Modulation and coding scheme for transport block 1
`NewData1     `1-bit New data indicator for transport block 1
`RV1`2-bits Redundancy version for transport block 1
`ModCoding2`5-bits Modulation and coding scheme for transport block 2
`NewData2`1-bit New data indicator for transport block 2
`RV2`2-bits Redundancy version for transport block 2
`TDDIndex`2-bits For TDD config 0, this field is not used.

For TDD Config 1–6, this field is the Downlink Assignment Index.

Not present for FDD.

`'Format2C'``DCIFormat`-`'Format2C'`
`AllocationType`1-bit Resource allocation header: type 0, type 1

(only if downlink bandwidth is >10 PRBs)

`Allocation`variable Resource block assignment/allocation
`TPCPUCCH`2-bits PUCCH TPC command
`HARQNo`3 bits (FDD)

4 bits (TDD)

HARQ process number
`TxIndication`3-bitsAntenna port(s), scrambling identity, and number of layers indicator
`SRSRequest`variableSRS request. Only present for TDD.
`ModCoding1   `5-bits Modulation and coding scheme for transport block 1
`NewData1     `1-bit New data indicator for transport block 1
`RV1`2-bits Redundancy version for transport block 1
`ModCoding2`5-bits Modulation and coding scheme for transport block 2
`NewData2`1-bit New data indicator for transport block 2
`RV2`2-bits Redundancy version for transport block 2
`TDDIndex`2-bits For TDD config 0, this field is not used.

For TDD Config 1–6, this field is the Downlink Assignment Index.

Not present for FDD.

`'Format2D'``DCIFormat`-`'Format2D'`
`AllocationType`1-bit Resource allocation header: type 0, type 1

(only if downlink bandwidth is >10 PRBs)

`Allocation`variable Resource block assignment/allocation
`TPCPUCCH`2-bits PUCCH TPC command
`HARQNo`3 bits (FDD)

4 bits (TDD)

HARQ process number
`TxIndication`3-bitsAntenna port(s), scrambling identity, and number of layers indicator
`SRSRequest`variableSRS request. Only present for TDD.
`ModCoding1   `5-bits Modulation and coding scheme for transport block 1
`NewData1     `1-bit New data indicator for transport block 1
`RV1`2-bits Redundancy version for transport block 1
`ModCoding2`5-bits Modulation and coding scheme for transport block 2
`NewData2`1-bit New data indicator for transport block 2
`RV2`2-bits Redundancy version for transport block 2
`REMappingAndQCL`2 bits

PDSCH RE Mapping and Quasi-Co-Location Indicator

`'Format3'``DCIFormat`- `'Format3'`
`TPCCommands`variable TPC commands for PUCCH and PUSCH
`'Format3A'``DCIFormat`- `'Format3A'`
`TPCCommands`variable TPC commands for PUCCH and PUSCH
`'Format4'``DCIFormat`- `'Format4'`
`Allocation`variableResource block assignment/allocation
`TPC`2-bits PUSCH TPC command
`CShiftDMRS`3-bits Cyclic shift for DM RS
`TDDIndex`2-bits For TDD config 0, this field is Uplink Index.

For TDD Config 1–6, this field is the Downlink Assignment Index.

Not present for FDD.

`CQIReq`variableCQI request
`SRSRequest`2-bits SRS request
`AllocationType`1-bits Resource allocation header: non-hopping PUSCH resource allocation type 0, type 1
`ModCoding`5-bits Modulation, coding scheme and redundancy version
`NewData`1-bits New data indicator
`ModCoding1`5-bits Modulation and coding scheme for transport block 1
`NewData1`1-bits New data indicator for transport block 1
`ModCoding2`5-bits Modulation and coding scheme for transport block 2
`NewData2`1-bits New data indicator for transport block 2
`PrecodingInfo`3 bits for two antennas

6 bits for four antennas

Precoding information

The `DCIFormat` fields in the table take a string indicating the DCI format. All other fields take a string of zeros and ones of the right size.

The `ModCoding` fields in the table correspond to the variable IMCS defined in TS 36.213, Section 7.1.7, Table 7.1.7.1-1 [3]. This field expects to be assigned a decimal number. The call to `lteDCI` serializes `ModCoding` into a 5-bit field value. For example, `ModCoding` field for 64QAM modulation (Qm) and transport block index (ITBS) 15 is assigned 17 (a decimal number).

The fields included in the `Allocation` structure vary based on the format type as outlined in the tables the follow. All fields take a string of zeroes and ones with the bit values.

Resource Allocation type 0
DCI Formats `Allocation` FieldsSize (bits)Description
`'Format1''Format2''Format2A''Format2B'``Bitmap`variableBitmap value in terms of RBG, type string

Resource Allocation type 1
DCI Formats `Allocation` FieldsSize (bits)Description
`'Format1''Format2''Format2A''Format2B'``Bitmap`variableBitmap value in terms of RBG, type string
`RBSubset`2 bitsSelected resource blocks subset indicator
`Shift  `1 bitShift of the resource allocation span indicator

Resource Allocation type 2 (localized)
DCI Formats `Allocation` FieldsSize (bits)Description
`'Format1A''Format1B''Format1C''Format1D'``RIV`variableResource indication value

Resource Allocation type 2 (distributed)
DCI Formats `Allocation` FieldsSize (bits)Description
`'Format1A''Format1B''Format1C''Format1D'``RIV`variableResource indication value
`Gap`1 bitGap value: 0 (gap1), 1 (gap2)

DCI Formats `Allocation` Fields Size (bits)Description
`'Format0'``RIV`variableResource indication value

DCI Formats `Allocation` Fields Size (bits) Description
`'Format0'``RIV`variableResource indication value
`HoppingBits`variable

When number of hopping bits is 1, `HoppingBits` value can be 0 or 1

When number of hopping bits is 2, `HoppingBits` value can be 00, 01, 10, or 11

See TS 36.213, Table 8.4–2 [3]

Data Types: `struct`

### `dcibits` — DCI message in bit payload formvector

DCI message in bit payload form, returned as a column vector. `dcibits` represents the set of message fields mapped to the information bit payload (including any zero-padding).

Data Types: `int8`

collapse all

### Resource allocation type 0

In type 0 resource allocation, a bit map represents a resource block group (RBG) allocated to a UE. `P` gives the RBG size, which can be deduced from TS 36.213, Table 7.1.6.1-1 of [3] for given system bandwidth. The numbers of bits in `Bitmap` field are equal to $⌈NDLRB/P⌉$. Each bit in the `Bitmap` selects a small contiguous group whose size depends on the bandwidth (RBG: 1…4). The maximum resource block (RB) coverage of any type 0 allocation is the entire bandwidth that is, a type 0 allocation with all the bits in bitmap set to ‘1' is equivalent to the entire bandwidth.

Example — 50 RB Bandwidth, the number of bits in `Bitmap` are 17. Each bit in the 17-bit bitmap selects a group of three RB (apart from the last group which only contains two RB for this BW). Each bit is associated with a group of RE with the same color.

### Resource allocation type 1

In type 1 resource allocation, a bit map indicates physical resource blocks inside a selected resource block group subset p, where 0 ≤ p < P. The maximum resource block (RB) coverage of any type 1 allocation is a subset of entire bandwidth. A type 1 allocation, even with all the bits in the `Bitmap` set to ‘1' does not span the entire bandwidth. Each bit in the bitmap selects a single RB from ‘islands' of small contiguous groups whose size (RBG) and separation depend on the total bandwidth. This grouping provides the provision of selecting a single RB without turning on any other RB.

In type 1, the resource block assignment signaling is split into three-parts:

1. — the`RBSubset` field part represents the selected resource block group subset

2. — the `Shift` field part indicates whether to apply offset when interpreting the bitmap

3. — the `Bitmap` filed part contains the bitmap that indicates to the UE specific physical resource block inside the resource block group subset.

In comparison to type 0, the bitmap size for type 1 is always short by "$⌈{\mathrm{log}}_{2}\left(P\right)⌉+1$ " number of bits, where P is defined as in resource allocation type 0.

Example – 50 RB Bandwidth, the number of bits in `Bitmap` are 14 (3 bits short as compare to type 0 due to `RBSubset` and `Shift` parameters). Each bit in the 14-bit bitmap selects an individual RB inside a selected subset. The following figure illusturates setting all the bits in `Bitmap` field to ‘1' for different subsets and offset values.

### Resource allocation type 2

In type 2 resource allocation, physical resource blocks are not directly allocated. Instead, virtual resource blocks are allocated which are then mapped onto physical resource blocks. type 2 allocation supports both localized and distributed virtual resource block allocation differentiated by one bit-flag. The starting point of virtual resource block and the length in terms of contiguously allocated virtual resource block can be derived from Resource Indication Value (RIV) signaled within the DCI.

Example – 50 RB Bandwidth, a UE is allocated of 25 resource blocks (LCRBs=25), starting from resource block 10 (RBstart=10) in the frequency domain. To calculate the RIV value, refer to the formula given in TS 36.213, Section 7.1.6.3 [3], which yields RIV = 1210. This RIV is signaled in DCI and the UE could unambiguously derive the starting resource block and the number of allocated resource blocks from RIV again.

For uplink non-hopping resource allocation, the rules for type 2 localized resource allocation apply for deriving the resource allocation from the RIV value.

When `FreqHopping` is set to 1, uplink hopping resource allocation is available. For uplink hopping resource allocation, two types of hopping are used, Type 1 PUSCH Hopping and Type 2 PUSCH Hopping. Do not confuse these types with downlink resource allocation type 1 and type 2 described earlier. Type 1 PUSCH Hopping is calculated using the RIV value and a number of parameters signalled by higher layers. Type 2 PUSCH Hopping is calculated using a predefined pattern, a function of the subframe and frame number, which is defined in TS 36.211, Section 5.3.4 [1]. The fundamental set of resource blocks used as part of the hopping is calculated via the rules for type 2 localized resource allocation from the RIV value, except either 1 or 2 (depending on system bandwidth) hopping bits have been deducted from the resource allocation bitmap. These hopping bits specify whether Type 1 or Type 2 PUSCH Hopping is used, and for the case of 2 bits, variations of the position of the Type 1 hopping in the frequency domain. The definition of the hopping bits can be found in TS 36.213, Table 8.4-2 [3]. Bandwidth dependency for number of hopping bits allocated follows the following rule:

• If system BW (`NULRB<=49`), number of hopping bits is 1 and `HoppingBits` value can be 0 or 1

• If system BW (`NULRB>49` ), number of hopping bits is 2 and `HoppingBits` value can be 00, 01, 10, or 11

## References

[1] 3GPP TS 36.211. "Physical Channels and Modulation." 3rd Generation Partnership Project; Technical Specification Group Radio Access Network; Evolved Universal Terrestrial Radio Access (E-UTRA). URL: http://www.3gpp.org.

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

[3] 3GPP TS 36.213. "Physical layer procedures." 3rd Generation Partnership Project; Technical Specification Group Radio Access Network; Evolved Universal Terrestrial Radio Access (E-UTRA). URL: http://www.3gpp.org.