PDCCH ( Physical downlink Control CHannel):

This channel carries the control information about the data being transmitted on the current subframe and the information about the resources which UE need to use for the uplink data. That means it is mandatory for the UE to decode it successfully if it wants to send some data or receive something. After knowing PDCCH, I personally feel that it is the heart of LTE . So we should try to understand it completely that:

  • What information it carries?
  • Where it carries the information?
  • And for whom it carries the information?

PDCCH carries a message called DCI ( Downlink Control Information ) which includes resource assignments for a UE or group of UE’s. EnodeB can transmit many DCI’s or PDCCH’s in a subframe. Actually enodeB need to send a lot of parameters to the UE for its operation but there may be the cases that some information is not required for a particular UE.

For Example: Some UE does not support MIMO ( Multiple Input Multiple Output ), so for that UE there is no need to send the MIMO related parameters because they will increase the signalling overhead. There comes in the picture the different formats for sending the information which are called DCI formats. Even we would not like to have so many formats because they will increase the complexity. So to cover the most useful cases we have following DCI formats, for instance, DCI format 0 is used for uplink allocation, all other formats are used for allocating the resources in downlink.

  • Format 0 for transmission of resources to UE for sending their uplink data
  • Format 1 for downlink allocation of resources for Single Input Multiple Output (SIMO)case
  • Format 1A for downlink allocation of resources for SIMO operation or allocating a dedicated preample signature to a UE for random access
  • Format 1B for transmission control information of Multiple Input Multiple Output (MIMO) rank 1 based compact resource assignment
  • Format 1C for very compact transmission of PDSCH assignment
  • Format 1D same as format1B with additional information of power offset
  • Format 2 and Format2A for transmission of DL-SCH allocation for closed and open loop MIMO operation, respectively
  • Format 3 and format3A for transmission of TPC command for an uplink channel   

We will explain the structure of each format later with their sizes and thorough explanation of their specific use. Allocation of resources happens in terms of CCE ( Control Channel Elements ). 1 CCE = 9 continuous REG’s ( Resource element Group ) 1 REG = 4 RE ( Resource Element )

CCE allocation for PDCCH:

PDCCH uses the resources present in first n OFDM symbols where n – Value present in PCFICH ( Number of OFDM symbols ) So the number of CCE’s present to transmit the control information will be variable depending on the

  • PCFICH value
  • Bandwidth of the system from 1.4 Mhz to 20 Mhz.
  • Number of antenna ports present which in turn will effect the reference signals present.

Lets take an example for the number of CCE available calculation:

We need to find the total number of RE’s available in first n OFDM symbols where n is coming from the value of PCFICH. Suppose   n = 3

Total RE’s =  n * x * y

in which,

  • n – PCFICH value
  • x – number of subcarriers in 1 RB
  • y – total number of RBs

For instance, considering 10 Mhz bandwidth, we have:

Total RE’s = 3 * 12 * 50 = 1800 RE’s

RE’s for PDCCH = Total RE’s – Number of RE’s used for reference signals – Number of RE’s used in PHICH – Number of RE’s used in PCFICH, then CCE’s available for PDCCH = RE’s for PDCCH /36 as 1 CCE = 36 RE’s.

eNodeB uses the PDCCH for sending the control information for a particular UE or a group of UE’s. It means eNodeB uses the PDCCH  for some broadcast information also which is common for all the UE’s. So to make that process easier eNodeB divided its CCE’s into two parts which we call them as search space:

  1. Common search space :- It consists of CCE’s which are used for sending the control information which is common for all the UE’s .Maximum number of CCE present in common search space is 16. For Example:- Common search space CCE’s are used by eNodeB for sending the control information of SIB’s which is common for all UE’s.
  2. UE specific search space :- CCE’s belonging to UE specific space are used for sending the control information for a particular UE only. That means information present on UE specific CCE’s can only be decoded by a specific UE.

eNodeB can also send the control information for a specific UE on the common search space. Lets suppose there are total 100 CCEs eNodeB has for sending the control information combining both common space and UE specific search space.


