Channel Estimation and Symbol Equalization for PDCCH

The Physical Downlink Control Channel (PDCCH) is a crucial channel used for transmitting control information from the base station (gNB) to user equipment (UE). Channel estimation and symbol equalization for PDCCH are essential processes that ensure reliable reception of control information despite channel impairments and variations. Here’s an overview of these processes:

  1. Channel Estimation for PDCCH: Channel estimation for PDCCH involves estimating the characteristics of the radio channel between the gNB and the UE. This estimation is necessary to compensate for the effects of fading, interference, and other impairments that can degrade the received signal quality. In the context of PDCCH, channel estimation typically involves the following steps:

    • Reference Signal (RS) Transmission: The gNB periodically transmits known reference signals (RS) along with the PDCCH data. These RSs are designed to facilitate accurate channel estimation at the UE.

    • Channel Estimation at UE: Upon receiving the PDCCH signal along with the RSs, the UE performs channel estimation using the received RSs. Common techniques for channel estimation include least squares estimation, minimum mean square error (MMSE) estimation, and linear interpolation.

    • Frequency Domain Equalization (FDE): After estimating the channel response, the UE applies frequency domain equalization techniques to compensate for the channel distortions. FDE aims to restore the transmitted symbols to their original form by dividing the received signal by the estimated channel frequency response.

  2. Symbol Equalization for PDCCH: Symbol equalization is the process of adjusting the received symbols to mitigate the effects of channel distortions and interference, ensuring accurate symbol detection at the receiver. In the context of PDCCH, symbol equalization is crucial for recovering the transmitted control information correctly. The following steps are typically involved in symbol equalization for PDCCH:

    • Channel Frequency Response Estimation: Based on the estimated channel response obtained during channel estimation, the UE calculates the frequency domain equalization (FDE) coefficients.

    • Frequency Domain Equalization (FDE): The UE applies the FDE coefficients to the received PDCCH symbols in the frequency domain to compensate for the channel distortions.

    • Symbol Detection: Finally, the UE performs symbol detection on the equalized symbols to decode the transmitted control information accurately.

By performing channel estimation and symbol equalization, the UE can mitigate the effects of channel impairments and accurately decode the PDCCH control information, ensuring reliable reception of control signals in 5G networks. These processes are essential for enabling proper operation of the UE within the 5G network and supporting various control functions such as resource allocation, scheduling, and handover management.

class toolkit5G.ReceiverAlgorithms.ChannelEstimationAndEqualizationPDCCH(duration, frequencyDomainResources, monitoringSymbolsWithinSlot)[source]

This module provides the class for channel estimation and equalization for physical downlink control chanel (PDCCH). The implementation uses least Square estimator with nearest neighbour interpolator to estimate the channel and zero forcing (least squares) to equalize the received grid.


  • Current implementation uses least Square estimator with nearest neighbour interpolator to estimate the channel.

  • The resource Grid equalization, currently, is based on zero forcing (least squares) method.

  • duration (int) – Defines the contiguous number of OFDM symbols allocated to CORESET.

  • frequencyDomainResources ((45,1), int) – Defines frequency domain resources which must be a 45 length array whose each bit allocates 6 contiguous RBs, with grouping starting from PRB 0, to CORESET within the bandwidth part within which the CORESET is configured. The 0th entry points to the lowest RB in the configured BWP. The number of RBs allocated to CORESET/PDCCH is given by \(\text{N}_\text{RB}\) = 6*np.sum(frequencyDomainResources)

  • monitoringSymbolsWithinSlot (numpy.ndarray) – Specifies a PDCCH monitoring pattern within a slot, indicating first symbol(s) of the CORESET within every slot. It a bit string of size 14, where each bit represents one symbol with in a slot. The bit(s) set to one identify the first OFDM symbol(s) of the CORESET within a slot. Depending on the coresetDuration it will take a bit string of size 14.

  • bwpOffset (int or numpy.integer) – Specifies the start PRB index of Band Width part (BWP).

  • resourceGrid ((…,numSymbols, numSubcarriers), np.complex) – Defines the received resource grid.

  • cce_REG_MappingType (str) – Specifies the type of REG to CCE mapping type. i.e, how Resource Element Groups (REGs) are being mapped to CCEs. cce_REG_MappingType from 3GPP TS 38.211 Section 7.3.2 Must be a string. Supported mapping types are {“non-interleaved”, “interleaved”}. Defaults to “interleaved”. For “interleaved” mapping, interleaverSize, reg_BundleSize and shiftIndex parameters are expected. For “non-interleaved”, no additional parameter is expected.

  • reg_BundleSize (int) – Specifies reg_BundleSize or ‘L’ from 3GPP TS 38.211 Section 7.3.2. This parameter indicates the number of REGs bundled together to form an REG bundle for “interleaving” type. Supported reg_BundleSize are {2,3,6}. It can take a value from the set {2,6} for duration = 1 and 2 and {3,6} for duration = 3. Must be a positive int and defaults to 6.

  • interleaverSize (int or None) – Specifies interleaverSize or ‘R’ from 3GPP TS 38.211 Section 7.3.2. This parameters indicates the size of interleaver. THe CORESET interleaver divides the available frequency resources into R parts. Each part has C RBs. Interleaver reads the RBs along columns or ‘C’ first and rows or ‘R’ second. It can take a value from the set {2,3,6}. But the configured value should be chosen such that ‘C’ must in an integer or in other words R*C = NumberOfRBs configured for CORESET. Must be a positive int and defaults to None. In the default case it takes value of 6.

  • shiftIndex (int) – Specifies shiftIndex or ‘nshift’ from 3GPP TS 38.211 Section 7.3.2. Indicates the circular shift value while interleaving. It can take any integer value from the interval [0, 274]. Must be a positive int and defaults to 0.

  • slotNumber (int) – Defines the slot number within a frame where PDCCH is loadedS \(n_{s,f}^{\mu} \in \{0,1,2,\) \(\dots,10*2^{\mu}-1\}\) where \({\mu = \frac{\Delta f}{15 kHz}}\).

  • scramblingID (int) – Defines the scramblingID \(\in \{0,1,\dots,4095\}\).

  • Hf ((…, numSymbols, numSubcarriers), np.complex) – Defines the channel Estimates corresponding to the received grid. Default value is None. * If Hf is None: Channel is internally estimated to equalize the received grid. * If Hf of consistent size is passed, his channel is used for received grid equalization and PDCCH decoding. It is useful speially perfect Channel estimates are assumed.


(…, \(\text{E}\) ), np.complex – Returns the equalized symbols for Upper Physical layer processing where E is the number of PDCCH symbols given by \(\text{E}=54 \times\) duration \(\times \sum_{i=0}^{45}\) frequencyDomainResources \([i]\).


Size of resourceGrid and Hf must be consistent.


Both resourceGrid and Hf must have atleast 2 dimensions.

  • ValueError – [Error-resourceMappingPDCCH]: ‘resourceGrid’ must be NumPy array of numbers!

  • ValueError – [Error-resourceMappingPDCCH]: The number of dimensions of ‘resourceGrid’ should be more than 0!

  • ValueError – [Error-resourceMappingPDCCH]: Invalid shape of ‘resourceGrid’!