Model UL-SCH and PUSCH

This example shows how to construct the physical uplink shared channel (PUSCH). It demonstrates how to generate a transport block, perform uplink shared channel (UL-SCH) coding to create a codeword, perform physical channel coding to create the physical channel, and map the complex symbols to the resource grid.

Setup user-equipment (UE) settings. Define UE settings in a structure.

ue.NULRB = 9;
ue.NSubframe = 0;
ue.NCellID = 10;
ue.RNTI = 1;
ue.CyclicPrefixUL = 'Normal';
ue.Hopping = 'Off';
ue.SeqGroup = 0;
ue.CyclicShift = 0;
ue.Shortened = 0;

Many of the functions used in this example require a subset of the preceding settings specified.

Configure the PUSCH. In addition to the UE settings specified in ue, you must define parameters related to the physical channel to generate the PUSCH.

pusch.PRBSet = (0:5).';
pusch.Modulation = 'QPSK';
pusch.RV = 0;
pusch.DynCyclicShift = 0;

Generate the subframe resource grid. To do so, call the function lteULResourceGrid. This function creates an empty resource grid for one subframe.

subframe = lteULResourceGrid(ue);

Generate the UL-SCH message. To do so, call the function lteULSCH, providing the transport block data, trblk, the UE-specific structure, ue, and the channel-specific structure, pusch, as input arguments.

trblk = round(rand(1,504));
cw = lteULSCH(ue,pusch,trblk);

Generate the PUSCH symbols. To do so, call the function ltePUSCH, providing the UE and PUSCH configuration structures, ue and pusch, as input arguments.

puschSymbols = ltePUSCH(ue,pusch,cw);

Generate the PUSCH indices. To do so, call the function ltePUSCHIndices. You can use these generated indices to map the PUSCH complex symbols to the subframe resource grid. This function requires the same input argument structures as ltePUSCH.

puschIndices = ltePUSCHIndices(ue,pusch);

Generate the PUSCH DRS symbols. To do so, call the function ltePUSCHDRS. This function requires the same input argument structures as ltePUSCH.

drsSymbols = ltePUSCHDRS(ue,pusch);

Generate the PUSCH DRS indices. To do so, call the function ltePUSCHDRSIndices. You can use these indices to map the DRS to the subframe resource grid.

drsIndices = ltePUSCHDRSIndices(ue,pusch);

Map the PUSCH symbols and DRS to the resource grid, using the generated indices.

subframe(puschIndices) = puschSymbols;
subframe(drsIndices) = drsSymbols;

See Also

| | | | | |

Related Topics