Primary Synchronization Signal

Primary synchronization signal (PSS) is a m-sequence of length 127 generated using $$N_{ID}^2$$. It is used for time synchronization which aims to find the slot boundary by the user equipment (UE). The $$N_{ID}^2$$ provides a cyclic shift to a base sequence as defined in [3GPPTS38211_PSS].

Important

• PSS is an constituent of synchronization signal block (SSB). It is loaded in the middle (across frequency) of first symbol of the SSB.

The primary synchronization signal is generated as follows:

If $$N_{ID}^2$$ is scalar:

nID2        = 1         # Cell ID-2 for PSS generation
pss         = PSS(nID2) # Generate PSS object using this cell ID-2.
pssSequence = pss()     # Generate [1x127] pss sequence using 'pss' object


If $$N_{ID}^2$$ is NumPy array:

nID2        = np.array([1,0,2,1]) # Cell ID-2 for PSS generation
pss         = PSS(nID2)           # Generate PSS object using this cell ID-2.
pssSequence = pss()               # Generate [4x127] pss sequence using 'pss' object for each cell-ID2


The details about the input-output interface of the PSS implementation is provided below.

class toolkit5G.SequenceGeneration.PSS(nID2)[source]

Generates the primary synchronization signal (PSS) for 5G system. The constructor expects one parameter as an input nID2 which can be a scaler and/or NumPy array of integer. The call method returns 1 or multiple PS sequences of length 127 based on the size of nID2 passed as input. The details about the implementation of the sequence are provided in section 7.4.2.3.1 of 3GPP TS-38.211.

Parameters:

nID2 (int or NumPy array, np.int8) – Defines cell-ID 2 ($$N_{ID}^2$$) $$\in$$ {0,1,2}

Input:

No Input required

Output:

(…, 127), np.int8 – Primary synchronization sequence of shape $$N \times 127$$ where $$N =$$ length(nID2) is the number of PSS sequences.

Raises:

ValueError – [Error-PSS]: nID2 must be an integer or integer numpy array!

References:

3GPP TS 38.211 “Physical channels and modulation (Release 17)”, V17.1.0 (2022-03).