Suppose enodeB has used 85th CCE number for a UE named Ravan for sending his control information. Now how the Ravan will come to know which CCE he needs to decode for getting his information. Either he needs to scan all 100 CCEs one by one and try to find the information. This procedure will consume a lot of battery power for the UE. So to simplify this process, eNodeB has fixed some indexes for a particular UE based on the rnti and the subframe, so now Ravan needs to find his control information only on those specific CCE indexes.

How eNodeB calculate those CCE indexes for a UE:

First we should be familiar with some terms used in this procedure:

  • Aggregation Level: It is defined as number of CCE’s used for sending a control information. Its values can be 1,2,4 and 8. Suppose for UE named ravan eNodeB is using some DCI format whose size comes out to be 90 bits after applying the code rate.
  • Code rate: It is mainly a physical layer funda for sending the information in a redundant way such that chances of UE successfully decoding it gets increased.

As we know that:

  • 1 CCE = 36 RE’s
  • 1 RE = 2 bits ( For QPSK modulation) 4 bits( For 16 QAM ) 6 bits ( For 64 QAM)

And eNodeB uses QPSK modulation technique for PDCCH , therefore number of bits in 1 CCE = 36 * 2 = 72 bits.

In the example for UE Ravan eNodeb needs to send 90 bits , so it need to use atleast 2 CCE’s for the control information on PDCCH. It means it will send the control information with aggregation level 2.

It is also possible that enodeB uses a higher aggregation level( more number of CCEs) even if the bits transmitted on PDCCH are less. This happens when channel conditions are bad , so to provide more redundant information to UE such that it can decode the PDCCH.

  • PDCCH candidate: Number of CCE indexes seached by a UE in a subframe for a particular search space. These values are fixed by spec 36213 as mentioned in table
Search space Number of PDCCH candidates
Type Aggregation level Size [in CCEs]
UE-specific 1 6 6
2 12 6
4 8 2
8 16 2
Common 4 16 4
8 16 2
  • PDCCH Format: There are four PDCCH formats available as shown below


