4G/LTE - Basic Procedures

 

 

 

 

PDCCH (Physical Downlink Control Channel)

 

PDCCH is a physical channel that carries downlink control information (DCI) and it has characteristics as described below.

  • Mapped to the first L OFDM symbols in every downlink subframe.
  • Number of the symbols (L) for PDCCH can be 1,2, or 3. (This 'L' value is informed to UE by PCFICH)
  • Number of the symbols for PDCCH is specified by PCFICH
  • PDCCH carries DCIs and the DCI carries Transport format, resource allocation, H-ARQ information related to DL-SCH, UL-SCH and PCH.
  • PDCCH also carries DCI 0 which is for UL Scheduling assignment (e.g, UL Grants).
  • Multiple PDCCH are supported and a UE monitors a set of control channels.
  • Modulation Scheme is QPSK.
  • PDCCH is like HS-SCCH for HSDPA and PDCCH for R99, E-AGCH/E-RGCH for HSUPA
  • Even though PDCCH has a lot of functions, not all of them are used at the same time so PDCCH configuration should be done flexibly.
  • If you are interested in the detailed information mapping in this channel, refer to 6.8.1 of 36.211. Following is the initial descrition on this section.

The physical downlink control channel carries scheduling assignments and other control information. A physical controlchannel is transmitted on an aggregation of one or several consecutive control channel elements (CCEs), where acontrol channel element corresponds to 9 resource element groups. The number of resource-element groups not assigned to PCFICH or PHICH is REG N . The CCEs availablein the system are numbered from 0 and N_CCE-1 , where N_CCE = floor(N_REG/9) . The PDCCH supports multiple formats as listed in Table 6.8.1-1. A PDCCH consisting of nconsecutive CCEs may only start on a CCE fulfilling imod n = 0 , where i is the CCE number.

 

In terms of Channel Process, PDSCH goes through following steps. In case of PDCCH, the most complicated (also the confusing process) would be related to Step (7). Refer to CCE Index Calculation/PDCCH Decoding/Blind Decoding for the detailed process of how each bits of PDCCH symbols find its place in canditate area. Also refer to PDCCH Resource Allocation, and refer to PDCCH Candidate and Search Space for basic terminologies related to PDCCH resource allocation.

If you want to look into the final result of PDCCH resource allocation in visualized form as well as data processing process, refer to Matlab : Toolbox : PDCCH page.

 

 

< CRC Attachment >

 

 

When there is no UE Tx Antenna selection, CRC attachment and Masking goes as follows. (This is the point where RNTI do the most important role)

 

 

When there is UE Tx Antenna selection, CRC attachment and Masking goes as follows.

 

 

 

< Channel Coding >

 

 

< Table 5.1.3-2 of TS36.212 >

 

 

< Multiplexing/Scrambling >

 

 

 

c(i) here is a Gold Sequence. If you are not familiar with the concept of a Gold Sequence, refere to GoldCode page.

 

 

 

PDCCH Encoding in srsRAN

If you are interested in this process at the source code level of the protocol stack, I would suggest you to look into the openSource srsRAN. Following APIs can be good places for you to start. This list is from the master-branch of the code that was downloaded on Oct 8,2021

  • srsran_rm_conv_tx() -> \lib\src\phy\fec\turbo\rm_conv.c

  • srsran_convcoder_encode() -> \lib\src\phy\fec\convolutional\convcoder.c

  • srsran_pdcch_dci_encode_conv() -> \lib\src\phy\phch\pdcch.c

  • srsran_pdcch_dci_encode() -> \lib\src\phy\phch\pdcch.c

  • srsran_scrambling_b_offset() -> \lib\src\phy\scrambling\scrambling.c

  • srsran_mod_modulate() -> \lib\src\phy\modem\mod.c

  • srsran_layermap_diversity() -> \lib\src\phy\mimo\layermap.c

  • srsran_precoding_diversity() -> \lib\src\phy\mimo\precoding.c

  • srsran_regs_pdcch_put_offset() -> \lib\src\phy\phch\regs.c
  • srsran_pdcch_encode() -> \lib\src\phy\phch\pdcch.c

 

 

 

PDCCH Decoding in srsRAN

 

If you are interested in this process at the source code level of the protocol stack, I would suggest you to look into the openSource srsRAN. Following APIs can be good places for you to start. This list is from the master-branch of the code that was downloaded on Oct 8,2021

  • srsran_crc_checksum() -> \lib\src\phy\fec\crc.c

  • srsran_bit_pack() -> \lib\src\phy\utils\bit.c

  • srsran_viterbi_decode_f() -> \src\phy\fec\convolutional\viterbi.c

  • srsran_rm_conv_rx() -> \lib\src\phy\fec\turbo\rm_conv.c

  • srsran_pdcch_dci_decode() -> \lib\src\phy\phch\pdcch.c

  • srsran_pdcch_decode_msg() -> \lib\src\phy\phch\pdcch.c