Model CFI and PCFICH
This example shows how to generate a PCFICH with LTE Toolbox™. First, create a CFI based on the eNodeB configuration and code it. Then, generate a PCFICH using the coded CFI and map it to a resource grid.
Set up the cell-wide settings. Create a structure and specify the cell-wide settings as its fields.
enb.NDLRB = 9; enb.CyclicPrefix = 'Normal'; enb.PHICHDuration = 'Normal'; enb.CFI = 3; enb.CellRefP = 4; enb.NCellID = 1; enb.NSubframe = 0;
Many of the functions used in this example require a subset of the preceding settings specified.
Create an empty resource grid for one subframe by calling the lteDLResourceGrid
function.
subframe = lteDLResourceGrid(enb);
The resulting subframe is a 3 dimensional matrix. The number of rows represents the number of subcarriers available, 12×(enb.NDLRB
), since there are 12 subcarriers per resource block. The number of columns corresponds to the number of OFDM symbols in a subframe, 7×2, since there are 7 OFDM symbols per slot for normal cyclic prefix and there are 2 slots in a subframe. The third dimension of the matrix corresponds to the number of transmit antenna ports used. There are four specified in the example, so enb.CellRefP
is 4.
Use the lteCFI
function to code the CFI channel. The result, cfiCodedBits
, is a 32-bit-long set of coded bits.
cfiCodedBits = lteCFI(enb);
As described earlier, the number of OFDM symbols used to transmit the control information in a subframe is defined by the CFI value. The eNodeB
configuration structure assigns the CFI a value of 3. Thus, 4 OFDM symbols are used for the control region because the number of resource blocks used is less than 11, since enb.NDLRB
is 9.
Generate the PCFICH complex symbols by using the ltePCFICH
function. This function scrambles the CFI coded bits, QPSK modulates the symbols, maps symbols to layers, and precodes to form the PCFICH complex symbols.
pcfichSymbols = ltePCFICH(enb,cfiCodedBits);
The resulting matrix, pcfichSymbols
, has 4 columns. Each column contains the PCFICH complex symbols that map to each of the antenna ports.
Generate the PCFICH mapping indices by calling the ltePCFICHIndices
function. These indices map the PCFICH complex symbols to the subframe resource grid.
pcfichIndices = ltePCFICHIndices(enb,'1based');
The resulting matrix, pcfichIndices
, has 4 columns. Each column contains the indices in linear form for each antenna port. These indices are one-based, since MATLAB® uses one-based indices. However, you can also generate 0-based indices.
Map the PCFICH complex symbols to the subframe resource grid using the appropriate mapping indices. The linear indexing style used makes the mapping process straightforward.
subframe(pcfichIndices) = pcfichSymbols;
The resulting matrix, subframe
, contains the complex symbols in pcfichSymbols
in the locations specified by pcfichIndices
.
To view the resource usage, call the ltePCFICHInfo
function. This function returns the number of resource elements, NRE
, and the number of resource element groups, NREG
, used by the PCFICH within the structure, info
.
info = ltePCFICHInfo;
The resulting structure, info
, contains the fields NRE
, the number of resource elements, and NREG
, the number of resource element groups, used by the PHICH.
See Also
lteCFI
| ltePCFICH
| ltePCFICHInfo
| ltePCFICHIndices
| lteDLResourceGrid
| ltePCFICHPRBS
| lteSymbolModulate
| lteSymbolDemodulate
| lteLayerMap
| lteLayerDemap
| lteDLPrecode
| lteDLDeprecode