Low PAPR Sequence Type 2

The Low PAPR Sequence Type 2 is used by SRS for small bandwidths. The procedure of the implementation of low PAPR sequence-2 are given in section 6.3.2 of [3GPPTS38211LowPAPR]. The details of the parameter used for low PAPR sequence-2 generation are provided in section 9.2 of [3GPPTS38213LowPAPR].

Note

Low PAPR Sequences are used as base sequence by reference signals transmitted by coverage constrained devices. The other alternative available is gold sequence which have excellent time correlation properties but have a very high PAPR which limit its usage for small form factor devices which can’t transmit high power.

when u_or_cinit is scalar and lengthOfSequence ** is not passed:**

u_or_cinit = 12
delta      = 0 # 0 or 1
m          = 10
lowPAPR = LowPAPRSequenceType2(u_or_cinit)
seq     = lowPAPR(m, delta)

print("******************************************************")
print("               sequence: "+str(seq.shape))
print("******************************************************")
**************************************************
               sequence: (1, 120)
**************************************************

when u_or_cinit is scalar and lengthOfSequence ** is passed:**

u_or_cinit = 12
delta      = 0 # 0 or 1
m          = 10
lowPAPR = LowPAPRSequenceType2(u_or_cinit)
seq     = lowPAPR(m, delta, lengthOfSequence = 60)

print("******************************************************")
print("               sequence: "+str(seq.shape))
print("******************************************************")
**************************************************
               sequence: (1, 60)
**************************************************

when u_or_cinit is array and lengthOfSequence ** is not passed:**

u_or_cinit = np.array([3, 5, 122])
delta      = 0 # 0 or 1
m          = 12
lowPAPR = LowPAPRSequenceType2(u_or_cinit)
seq     = lowPAPR(m, delta)

print("******************************************************")
print("               sequence: "+str(seq.shape))
print("******************************************************")
**************************************************
               sequence: (3, 144)
**************************************************

when u_or_cinit is scalar and lengthOfSequence ** is passed:**

u_or_cinit = np.array([35, 51, 14, 38])
delta      = 0 # 0 or 1
m          = 12
lowPAPR = LowPAPRSequenceType2(u_or_cinit)
seq     = lowPAPR(m, delta, lengthOfSequence = 151)

print("******************************************************")
print("               sequence: "+str(seq.shape))
print("******************************************************")
**************************************************
               sequence: (4, 151)
**************************************************

API Documentation

class toolkit5G.SequenceGeneration.LowPAPRSequenceType2(groupNumber_Or_cinit=0)[source]
Parameters:

groupNumber_Or_cinit (int/float or NumPy array of int/float) –

Defines the groupNumber or cinit based on the length of the sequence computed using \(\frac{m*N_{sc}^{RB}}{2^{\delta}}\).

  • If lengthOfSequence of sequence >= 30, this value denote the \(c_{init}\).

  • If lengthOfSequence of sequence \(\in {6,12,18,24}\), this value denote the group number (u).

Input:
  • numRBs (int) – Defines number of Resource Blocks available for mapping LowPAPRSequenceType2.

  • delta (int) – Defines resource scaling factor (\(\delta\)) for LowPAPRSequenceType2.

  • lengthOfSequence (int) – Define the length of sequence to be generated. It should either be >=36 otherwise must be a multiple of 6.

Note

If lengthOfSequence parameter is passed, then numRBs and delta will be ignored. In this case, you can pass any dummy values to numRBs and delta like numRBs = 0, delta = 0.

Output:

(\(N_{u}\), numRBs \(\times\) \(\frac{12}{2^\text{delta}}\)) –

Return Low PAPR Sequence of Type-1 where

  • \(N_{u}\) is length of groupNumber_Or_cinit,

  • numRBs \(\times\) 12/(\(2^\text{delta}\)) define the length of generated sequence.

Note

If lengthOfSequence parameter is passed, then dimension of out sequence will be (\(N_u\), lengthOfSequence)). In this case, the values of numRBs and delta will be ignored.

Attributes:

lengthOfSequence (int) – Define the length of generated sequence computed as \(\frac{12 \times \text{numRBs}}{2^{\text{delta}}}\)

Raises:
  • ValueError – “[Error-LowPAPRSequenceType2]: ‘groupNumber_Or_cinit’ should always be positive!”

  • ValueError – “[Error-LowPAPRSequenceType2]: ‘groupNumber_Or_cinit’ should always be positive!”

  • TypeError – “[Error-LowPAPRSequenceType2]: ‘groupNumber_Or_cinit’ should be an scalar integer/float or numpy integer/float array”

  • ValueError – “[Error-LowPAPRSequenceType2]: ‘cinit’ should always be positive!”

  • ValueError – “[Error-LowPAPRSequenceType2]: ‘cinit’ should always be positive!”

  • TypeError – “[Error-LowPAPRSequenceType2]: ‘cinit’ should be an scalar integer/float or numpy integer/float array”

  • ValueError – “[Error-LowPAPRSequenceType1]: ‘groupNumber’ should always be positive number less than 30!”

  • ValueError – “[Error-LowPAPRSequenceType1]: ‘groupNumber’ should always be positive number less than 30!”

  • TypeError – “[Error-LowPAPRSequenceType1]: ‘groupNumber’ should be an scalar integer/float or numpy integer/float array”

  • ValueError – “[Error-LowPAPRSequenceType1]: ‘numRBs’ should always be positive number > 0!”

  • TypeError – “[Error-LowPAPRSequenceType1]: ‘numRBs’ should be an scalar integer/float or numpy integer/float array”

  • ValueError – “[Error-LowPAPRSequenceType1]: ‘delta’ should always be a positive number!”

  • TypeError – “[Error-LowPAPRSequenceType1]: ‘delta’ should be an scalar integer/float or numpy integer/float array”

  • ValueError – “[Error-LowPAPRSequenceType1]: ‘lengthOfSequence’ = numRBs*12/(2**delta) should always be either >= 36 or belong to the set {6,12,18,24}! Please chose the value of ‘numRBs’ and ‘delta’ accrodingly!”

property cinit

Defines \(c_{init}\) initial seed. The parameter is denoted by \(c_{init}\) in section 5.2.3 of TS 38.211. It can be scalar or vector of integers.

property delta

Defines resource scaling factor (\(\delta\)) for LowPAPRSequenceType1. It must be an integer.

property groupNumber

Defines Group Number. The parameter is denoted by u in section 5.2.3 of TS 38.211. It can be scalar or vector of integers.

property groupNumber_Or_cinit

Defines the groupNumber or cinit based on the length of the sequence computed using \(\frac{m*N_{sc}^{RB}}{2^{\delta}}\). It can either be an integer or an integer array.

property lengthOfSequence

Defines the length of the sequence. The parameter is either directly passed as an input or computed by numRBs \(\times\) \(\frac{12}{2^\delta}\). The details are listed in section 5.2.3 of TS 38.211. It can be scalar or vector of integers.

property numRBs

Defines Number of Resource Blocks. The parameter is denoted by m in section 5.2.3 of TS 38.211. It can be scalar or vector of integers.

References:
[3GPPTS38211LowPAPR]

(3GPP TS 38.211 version 17.1.0 Release 17) 5G;NR;Physical channels and modulation.

[3GPPTS38213LowPAPR]

(3GPP TS 38.213 version 16.5.0 Release 16) 5G;NR;Physical layer procedures for control.