Main Content

lteULDescramble

PUSCH descrambling

Description

out = lteULDescramble(ue,chs,in) performs PUSCH descrambling of the soft bit vector, in, or cell array in case of two codewords, according to UE-specific settings in the ue structure and UL-SCH related parameters in the chs structure. It performs PUSCH descrambling to undo the processing described in TS 36.211, Section 5.3.1 [1] and returns a soft bit vector or cell array of vectors, out. This syntax supports the descrambling of control information bits if they are present in the soft bits in in conjunction with information bits. The descrambling of the control information bits is done by establishing the correct locations of placeholder bits with the help of UL-SCH-related parameters present in chs.

Multiple codewords can be parameterized by two different forms of the chs structure. Each codeword can be defined by separate elements of a 1-by-2 structure array, or the codeword parameters can be combined together in the fields of a single scalar, 1-by-1, structure. In the latter case, any scalar field values apply to both codewords and a scalar NLayers is the total number. For further details, see UL-SCH Parameterization.

out = lteULDescramble(ue,in) performs PUSCH descrambling of the soft bit input, in, but takes only the UE-specific settings in the ue structure. The in input should contain only the scrambled data bits resulting in descrambling of transport data only. The ue structure must include the NCellID, NSubframe, and RNTI fields.

example

out = lteULDescramble(in,nsubframe,cellid,rnti) performs PUSCH descrambling of soft bits, in, for subframe number, nsubframe, cell identity, cellid, and specified radio network temporary identifier (RNTI), rnti. This syntax performs only block descrambling and expects the input, in, to contain only the scrambled data bits. If the in vector contains placeholder bits, they are not descrambled correctly because the placeholder bits are not skipped during the descrambling process. Thus, this function syntax descrambles only the transport data bits.

Examples

collapse all

Perform scrambling and descrambling of vector in. The scrambled bits are modulated to QPSK symbols. Noise is added to these symbols, which are then demodulated to produce soft bits. These soft bits are finally descrambled.

in = ones(10,1);
ue = struct('NCellID',100,'NSubframe',0,'RNTI',61);
scrBits = lteULScramble(ue,in);
txSymbols = lteSymbolModulate(scrBits,'QPSK');
noise = 0.01*complex(randn(size(txSymbols)),randn(size(txSymbols)));
rxSymbols = txSymbols + noise;
softBits = lteSymbolDemodulate(rxSymbols,'QPSK','Soft');
descram = lteULDescramble(ue,softBits)
descram = 10×1

    0.7125
    0.7202
    0.7254
    0.7028
    0.6845
    0.7037
    0.7157
    0.7429
    0.7039
    0.6794

Input Arguments

collapse all

UE-specific settings, specified as a scalar structure that can contain the following fields.

Physical layer cell identity, specified as a scalar integer.

Data Types: double

Subframe number, specified as a scalar integer.

Data Types: double

Radio network temporary identifier, 16-bit, specified as a numeric scalar.

Data Types: double

Cyclic prefix length, specified as 'Normal' or 'Extended'.

Data Types: char | string

Shorten subframe flag, specified as 0 or 1. If 1, the last symbol of the subframe is not used and rate matching is adjusted accordingly. This setting is required for subframes with possible SRS transmission.

Data Types: logical | double

Data Types: struct

UL-SCH channel-specific settings, specified as a structure that can contain the following fields.

Modulation scheme associated with each transport block, specified as 'QPSK', '16QAM', '64QAM', or '256QAM'

Data Types: char | string

Number of transmission layers, total or per codeword, specified as 1, 2, 3, or 4.

Data Types: double

Number of uncoded RI bits, specified as a nonnegative scalar integer.

Data Types: double

Number of uncoded HARQ-ACK bits, specified as a nonnegative scalar integer.

Data Types: double

Number of coded RI symbols in UL-SCH, specified as a nonnegative scalar integer. (Q’_RI)

Data Types: double

Number of coded HARQ-ACK symbols in UL-SCH, specified as a nonnegative scalar integer. (Q'_ACK)

Data Types: double

Data Types: struct

Soft bit input data, specified as a numeric column vector or cell array of numeric column vectors. This argument contains one or two vectors corresponding to the number of codewords to be scrambled.

Data Types: double | cell

Subframe number, specified as a scalar integer.

Data Types: double

Physical layer cell identity, specified as a scalar integer.

Data Types: double

Radio network temporary identifier, 16-bit, specified as a numeric scalar.

Data Types: double

Output Arguments

collapse all

PUSCH descrambled output bits, returned as a numeric column vector or cell array of numeric column vectors.

Data Types: double

References

[1] 3GPP TS 36.211. “Evolved Universal Terrestrial Radio Access (E-UTRA); Physical Channels and Modulation.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network. URL: https://www.3gpp.org.

Version History

Introduced in R2014a