## Downlink Shared Channel

The physical downlink shared channel is used to transmit the downlink shared channel (DL-SCH). The DL-SCH is the transport channel used for transmitting downlink data (a transport block).

### DL-SCH Coding

To create the PDSCH payload, a transport block of length *A*,
denoted as $${a}_{0},{a}_{1},\dots ,{a}_{A-1}$$,
undergoes transport block CRC attachment, code block segmentation
and code block CRC attachment, channel coding, rate matching and code
block concatenation. The coding steps are illustrated in the following
block diagram.

#### Transport Block CRC Attachment

A cyclic redundancy check (CRC) is used for error detection in transport blocks. The entire transport block is used to calculate the CRC parity bits. The transport block is divided by a cyclic generator polynomial, described as $${g}_{CRC24A}$$ in section 5.1.1 of [1], to generate 24 parity bits. These parity bits are then appended to the end of transport block.

#### Code Block Segmentation and CRC Attachment

The input block of bits to the code segmentation block is denoted by $${b}_{0},{b}_{1},\dots ,{b}_{B-1}$$, where $$B=A+24$$. In LTE, a minimum and maximum code block size is specified so the block sizes are compatible with the block sizes supported by the turbo interleaver.

Minimum code block size = 40 bits

Maximum code block size,

*Z*= 6144 bits

If the length of the input block, *B*,
is greater than the maximum code block size, the input block is segmented.

When the input block is segmented, it is segmented into $$C=\left[B/\left(Z-L\right)\right]$$,
where *L* is 24. Therefore, $$C=\left[B/6120\right]$$ code
blocks.

Each code block has a 24-bit CRC attached to the end, calculated as described in Transport Block CRC Attachment, but the generator polynomial, described as $${g}_{CRC24B}$$ in section 5.1.1 of [1] is used.

If required, filler bits are appended to the start of the segment so that the code block sizes match a set of valid turbo interleaver block sizes, as shown in the following figure.

If no segmentation is needed, only one code block is produced.
If *B* is less than the minimum size, filler bits
(zeros) are added to the beginning of the code block to achieve a
total of 40 bits.

#### Channel Coding

The code blocks undergo turbo coding. Turbo coding is a form of forward error correction that improves the channel capacity by adding redundant information. The turbo encoder scheme used is a Parallel Concatenated Convolutional Code (PCCC) with two recursive convolutional coders and a “contention-free” Quadratic Permutation Polynomial (QPP) interleaver, as shown in the following figure.

The output of the encoder is three streams, $${d}_{k}^{(0)}$$, $${d}_{k}^{(1)}$$, and $${d}_{k}^{(2)}$$, to achieve a code rate of 1/3.

**Constituent Encoders. **The input to the first constituent encoder is the input bit
stream to the turbo coding block. The input to the second constituent
encoder is the output of the QPP interleaver, a permutated version
of the input sequence.

There are two output sequences from each encoder, a systematic $$({x}_{k},{{x}^{\prime}}_{k})$$ and a parity $$({z}_{k},{{z}^{\prime}}_{k})$$. Only one of the systematic sequences ($${x}_{k}$$) is used as an output because the other ($${{x}^{\prime}}_{k}$$) is simply a permutated version of the chosen systematic sequence. The transfer function for each constituent encoder is given by the following equation.

$$G(D)=\left[1,\frac{{g}_{1}(D)}{{g}_{0}(D)}\right]$$

The first element, 1, represents the systematic output transfer function. The second element, $$\left({\scriptscriptstyle \frac{{g}_{1}(D)}{{g}_{0}(D)}}\right)$$, represents the recursive convolutional output transfer function.

$${g}_{0}(D)=1+{D}^{2}+{D}^{3}$$

$${g}_{1}(D)=1+D+{D}^{3}$$

The output for each sequence can be calculated using the transfer function.

The encoder is initialized with all zeros. If the code block
to be encoded is the 0-th and filler bits (*F*) are
used, the input to the encoder ($${c}_{k}$$)
is set to zero and the output ($${x}_{k}$$)
and ($${z}_{k}$$)
set to `<NULL>`

