1. 程式人生 > 實用技巧 >LTE - Model DCI and PDCCH

LTE - Model DCI and PDCCH

This example shows how to model the control region used in an LTE downlink subframe and its channel structure.

It demonstrates how to create a DCI message, encode it, create the PDCCH, and map it to a resource grid.

Specify the cell-wide settings as fields in the structureenb.

enb.NDLRB = 9;
enb.CyclicPrefix = 'Normal';
enb.PHICHDuration = 'Normal';
enb.CFI = 3;
enb.Ng = 'Sixth';
enb.CellRefP = 1;
enb.NCellID = 1;
enb.NSubframe = 0;
enb.DuplexMode = 'FDD';

Set up the DCI message structure.

dci.NDLRB = enb.NDLRB;               % Set up the DCI message structure
dci.DCIFormat = 'Format1A'; % DCI format
dci.Allocation.RIV = 26;             % resource indication value (RIV)
dci.DuplexMode = 'FDD';
dci.NTxAnts = 1;

The RIV indicates the contiguous RB allocations for a UE. The UE uses the RIV to determine the first virtual RB and the length of contiguous allocation of RBs. In this example, an RIV setting of 26 corresponds to full bandwidth assignment.

Generate a DCI message by calling thelteDCIfunction. You can map this generated message to the PDCCH.

[dciMessage,dciMessageBits] = lteDCI(enb,dci);

ThelteDCIfunction returns a structure,dciMessage, and a vector containing the DCI message bits,dciMessageBits. Both outputs contain the same information, but are best suited for different purposes. The output structure is more readable, while the serialized DCI message is in a more suitable format to send to the channel coding stage.

Set up the PDCCH configuration structure. The channel coding stages require these parameters:

  • number of downlink resource blocks (RBs)

  • UE-specific mask (16-bit C-RNTI value)

  • PDCCH format

pdcch.RNTI = 100;
pdcch.PDCCHFormat = 0;

Channel encode the DCI message bits. This process consists of the addition of a CRC attachment, convolutional coding, and rate matching according to the PDCCH format capacity.

codedDciBits = lteDCIEncode(pdcch,dciMessageBits);

The resulting vector,codedDciBits, has 72 elements.

Generate PDCCH bits. The encoded DCI messages are then assigned to CCEs. The capacity of the control region depends on the bandwidth, the CFI, the number of antenna ports and the HICH groups.

pdcchInfo = ltePDCCHInfo(enb);

This function returns a structure,pdcchInfo, which contains the resources available to the PDCCH in different units (one per field): bits, CCEs, REs and REGs.

The total number of bits available in the PDCCH region can be found in the fieldpdcchInfo.MTot. This allows a vector to be built with the appropriate number of elements.

pdcchBits = -1*ones(1,pdcchInfo.MTot);

Not all the available bits in the PDCCH region are necessarily used. Therefore, following the convention in the LTE Toolbox™ product, set unused bits to −1. Since all elements have been initialized inpdcchBitsto −1, this indicates that initially all the bits are unused. Now elements ofcodedDciBitscan be mapped to the appropriate locations inpdcchBits.

Calculate indices of candidate bits by calling theltePDCCHSpacefunction. Only a subset of all the bits inpdcchBitsmay be used, which are called the candidate bits.

candidates = ltePDCCHSpace(enb,pdcch,{'bits','1based'});

This function returns a two-column matrix. Each row contains an available candidate location for the cell-wide settings provided byenband the PDCCH configuration structurepdcch. The first and second columns contain the indices of the first and last locations of each candidate. In this example, the indices are 1-based and refer to bits. Hence, they can be used to access locations inpdcchBits.

Use the first available candidate to map the coded DCI bits.

pdcchBits (candidates(1,1):candidates(1,2)) = codedDciBits;

To generate the PDCCH symbols, use theltePDCCHfunction. You can generate the PDCCH complex symbols from the set of bits used inpdcchBits, values not set to −1. The function performs the required scrambling, QPSK modulation, layer mapping, and precoding operations. Since there are two bits per QPSK symbol, 368 symbols are generated. The occupied bits result in 36 non-zero QPSK symbols.

pdcchSymbols = ltePDCCH(enb, pdcchBits);
size(pdcchSymbols)
ans = 1×2

   368     1

size(find(pdcchSymbols))
ans = 1×2

    36     1

To generate PDCCH mapping indices, use theltePDCCHIndicesfunction. You can use these indices to map the complex values inpdcchSymbolsto the subframe resource grid.

pdcchIndices = ltePDCCHIndices(enb,{'1based'});
size(pdcchIndices)
ans = 1×2

   368     1


This function returns a column vector. The rows contain the 1-based indices in linear form for mapping the PDCCH symbols to the subframe resource grid.

Map the PDCCH to the resource grid. You can easily map the complex PDCCH symbols to the resource grid for each antenna port.

  • Create an empty resource grid with thelteDLResourceGridfunction.

  • Map thepdcchSymbolsto thepdcchIndicesindex locations of thesubframeresource grid.

subframe = lteDLResourceGrid(enb);
subframe(pdcchIndices) = pdcchSymbols;


Reference,
  1. MathWorks