The set of indexes searched by a UE depends on a formula given by spec as:
L\{(Y_k+m') \mod \lfloor N_{CCE,k}/L \rfloor\}+ i
where Y_k is defined as
Y_k=(A.Y_{k-1}) \mod D
L – Aggregation level A PDCCH consisting of n consecutive CCE’s may only start on a CCE index fulfilling i mod n = 0 where i  =  CCE number
For Example: eNodeB wants to allocate PDCCH for some UE or group of UE’s on aggregation level 4 ( Means 4 CCE’s are required), Then it can only allocate CCE’s starting with indexes which satisfies(CCE index) mod 4 = 0
How to find CCE indexes on common search space:

As shown in table eNodeB uses only aggregation level 4 and 8 for the allocation in common search space .Maximum number of CCE’s present in common search space is fixed as 16. If the total number of CCE’s available in the system are less than 16 for any bandwidth then all the CCE’s will be present in common search space.The position of Common search space CCE’s is always fixed starting from the first CCE index.

For example:

We have 100 CCE’s belonging to PDCCH as shown above from CCE index 0 to 99.

As we know that starting CCE’s are common search space CCE’s , so in the diagram green color CCE’s are common search space CCE’s from index 0 to 15.

Suppose eNodeB wants to allocate CCE’s for SIB on common search space for aggregation level 4
And we know that it should satisfy the formula

1. (CCE Index ) mod 4 = 0,

2. And from the table above , the number of PDCCH candidates ( starting CCE indexes) for aggregation level 4 in common space can be 4.

By meeting the above two conditions 4 indexes will be supported by aggregation level 4 in common space as

CCE index 0 – will contain consecutive CCE’s from 0 to 3
CCE index 4 – will contain consecutive CCE’s from 4 to 7
CCE index 8 – will contain consecutive CCE’s from 8 – 11
CCE index 12 – will contain consecutive CCE’s from 12 -15

Similarly if eNodeB wants to allocate with aggregation level 8, then possible indexes meeting the two conditions will be

CCE index 0 – will contain consecutive CCE’s from 0 to 7
CCE index 8 – will contain consecutive CCE’s from 8 to 15

As we know that UE does the blind PDCCH decoding , means it does not have any idea about the aggregation level or DCI format used by the eNodeB. So a UE in common space needs to make (4 try in aggregation level 4 + 2 try in aggregation level 8 )  * DCI format supported for common space. Only small sizes DCI formats are supported in common search space as 0/1A/3/3A/ and 1C, so if enodeB supports 1A and 1C DCI formats, so UE needs to do 12 tries maximum to decode its PDCCH information.

How to find the CCE indexes in UE specific search space in a subframe:

According to the formulas in spec 36213, the set of indexes searched by a UE  in a subframe is:

 L\{(Y_k+m') \mod \lfloor N_{CCE,k}/L \rfloor\} + i
where Yk is defined as
Y_k=(A.Y_{k-1}) \mod D

if k = 0 , Y_{-1} = RNTI value for that UE ( As given in spec 36213 sec 9.1.1 ), A = 39827, D = 65537

Lets take an example:

  • Subframe number = 0
  • Aggregation level = 1

We know from the table above that for aggregation level 1, number of PDCCH canditates ( CCE indexes) can be 6.

Y_k=(A.Y_{k-1}) \mod D

k = subframe number
As k = 0, Y_{k-1} = RNTI value for that UE, lets suppose its 100.

Y_k = (39827 * 100) \mod 65537 = 50480

CCE index = L\{(Y_k+m') \mod \lfloor N_{CCE,k}/L \rfloor\} + i

L = aggregation level
i = 0 to (Aggregation Level – 1)
N_{CCE} = Number of CCEs available for PDCCH ( suppose 100)
m’ = 0 to ( Number of PDCCH canditates -1 )
CCE index = 1\{(50480+0) \mod \lfloor 100/1 \rfloor\} + 0 = 80
So first CCE index for aggregation level 1 for this UE in subframe 0 will be 80.Lets calculate next CCE index for the same UE in the same subframe.Yk value changes with the subframe only so withion the subframe same value will be used.

CCE index = 1\{(50480+1) \mod \lfloor 100/1 \rfloor\} + 0 = 81

Similarly you can calculate the remaining CCE indices for this UE in the current subframe

Lets try to find the CCE indices for subframe 1 now with aggregation level 2:-

As we know that Y_k value changes with subframe

Y_k = (39827 * 50480) \mod 65537 = 53948

Y_{k-1} will be the value calculated for subframe 0
For aggregation level two also, m’ will be 0 to 5 as number of PDCCH candidates are 6 for aggregation level 2

CCE index = 2\{(53948 + 0) \mod \lfloor 100/2 \rfloor\} + 0 = 96

As in Aggregation level 2, two CCE’s will be allocated for the same PDCCh candidate. Second CCE will be

CCE index = 2\{(53948 + 0) \mod \lfloor 100/2 \rfloor\} + 1 = 97

So first CCE index for this UE in subframe 1 for aggregation level 2 will be 96. This PDCCH candidate will contain 2 CCE’s with indexes 96 and 97. In similar ways UE can find the CCE indexes available in all subframes for the different aggregation levels.

CCE Allocation Examples:


  • If terminal A is using the CCE’s 16 to 23 then terminal B cannot be addressed on Aggregation level 4 as the CCE’s are already blocked by terminal A.
  • We can also notice that, CCE’s 24 – 31 belongs to both of the UE’s PDCCH candidate set for aggregation level 8. That means overlap can also happen but eNodeB can actually use it for one terminal either A or B.
  • For point 1 like case, common search space CCE’s can be used to resolve the contention. This is also another inportant use of common search space.
  • It is also clear that first 16 CCE’s are used for common search space in both aggregation level 4 and 8.
How EnodeB decides which DCI Format to use:
It is decided by enodeB on the basis of transmission mode and the RNTI type used for that particular PDCCH.
RNTI types:

  • SI- RNTI : Used for transmission of system information messages.
  • RA-RNTI : Used for PRACH responses.
  • P-RNTI : Used for the paging messages
  • C-RNTI : Used for the transmission to a specific UE after RACH.
  • T-CRNTI : Mainly used during Rach.

There are tables present in spec 36213 in sec 7.1 which describes which format to use.

I am consolidating that information from spec in a easy way to understand.
Usually all the common information gets scheduled in common search space with the CRC scrambled with all RNTI’s except CRNTI. We use DCI format 1A or 1C irrespective of Transmission mode.

Please find the table for the mapping :


  • PDCCH order is also transmitted with DCI format 1A.

How EnodeB decides the Aggregation Level to use:

It is decided on the basis of size of DCI and the CQI ( channel quality indicator ) value received in uplink. The size of different DCI formats is defined in spec. After selecting the DCI format we know the number of bits needs to send on PDCCH after applying the code rate.

As we know that in 1 CCE 72 bits can be transmitted as QPSK modulation is used in PDCCH. After considering the DCI size and the CQI value, eNodeB decides the aggregation level to use or the number of CCE’s required for the control information for this particulat DCI.

Blind Decoding of PDCCH by UE: UE does the blind decoding because:

  • UE does not have idea about the CCE’s used by PDCCH
  • UE does not know the aggregation level used by eNodeB
  • UE do not have idea about the DCI format used by eNodeB

Steps followed by UE for the blind decoding of PDCCH:

After each blind detection UE checks the CRC with the corresponding RNTI. If CRC is decoded successfully with that RNTI, UE can find the DCI format from the payload size and the RNTI in that PDCCH .

Important points about PDCCH :

  • ULSCH PDCCH or DCI format 0 which is used for uplink grant is scrambled with Antenna selection mask. It is done to intimidate the UE about the antenna port it needs to use for its transmission.
  • PDCCH shall be transmitted on the same set of antenna ports as PBCH.
  • PDCCH is transmitted in starting OFDM symbols to save battery at UE.
  • In one subframe or 1 ms , multiple DCI’s needs to be send by eNodeB for sending the data to different UE’s.
  • For 1 UE, eNodeB can send multiple DCI’s if it needs to send data and  give uplink grant in the same tick.
  • UE needs to keep on decoding CCE’s if it is expecting more than one DCI’s.

From Nitin Tayal



Seoul, Oct 24, 2014

Packages managing in Miktex

Posted: October 11, 2014 in Latex

You are planning to write a paper, such as IEEE format paper, by using Latex and you don’t know what exact you need to do right now. This tutorial is for you :D. The template of IEEE paper, please see here.

Each paper requires a specific format defined by “host” that you submit. Therefore, you need to install packages that are provides by each host. In case of IEEE, you also need to install the package called “IEEEtran”. You can download this package in here

For simplicity, this tutorial uses Miktex for managing packages. Let watch the first video in here for Miktex

Let’s open the Package Manager window of Miktex:


Packages are stored in repositories. The window will show you all available packages of the default repository of Miktex, likes below:


If you only want to install the packages of ieee, filtering function will help you:


Choose the package that you want and click on “+” button on the toolbar to install it: 


In case the default repository doesn’t work or it misses packages that you need, just change to another repository as follows:


The window for changing package repository:


Sometime you have a trouble in connecting to repositories because using a proxy server, so skip checking in “Use a proxy server”. Here is the list of available repositories:


Choose one and then install the packages you want.


Seoul, Oct 11, 2014


Hello friends,

Here is the other videos that I’ve found in Youtube. I think it’ll be useful for you in the first time when you try to write a paper following the formatting of IEEE by Latex

How to install IEEEtran package, see here

1. Write a paper (IEEE, ACM format) basically by using Latex

This video shows you all basic components of a paper, including title, author, abstract, introduction, etc

2. References for your paper

Commonly, references are very important for a paper. The video below show how to add references into your paper:

For more tutorials in using Latex, please click here.

From Mr. Sourav Singhal

Latex tutorial for Beginners

Posted: October 10, 2014 in Latex

Hello friends,

Here is the list of tutorial videos that I’ve used for the first writing by Latex. Hope it useful.

1. How to create a Latex document

2. Math Notations (2 parts)

3. Brackets, Tablets and Equation Arrays (2 parts)

4. Lists

5. Document and Text Formatting (2 parts)

6. Packages, Macros and Graphics (2 parts)

7. Error and Debugging

8. Tips in Textmaker

From Mrs. Michelle Krummel

How to calculate integral in Matlab

Posted: November 15, 2013 in Matlab

Do you want to calculate integral of a function right now ? Ok, let see

In Matlab, “integral”, “integral2” and “integral3” refer to “adaptive integral”, “double integral”, “triple integral”, respectively

1. Adaptive integral with “integral”

1.1. Syntax

q = integral(f,xmin,xmax)

approximates the integral of funtion f from xmin to xmax

q = integral(f,xmin,xmax,Name,Value)

likes the command above but in this case it specifies additional options with one or more Name, Value pair arguments

1.2. Example


Example 1_1


>> f = @(x) exp(-x.^2).*(log(x)).^2;

>> integral(f,0,Inf)

ans =


Example 2

Example 2_1

Calculate the integral of f(x) from x = 0 to x = 1


In this case, f(x) work as an array of functions, so the result from integral will be an array of values

>> f=@(x)sin((1:5)*x)

f =


>> integral(f,0,1,'ArrayValued',true)

ans =

0.4597    0.7081    0.6633    0.4134    0.1433

In this case, we use a pair of argument: “ArrayValued” and “true” to indicate that the result will be an array

For more detail, please see [1]

2. Double integral with “integral2”

2.1. Syntax

q = integral2(f,xmin,xmax,ymin,ymax)

approximates the integral of the function  over the region [xmin, xmax] and [ymin, ymax]

q = integral2(f,xmin,xmax,ymin,ymax,Name,Value)

specifies additional options with one or more pairs of arguments (Name,Value)

2.2. Example

Example 1

Example 1_2


>> f = @(x,y) 1./(sqrt(x+y).*(1+x+y));

>> ymax = @(x) 1-x;

>> q = integral2(f,0,1,0,ymax)

q =


For more detail, please see [2]

3. Triple integral with “integral3”

3.1. Syntax

q = integral3(f,xmin,xmax,ymin,ymax,zmin,zmax)

approximates the integral of the function  over the region [xmin,xmax], [ymin,ymax] and [zmin,zmax]

q = integral3(f,xmin,xmax,ymin,ymax,zmin,zmax,Name,Value)

specifies some additional options in the pair of arguments (Name,Value)

3.2. Example

Example 1

Example 1_3


>> f = @(x,y,z)y.*sin(x) + z.*cos(x)

>> q = integral3(f,0,pi,0,1,-1,1)

q =


Example 2

Example 2_3


>> f = @(x,y,z) x.*cos(y)+x.^2.*cos(z);

>> zmax = @(x,y) sqrt(1-x.^2-y.^2);

>> zmin = @(x,y) -sqrt(1-x.^2-y.^2);

>> ymax = @(x) sqrt(1-x.^2);

>> ymin = @(x) -sqrt(1-x.^2);

>> q = integral3(f,-1,1,ymin,ymax,zmin,zmax)

q =


For more detail, please see [2]

4. References:

[1] http://www.mathworks.com/help/matlab/ref/integral.html

[2] http://www.mathworks.com/help/matlab/ref/integral2.html

[3] http://www.mathworks.com/help/matlab/ref/integral3.html

Here is the pdf version for this article

Seoul, Nov 15,2013


Tiếp theo bài viết cấu hình Inter-Vlan Routing sử dụng router, trong bài này mình sẽ giới thiệu tới các bạn bài lab cấu hình Inter-Vlan Routing sử dụng switch layer 3. Sơ đồ lab như sau:

Một số yêu cầu của bài lab:

  • VTP:

  • VLAN:

  • Port trên switch:

Các bước thực hiện cấu hình tương tự như bài lab trước, tuy nhiên chúng ta phải enable chức năng định tuyến của switch layer 3:

Kết quả sau khi cấu hình:

  • Trong cùng vlan:

  • Giữa các vlan:

Video clip cấu hình chi tiết: http://www.mediafire.com/download.php?gfh2lvaqx5z7hog

Lab packet tracer: http://www.mediafire.com/download.php?o9256plrk3dqssc

Hà Nội, ngày 13 tháng 05 năm 2013