Matlab Toolbox - 4G/LTE

 

 

 

EPDCCH

 

The EPDCCH carries DCI like the PDCCH, but in the data region of the subframe instead of the control region. It sits in PRB pairs that the UE is told about by RRC, and it uses its own DMRS instead of the CRS. The examples below change one parameter at a time and show how the EPDCCH moves or grows inside one PRB pair.

The main purpose of this page is to show the examples of EPDCCH RE mapping with various parameter change to give you intuitive understandings on how the control data is allocated to resource elements. The code in this page is based on Matlab official example page Enhanced Physical Downlink Control Channel (EPDCCH) Generation, but I simplified a lot only for EPDCCH RE mapping.

Followings are the topics to be covered in this page.

EPDCCH RE Mapping

All the examples start from the same configuration. It has 25 RB, one CRS port and one CSI-RS port, and an EPDCCH set of PRB 0 and 1 with localized transmission, EPDCCH format 1 and a start symbol of 2. Each plot shows one PRB pair of 12 subcarriers and 14 symbols, coloured by what each RE carries.

    enb.NDLRB = 25;

    enb.DuplexMode = 'FDD';

    enb.CellRefP = 1;

    enb.NSubframe = 0;

    enb.CyclicPrefix = 'Normal';

    enb.NFrame = 0;

    enb.NCellID = 0;

    enb.CSIRSPeriod = 'On';

    enb.CSIRSConfig = 1;

    enb.CSIRefP = 1;

    enb.ZeroPowerCSIRSPeriod = 'Off';

     

    chs.DCIFormat = 'Format1A';

    chs.RNTI = 1;

    chs.EPDCCHType = 'Localized';

    chs.EPDCCHPRBSet = 0:1;

    chs.EPDCCHStart = 2;

    chs.EPDCCHNID = 0;

    chs.EPDCCHFormat = 1;

     

    maxEpdcchPorts = 0;

    nTxAnts = max([enb.CSIRefP enb.CellRefP maxEpdcchPorts]);

    subframe = lteDLResourceGrid(enb,nTxAnts);

     

    candidates = lteEPDCCHSpace(enb,chs);

    chs.EPDCCHECCE = candidates(3,:);

     

    hEPDCCHGenerationPlot(enb,chs);

The code uses the helper hEPDCCHGenerationPlot from the MathWorks example. The function lteEPDCCHSpace returns the candidate ECCEs for the RNTI and the subframe, and chs.EPDCCHECCE selects one candidate. In the plots, orange marks the EPDCCH REs, green the EPDCCH DMRS, red the CRS, purple the legacy control region before EPDCCHStart, and blue the CSI-RS.

  • One PRB pair per plot : 12 subcarriers by 14 OFDM symbols.
  • EPDCCH starts at symbol EPDCCHStart : the legacy PDCCH region comes before it.
  • DMRS in symbols 5, 6, 12 and 13 : the EPDCCH has its own reference signal.

Changing the candidate

A UE does not know which ECCEs carry its EPDCCH, so it tries every candidate in its search space. The figure below shows three of those candidates for the same configuration.

enb.CellRefP = 1;

enb.NSubframe = 0;

enb.NFrame = 0;

enb.NCellID = 0;

enb.CSIRSPeriod = 'On';

enb.CSIRSConfig = 1;

enb.CSIRefP = 1;

enb.ZeroPowerCSIRSPeriod = 'Off';

 

chs.EPDCCHPRBSet = 0:1;

chs.EPDCCHStart = 2;

chs.EPDCCHNID = 0;

chs.EPDCCHFormat = 1;

 

chs.EPDCCHECCE = candidates(3,:);

EPDCCH RE assignment for candidates 1, 2 and 3 of the search space

The first candidate, candidates(1,:), falls in PRB 1, at subcarriers 12 to 23. The other two fall in PRB 0, on different REs.

Each candidate is a pair of ECCEs, and each ECCE is 4 EREGs of the PRB pair. The EREGs are spread over the whole PRB pair, so one candidate covers scattered REs rather than a block. Candidates 2 and 3 share PRB 0, but use different REs of it.

Changing NSubframe

The search space moves from one subframe to the next, so that two UEs that collide in one subframe do not collide in every subframe. The plots below repeat the example for NSubframe 0 to 9.

enb.CellRefP = 1;

enb.NSubframe = 0;

enb.NFrame = 0;

enb.NCellID = 0;