for $$k=0,\dots ,F-1$$.

**Trellis Termination for Turbo Encoder. **In a normal convolutional coder, the coder is driven to an *all
zeros* state upon termination by appending zeros onto the
end of the input data stream. Since the decoder knows the start and
end state of the encoder, it can decode the data. Driving a recursive
coder to an all zeros state using this method is not possible. To
overcome this problem, trellis termination is used.

Upon termination, the tail bits are fed back to the input of each encoder using a switch. The first three tail bits are used to terminate each encoder.

**The QPP Interleaver. **The role of the interleaver is to spread the information bits
such that in the event of a burst error, the two code streams are
affected differently, allowing data to still be recovered.

The output of the interleaver is a permutated version of the input data, as shown in the following equations.

$${{c}^{\prime}}_{i}={c}_{\Pi (i)},i=0,1,\dots ,(K-1)$$

$$\Pi (i)=\left({f}_{1}i+{f}_{2}{i}^{2}\right)\mathrm{mod}K$$

The variable *K* is the input length. The variables
*f*_{1} and
*f*_{2} are coefficients chosen depending on
*K*, in table 5.1.3-3 of [1]. For
example, *K*=40, *f*_{1}=3, and
*f*_{2}=10, yields the following sequence.

$$\Pi (i)=0,13,6,19,12,25,18,31,24,37,30,3,36,9,2,15,8,21,14,27,20,33,26,39,32,5,38,\dots $$

#### Rate Matching

The rate matching block creates an output bitstream with a desired code rate. As the number of bits available for transmission depends on the available resources the rate matching algorithm is capable of producing any arbitrary rate. The three bitstreams from the turbo encoder are interleaved followed by bit collection to create a circular buffer. Bits are selected and pruned from the buffer to create an output bitstream with the desired code rate. The process is illustrated in the following figure.

**Sub-block Interleaver. **The three sub-block interleavers used in the rate matching block
are identical. Interleaving is a technique to reduce the impact of
burst errors on a signal as consecutive bits of data will not be corrupted.

The sub-block interleaver reshapes the encode bit sequence,
row-by-row, to form a matrix with $${C}_{Subblock}^{TC}=32$$ columns
and $${R}_{Subblock}^{TC}$$ rows.
The variable $${R}_{Subblock}^{TC}$$ is
determined by finding the minimum integer such that the number of
encoded input bits is $$D\le \left({R}_{Subblock}^{TC}\times {C}_{Subblock}^{TC}\right)$$.
If $$\left({R}_{Subblock}^{TC}\times {C}_{Subblock}^{TC}\right)>D$$, *N _{D}*

`<NULL>`

’s
are appended onto the front of the encoded sequence. In this case, $${N}_{D}+D=\left({R}_{Subblock}^{TC}\times {C}_{Subblock}^{TC}\right)$$. For blocks $${d}_{k}^{(0)}$$ and $${d}_{k}^{(1)}$$, inter-column permutation is performed on the matrix to reorder the columns as shown in the following pattern.

0, 16, 8, 24, 4, 20, 12, 28, 2, 18, 10, 26, 6, 22, 14, 30, 1, 17, 9, 25, 5, 21, 13, 29, 3, 19, 11, 27, 7, 23, 15, 31 |

The output of the block interleaver for blocks $${d}_{k}^{(0)}$$ and $${d}_{k}^{(1)}$$ is the bit sequence read out column-by-column from the inter-column permutated matrix to create a stream $${K}_{\pi}=\left({R}_{Subblock}^{TC}\times {C}_{Subblock}^{TC}\right)$$ bits long.

For block $${d}_{k}^{(2)}$$,
the elements within the matrix are permutated separately based on
the permutation pattern shown above, but modified to create a permutation
which is a function of the variables $${R}_{Subblock}^{TC}$$, $${C}_{Subblock}^{TC}$$, *k*,
and $${K}_{\pi}$$.
This process creates three interleaved bitstreams.

$${d}_{k}^{(0)}\to {v}_{k}^{(0)}$$

$${d}_{k}^{(1)}\to {v}_{k}^{(1)}$$

