Main Content

UL-SCH Parameterization

A number of the uplink shared channel (UL-SCH) and PUSCH related functions offer two different ways of parameterizing multiple codewords in the UL-SCH or PUSCH-specific parameter structure. As with many functions in LTE Toolbox™, the parameters associated with codewords can be combined together in the individual fields of a single scalar (1-by-1) structure. However, many UL-SCH-specific functions also allow each codeword to be defined by separate independent elements of a (1-by-2) structure array. This feature offers additional flexibility and results in more compact code when explicit fine-grained parameterization of the individual processing steps is required.

Set UL-SCH Parameters in Scalar Structure

This example shows how to parameterize an UL-SCH or PUSCH-specific parameter structure using two different representations. Consider creating a parameter structure for the lteULSCHDeinterleave function.

When UCI is being transmitted on the UL-SCH, the deinterleaving and UCI demultiplexing operations require explicit knowledge of number of control channel symbols within the codeword. For example, for a single LTE Release 8 codeword, the UL-SCH specific parameters can be defined by a scalar (1-by-1) structure.

ulsch1.Modulation = 'QPSK';
ulsch1.QdCQI = 4;
ulsch1.QdRI  = 2;
ulsch1.QdACK = 2;

In this case, there are four CQI, two RI, and two HARQ-ACK symbols within the QPSK-modulated codeword.

When moving to a full LTE-Advanced uplink transmission, you must consider a second possible codeword and the impact of the additional PUSCH layering. This layering can be achieved either by adding values in the structure field values above or by using a 1-by-2 element structure array to define the codeword pair. For example, transmit a second 16-QAM-modulated codeword also, which now carries the CQI and both codewords are sent on a total of three spatial layers.

ulsch2.Modulation = {'QPSK','16QAM'};
ulsch2.NLayers = 3;
ulsch2.QdCQI = [0,4];
ulsch2.QdRI  = 2;
ulsch2.QdACK = 2;

Since the CQI should only be transmitted on one of the codewords (the second one here) this symbol allocation is signaled by setting ulsch2.QdCQI = [0,4].

You must explicitly specify some parameters for each codeword. However, in general, when using a single 1-by-1 structure for multi-codeword parameterization, scalar parameter field values are assigned to all codewords. The structure ulsch2 sets the number of RI and HARQ-ACK coded modulation symbols per layer per codeword to two. Make this number of symbols explicit for each codeword by defining the QdRI and QdACK fields as 1-by-2 vectors.

ulsch2.QdRI  = [2,2];
ulsch2.QdACK = [2,2];

One special case is the parameter field which controls the number of spatial layers, NLayers, which has slightly different semantics. If this field value is scalar, it defines the total number of layers across all codewords. Following the LTE standard formulae, when you set the total number of layers to three, the LTE Toolbox™ partitions one layer for the first codeword and two layers for the second codeword. Make this layer allocation per codeword explicit by defining the NLayers field as a 1-by-2 vector.

ulsch2.NLayers = [1,2];

In summary, you can write the overall parameter structure by declaring all of the parameter fields at once.

ulsch2.Modulation = {'QPSK','16QAM'};
ulsch2.NLayers = [1,2];
ulsch2.QdCQI = [0,4];
ulsch2.QdRI  = [2,2];
ulsch2.QdACK = [2,2];

This structure is equivalent to the ones created earlier.

Set UL-SCH Parameters in Structure Array

This example shows how to parameterize an UL-SCH or PUSCH-specific parameter structure using two different representations. Consider creating a parameter structure for the lteULSCHDeinterleave function.

When UCI is being transmitted on the UL-SCH, the deinterleaving and UCI demultiplexing operations require explicit knowledge of number of control channel symbols within the codeword. For example, for a single LTE Release 8 codeword, the UL-SCH specific parameters can be defined by a scalar (1-by-1) structure.

ulsch1.Modulation = 'QPSK';
ulsch1.QdCQI = 4;
ulsch1.QdRI  = 2;
ulsch1.QdACK = 2;

The UL-SCH-specific structure also allows each codeword to be defined by separate, independent elements of a 1-by-2 structure array. In this case, the important distinction is that no parameter field values are implicitly shared between the codewords. Each field value applies only to the codeword associated with that structure array element. For example, redefine the single codeword structure by creating a new 1-by-2 structure array containing two identical elements.

ulsch2(1:2) = ulsch1
ulsch2=1×2 struct array with fields:
    Modulation
    QdCQI
    QdRI
    QdACK

Update only the parameters which are different for each codeword.

ulsch2(1).QdCQI = 0;
ulsch2(2).Modulation = '16QAM';

Add the explicit number of layers per codeword parameter, NLayers, to the elements of the structure array.

[ulsch2.NLayers] = deal(1,2);

View the first element of the final ulsch2 structure array.

ulsch2(1)
ans = struct with fields:
    Modulation: 'QPSK'
         QdCQI: 0
          QdRI: 2
         QdACK: 2
       NLayers: 1

View the second element of the final ulsch2 structure array.

ulsch2(2)
ans = struct with fields:
    Modulation: '16QAM'
         QdCQI: 4
          QdRI: 2
         QdACK: 2
       NLayers: 2

Both of these forms of UL-SCH parameter representation can be used in many of the UL-SCH- and PUSCH-related functions. In additional, the lteULSCHInfo function can return its output structure in either form:

  • To receive a structure array, set the second element of the 1-by-2 opts cell array to 'cwseparate'.

  • To receive a scalar structure, set it to 'cwcombined'.

See Also

|

Related Topics