enb.CSIRSPeriod = 'On';

enb.CSIRSConfig = 1;

enb.CSIRefP = 1;

enb.ZeroPowerCSIRSPeriod = 'Off';

 

chs.EPDCCHPRBSet = 0:1;

chs.EPDCCHStart = 2;

chs.EPDCCHNID = 0;

chs.EPDCCHFormat = 1;

 

chs.EPDCCHECCE = candidates(3,:);

EPDCCH RE assignment for NSubframe 0 to 3

EPDCCH RE assignment for NSubframe 4 to 7

EPDCCH RE assignment for NSubframe 8 and 9

The candidate moves between PRB 1 and PRB 0 and changes its REs from subframe to subframe. The CRS, DMRS and CSI-RS stay where they are.

36.213 v19.4.0 clause 9.1.4 moves the search space with a hash that depends on the RNTI and on the subframe number. The fixed signals stay in place, because their positions do not depend on the subframe.

Changing NFrame

The frame number is a different case. The search-space hash in 36.213 uses the subframe number within the frame, not the frame number, so NFrame alone should not move the candidate.

enb.CellRefP = 1;

enb.NSubframe = 0;

enb.NFrame = 0;

enb.NCellID = 0;

enb.CSIRSPeriod = 'On';

enb.CSIRSConfig = 1;

enb.CSIRefP = 1;

enb.ZeroPowerCSIRSPeriod = 'Off';

 

chs.EPDCCHPRBSet = 0:1;

chs.EPDCCHStart = 2;

chs.EPDCCHNID = 0;

chs.EPDCCHFormat = 1;

 

chs.EPDCCHECCE = candidates(3,:);

EPDCCH RE assignment for NFrame 0 to 3

NFrame 0 shows the same pattern in PRB 1 as candidates(1,:) in the candidate figure above. NFrame 1, 2 and 3 all show the same pattern in PRB 0.

NFrame 1, 2 and 3 give identical plots, as the specification predicts. The plot for NFrame 0 differs from them, and it matches candidates(1,:) rather than candidates(3,:). The same holds for the NSubframe = 0, NCellID = 0, CellRefP = 1 and EPDCCHStart = 2 panels. So the reference panels appear to show candidate 1, while the other panels show candidate 3. The difference in these comparisons may come from the candidate choice, not from the parameter.

Changing NCellID

NCellID changes the positions of the CRS, and the EPDCCH has to work around them. The plots below show NCellID 0 to 3 with everything else unchanged.

enb.CellRefP = 1;

enb.NSubframe = 0;

enb.NFrame = 0;

enb.NCellID = 0;

enb.CSIRSPeriod = 'On';

enb.CSIRSConfig = 1;

enb.CSIRefP = 1;

enb.ZeroPowerCSIRSPeriod = 'Off';

 

chs.EPDCCHPRBSet = 0:1;

chs.EPDCCHStart = 2;

chs.EPDCCHNID = 0;

chs.EPDCCHFormat = 1;

 

chs.EPDCCHECCE = candidates(3,:);

EPDCCH RE assignment for NCellID 0 to 3

The CRS move up by one subcarrier for each step of NCellID, and the EPDCCH REs avoid them.

The CRS shift follows vshift = NCellID mod 6, as the Cell RS page shows. The EPDCCH REs never overlap the CRS, because the EREG mapping excludes the CRS positions. NCellID 0 again shows the candidate 1 pattern, so its PRB differs from the other three panels.

Changing CellRefP

More CRS ports take more REs from each PRB pair, and that can change the size of the EPDCCH itself. The plots below compare CellRefP 1, 2 and 4.

enb.CellRefP = 1;

enb.NSubframe = 0;

enb.NFrame = 0;

enb.NCellID = 0;

enb.CSIRSPeriod = 'On';

enb.CSIRSConfig = 1;

enb.CSIRefP = 1;

enb.ZeroPowerCSIRSPeriod = 'Off';

 

chs.EPDCCHPRBSet = 0:1;

chs.EPDCCHStart = 2;

chs.EPDCCHNID = 0;

chs.EPDCCHFormat = 1;

 

chs.EPDCCHECCE = candidates(3,:);

EPDCCH RE assignment for CellRefP 1, 2 and 4

With CellRefP 1 and 2, the EPDCCH takes about half of the PRB pair. With CellRefP 4, it fills almost the whole PRB pair.