$${d}_{k}^{(2)}\to {v}_{k}^{(2)}$$

**Bit Collection, Selection, and Transmission. **The bit collection stage creates a virtual circular buffer by
combining the three interleaved encoded bit streams.

$${v}_{k}^{(1)}$$ and $${v}_{k}^{(2)}$$ are combined by interlacing successive values of $${v}_{k}^{(1)}$$ and $${v}_{k}^{(2)}$$. This combination is then appended onto the end of $${v}_{k}^{(0)}$$ to create the circular buffer $${w}_{k}$$ shown in the following figure.

Interlacing allows equal levels of protection for each parity sequence.

Bits are then selected and pruned from the circular buffer to create an output sequence length which meets the desired code rate.

The Hybrid Automatic Repeat Request (HARQ) error correction
scheme is incorporated into the rate-matching algorithm of LTE. For
any desired code rate the coded bits are output serially from the
circular buffer from a starting location, given by the redundancy
version (RV), wrapping around to the beginning of the buffer if the
end of the buffer is reached. `NULL`

bits are discarded.
Different RVs and hence starting points allow for the retransmission
of selected data. Being able to select different starting points enables
the following two main methods of recombining data at the receiver
in the HARQ process.

Chase combining — retransmissions contain the same data and parity bit.

Incremental redundancy — retransmissions contain different information so the receiver gains knowledge upon each retransmission.

#### Code Block Concatenation

In this stage, the rate matched code blocks are concatenated back together. This task is done by sequentially concatenating the rate-matched blocks together to create the output of the channel coding, $${f}_{k}$$ for $$k=0,\dots ,G-1$$.

### PDSCH Processing

One or two coded transport blocks (codewords) can be transmitted simultaneously on the PDSCH depending on the precoding scheme used (see section 2.5). The coded DL-SCH code-words undergo scrambling, modulation, layer mapping, precoding and resource element mapping as shown in the following figure.

#### PDSCH Scrambling

The codewords are bit-wise multiplied with an orthogonal sequence
and a UE-specific scrambling sequence to create the following sequence
of symbols for each codeword, *q*.

$${\tilde{b}}^{(q)}(0),\dots ,{\tilde{b}}^{(q)}\left({M}_{bit}^{(q)}-1\right)$$

The variable $${M}_{bit}^{(q)}$$ is
the number of bits in codeword *q*.

The scrambling sequence is pseudo-random, created using a length-31 Gold sequence generator and initialized using the slot number within the radio network temporary identifier associated with the PDSCH transmission, $${n}_{RNTI}$$, the cell ID, $${N}_{ID}^{cell}$$, the slot number within the radio frame, $${n}_{s}$$, and the codeword index, $$q=\left\{0,1\right\}$$, at the start of each subframe.

$${c}_{init}={n}_{RNTI}\times {2}^{14}+q\times {2}^{13}+\lfloor \frac{{n}_{s}}{2}\rfloor \times {2}^{9}+{N}_{ID}^{cell}$$

Scrambling with a cell-specific sequence serves the purpose of intercell interference rejection. When a UE descrambles a received bitstream with a known cell-specific scrambling sequence, interference from other cells will be descrambled incorrectly and therefore only appear as uncorrelated noise.

#### Modulation

The scrambled codewords undergo QPSK, 16QAM, 64QAM, or 256QAM modulation. This choice created flexibility to allow the scheme to maximize the data transmitted depending on the channel conditions.

#### Layer Mapping

The complex symbols are mapped to one, two, or four layers depending
on the number of transmit antennas used. The complex modulated input
symbols, *d*(*i*), are mapped onto *v* layers, $${x}^{(0)}(i),{x}^{(1)}(i),\dots ,{x}^{(v-1)}(i)$$.

If a single antenna port is used, only one layer is used. Therefore, $${x}^{(0)}(i)={d}^{(0)}(i)$$.

**Layer Mapping for Transmit Diversity. **If transmitter diversity is used, the input symbols are mapped
to layers based on the number of layers.