The jump at CellRefP = 4 is not a change of candidate. The number of ECCEs for EPDCCH format 1 doubles from 2 to 4, and the next section explains why.

Changing EPDCCHStart

EPDCCHStart sets the first OFDM symbol of the EPDCCH, which leaves room for the legacy PDCCH before it. The plots below move it from symbol 1 to symbol 4.

enb.CellRefP = 1;

enb.NSubframe = 0;

enb.NFrame = 0;

enb.NCellID = 0;

enb.CSIRSPeriod = 'On';

enb.CSIRSConfig = 1;

enb.CSIRefP = 1;

enb.ZeroPowerCSIRSPeriod = 'Off';

 

chs.EPDCCHPRBSet = 0:1;

chs.EPDCCHStart = 2;

chs.EPDCCHNID = 0;

chs.EPDCCHFormat = 1;

 

chs.EPDCCHECCE = candidates(3,:);

EPDCCH RE assignment for EPDCCHStart 1 to 4

The labels read enb.EPDCCHStart, but the code sets chs.EPDCCHStart. The EPDCCH takes half of the PRB pair for start 1 and 2, and almost all of it for start 3 and 4.

  • Candidates differ in PRB and REs : the UE tries them all.
  • NSubframe moves the candidate : the hash uses the subframe number.
  • NCellID moves the CRS : the EPDCCH avoids them.
  • CellRefP 4 and EPDCCHStart 3 or 4 double the size : fewer REs remain in the PRB pair.

Why does one EPDCCH take half or all of a PRB pair ?

Why does the same EPDCCH format 1 take 2 ECCEs in some plots and 4 in others? The answer lies in how many REs a PRB pair has left for the EPDCCH, a number that 36.211 calls nEPDCCH.

36.211 v19.3.0 clause 6.8A.1 counts nEPDCCH as the REs of a PRB pair that belong to an EREG, carry no CRS or CSI-RS, and start at or after EPDCCHStart. The 24 DMRS REs never belong to an EREG. When nEPDCCH is below 104 for DCI format 1A, 36.213 applies case 1, and Table 6.8A.1-2 then uses case A. EPDCCH format 1 with localized transmission is 4 ECCEs in case A and 2 ECCEs in case B.

Setting

nEPDCCH

Case

ECCEs for format 1

EPDCCHStart 1, CellRefP 1

156 - 24 - 6 - 2 = 124

B

2

EPDCCHStart 2, CellRefP 1

144 - 24 - 6 - 2 = 112

B

2

EPDCCHStart 3, CellRefP 1

132 - 24 - 6 - 2 = 100

A

4

EPDCCHStart 4, CellRefP 1

120 - 24 - 6 - 2 = 88

A

4

EPDCCHStart 2, CellRefP 2

144 - 24 - 12 - 2 = 106

B

2

EPDCCHStart 2, CellRefP 4

144 - 24 - 16 - 2 = 102

A

4

Each row starts from 12 subcarriers times the symbols from EPDCCHStart to 13, and removes the 24 DMRS REs, the CRS REs in those symbols and the 2 CSI-RS REs. Every row matches the size seen in the plots. The CellRefP 4 row also shows that the CSI-RS REs count: without them, nEPDCCH would be exactly 104, and case B would apply.

  • nEPDCCH below 104 means case A : format 1 doubles from 2 to 4 ECCEs.
  • A PRB pair holds 4 ECCEs : 16 EREGs, 4 per ECCE.
  • CRS, CSI-RS and a late start all reduce nEPDCCH : and can push the EPDCCH to a full PRB pair.

Disclaimer !

This page is only to show you the overall logics and visualization for various LTE physical layer channels. I haven't investigated much about verifying about the accuracy.

If you think the code is not so efficient, it is 100% my fault. I haven't made any effort for effiecient code. I just tried to create code as simple as possible for the readers. As you know, easy-to-read code is not always efficient for a specific chipset.

If you find any mistake in terms of accuracy, it is also very highly likely be my fault. Not the problem of Matlab tool box itself.

Any comment and corrections if you find any mistake will be welcome and appreciated.

Reference

[1] 3GPP TS 36.211 v19.3.0 - clause 6.8A, Enhanced physical downlink control channel

[2] 3GPP TS 36.213 v19.4.0 - clause 9.1.4, EPDCCH assignment procedure

[3] Enhanced Physical Downlink Control Channel (EPDCCH) Generation, MathWorks