**Two Layers**— Even symbols are mapped to layer 0 and odd symbols are mapped to layer 1, as shown in the following figure.**Four Layers**— The input symbols are mapped to layers sequentially, as shown in the following figure.If the total number of input symbols is not an integer multiple of four ($${M}_{symb}^{(0)}mod4\ne 0$$) two null symbols are appended onto the end. This creates a total number of symbols that is an integer multiple of four because the original number of symbols is always an integer multiple of two.

**Layer Mapping for Spatial Multiplexing. **In the case of spatial multiplexing, the number of layers used
is always less or equal to the number of antenna ports used for transmission
of the physical channel.

#### Precoding

Three types of precoding are available in LTE for the PDSCH—spatial multiplexing, transmit diversity, and single antenna port transmission. Within spatial multiplexing, there are two schemes—precoding with large delay cyclic delay diversity (CDD), also known as open loop spatial multiplexing, and precoding without CDD, also known as closed loop spatial multiplexing. The various types of precoding are illustrated in the following tree diagram.

The precoder takes a block from the layer mapper, $${x}^{(0)}(i),{x}^{(1)}(i),\dots ,{x}^{(v-1)}(i)$$,
and generates a sequence for each antenna port, $${y}^{(p)}(i)$$.
The variable *p* is the transmit antenna port number,
and can assume values of {0}, {0,1}, or {0,1,2,3}.

**Single Antenna Port Precoding. **For transmission over a single antenna port, no processing is
carried out, as shown in the following equation.

$${y}^{(p)}(i)={x}^{(0)}(i)$$

**Precoding for Large Delay CDD Spatial Multiplexing. **CDD operation applies a cyclic shift, which is a delay of $${N}_{FFT}/v$$ samples
to each antenna, where $${N}_{FFT}$$ is
the size of the OFDM FFT. The use of CDD improves the robustness of
performance by randomizing the channel frequency response, reducing
the probability of deep fading.

Precoding with CDD for spatial multiplexing is defined by the following equation.

$$\left(\begin{array}{c}{y}^{(0)}(i)\\ \vdots \\ {y}^{(p-1)}(i)\end{array}\right)=W(i)\times D(i)\times U\times \left(\begin{array}{c}{x}^{(0)}(i)\\ \vdots \\ {x}^{(v-1)}(i)\end{array}\right)$$

Values of the precoding matrix, $$W(i)$$,
of size $$P\times v$$,
are selected from a codebook configured by the eNodeB and user equipment.
The precoding codebook is described in Spatial Multiplexing Precoding Codebook. Every group of symbols
at index *i* across all available layers can use
a different precoding matrix, if required. The supporting matrices, $$D(i)$$and *U*,
are given for a various numbers of layers in the following table.

Number of layers, $$\upsilon $$ | U | $$D(i)$$ |
---|---|---|

2 | $$\frac{1}{\sqrt{2}}\left(\begin{array}{cc}1& 1\\ 1& {e}^{-j2\pi /2}\end{array}\right)$$ | $$\left(\begin{array}{cc}1& 0\\ 0& {e}^{-j2\pi i/2}\end{array}\right)$$ |

3 | $$\frac{1}{\sqrt{3}}\left(\begin{array}{ccc}1& 1& 1\\ 1& {e}^{-j2\pi /3}& {e}^{-j4\pi /3}\\ 1& {e}^{-j4\pi /3}& {e}^{-j8\pi /3}\end{array}\right)$$ | $$\left(\begin{array}{ccc}1& 0& 0\\ 0& {e}^{-j2\pi i/3}& 0\\ 0& 0& {e}^{-j4\pi i/3}\end{array}\right)$$ |

4 | $$\frac{1}{2}\left(\begin{array}{cccc}1& 1& 1& 1\\ 1& {e}^{-j2\pi /4}& {e}^{-j4\pi /4}& {e}^{-j6\pi /4}\\ 1& {e}^{-j4\pi /4}& {e}^{-j8\pi /4}& {e}^{-j12\pi /4}\\ 1& {e}^{-j6\pi /4}& {e}^{-j12\pi /4}& {e}^{-j18\pi /4}\end{array}\right)$$ | $$\left(\begin{array}{cccc}1& 0& 0& 0\\ 0& {e}^{-j2\pi i/4}& 0& 0\\ 0& 0& {e}^{-j4\pi i/4}& 0\\ 0& 0& 0& {e}^{-j6\pi i/4}\end{array}\right)$$ |

**Precoding for Spatial Multiplexing without CDD. **Precoding for spatial multiplexing without CDD is defined by
the following equation.

$$\left(\begin{array}{c}{y}^{(0)}(i)\\ \vdots \\ {y}^{(p-1)}(i)\end{array}\right)=W(i)\times \left(\begin{array}{c}{x}^{(0)}(i)\\ \vdots \\ {x}^{(v-1)}(i)\end{array}\right)$$

Values of the precoding matrix, $$W(i)$$,
of size $$P\times v$$,
are selected from a codebook configured by the eNodeB and user equipment.
Every group of symbols at index *i* across all available
layers can use a different precoding matrix if required. For more
information on the precoding codebook, see Spatial Multiplexing Precoding Codebook.

**Spatial Multiplexing Precoding Codebook. **The precoding matrices for antenna ports {0,1} are given in
the following table.

Codebook index | Number of layers, $$\upsilon $$ | |
---|---|---|

1 | 2 | |

0 | $$\frac{1}{\sqrt{2}}\left(\begin{array}{c}1\\ 1\end{array}\right)$$ | $$\frac{1}{\sqrt{2}}\left(\begin{array}{cc}1& 0\\ 0& 1\end{array}\right)$$ |

1 | $$\frac{1}{\sqrt{2}}\left(\begin{array}{c}1\\ -1\end{array}\right)$$ | $$\frac{1}{2}\left(\begin{array}{cc}1& 1\\ 1& -1\end{array}\right)$$ |

2 | $$\frac{1}{\sqrt{2}}\left(\begin{array}{c}1\\ j\end{array}\right)$$ | $$\frac{1}{2}\left(\begin{array}{cc}1& 1\\ j& -j\end{array}\right)$$ |

3 | $$\frac{1}{\sqrt{2}}\left(\begin{array}{c}1\\ -j\end{array}\right)$$ | — |

The precoding matrices for antenna ports {0,1,2,3} are given in the following table.

The precoding matrix, $${W}_{n}^{\left\{s\right\}}$$, is the matrix defined by the columns in set $$\left\{s\right\}$$ by the following equation.

$${W}_{n}=I-2{u}_{n}{u}_{n}^{H}/{u}_{n}^{H}{u}_{n}$$

In the preceding equation, *I* is
a 4-by-4 identity matrix. The vector $${u}_{n}$$ is
given in the preceding table.

**Precoding for Transmit Diversity. **Precoding for transmit diversity is available on two or four
antenna ports.

#### Valid Codeword, Layer and Precoding Scheme Combinations

As a quick reference of the information described in previous sections, the valid numbers of codewords and layers for each precoding scheme are shown in the following tables..

#### Mapping to Resource Elements

For each of the antenna ports used for transmission of the PDSCH, the block of complex valued symbols, $${y}^{(p)}(i)$$, are mapped in sequence to resource elements not occupied by the PCFICH, PHICH, PDCCH, PBCH, or synchronization and reference signals. The number of resource elements mapped to is controlled by the number of resource blocks allocated to the PDSCH. The symbols are mapped by increasing the subcarrier index and mapping all available REs within allocated resource blocks for each OFDM symbol as shown in the following figure.

## 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.

## See Also

`lteDLSCH`

| `ltePDSCH`

| `ltePDSCHIndices`

| `lteDLResourceGrid`

| `lteDLSCHInfo`

| `lteDLSCHDecode`

| `lteLayerMap`

| `lteLayerDemap`

| `lteDLPrecode`

| `lteDLDeprecode`

| `lteTurboEncode`

| `lteTurboDecode`

| `ltePDSCHPRBS`

| `lteCRCEncode`

| `lteCRCDecode`

| `lteCodeBlockSegment`

| `lteCodeBlockDesegment`

| `lteRateMatchTurbo`

| `lteRateRecoverTurbo`