Secondary Synchronization Signal
The secondary synchronization signal (SSS) is a gold-sequence of length 127 generated using \(N_{ID}^1\) and \(N_{ID}^2\). It is used for Cell ID-2 detection and frequency synchronization which aims to mitigate the carrier offsets and centre of the SSB grid at the user equipment (UE). The detailed implementation of the SSS is provided in [3GPPTS38211_SSS].
Important
SSS is an constituent of synchronization signal block (SSB). It is loaded in the middle (across frequency) of third symbol of the SSB.
If \(N_{ID}^1\) and \(N_{ID}^2\) is scalar:
nID1 = 25 # Cell ID-2 for SSS generation
nID2 = 1 # Cell ID-2 for SSS generation
sss = SSS(nID1, nID2) # Generate PSS object using this cell ID-2.
sssSequence = sss() # Generate [1x127] pss sequence using 'sss' object
If \(N_{ID}^1\) is scaler and \(N_{ID}^2\) is NumPy array:
nID1 = 204 # Cell ID-2 for SSS generation
nID2 = np.array([1,0,2,1]) # Cell ID-2 for SSS generation
sss = SSS(nID1, nID2) # Generate PSS object using this cell ID-2.
sssSequence = sss() # Generate [4x127] pss sequence using 'sss' object for each cell-ID2
If \(N_{ID}^1\) is NumPy array and \(N_{ID}^2\) is scaler:
nID1 = np.array([98, 213]) # Cell ID-2 for SSS generation
nID2 = 2 # Cell ID-2 for SSS generation
sss = SSS(nID1, nID2) # Generate PSS object using this cell ID-2.
sssSequence = sss() # Generate [2x127] pss sequence using 'sss' object for each cell-ID2
If \(N_{ID}^1\) and \(N_{ID}^2\) are NumPy array:
nID1 = np.array([101,45,21]) # Cell ID-2 for SSS generation
nID2 = np.array([ 1, 0, 2]) # Cell ID-2 for SSS generation
sss = SSS(nID1, nID2) # Generate PSS object using this cell ID-2.
sssSequence = sss() # Generate [3x127] pss sequence using 'sss' object for each cell-ID2
The details about the input-output interface of the SSS implementation is provided below.
- class toolkit5G.SequenceGeneration.SSS(nID1, nID2)[source]
Generates the Secondary synchronization signal (SSS) for 5G system. The constructor expects two parameters, nID1 and nID2, as input. These two IDs can be scaler and/or vector. When both the IDs are vector they should be of equal length. The call method returns 1 or multiple SS sequences of length 127 based on the size of nID1 and nID2. Dimension of sssSequence = N x 127 where \(N = \max\{\) len(nID1), len(nID1) \(\}\). The details about the implementation of the sequence are provided in section 7.4.2.3.2 of 3GPP TS 38.211.
Note
The cell-ID is computed as, \(N_{ID}^{cell}\) = \(3. N_{ID}^{(1)}\) + \(N_{ID}^{(2)}\).
Warning
If both
nID1
andnID2
are numpy array, they must have same shape and size.- Parameters:
nID1 (int or NumPy array, np.int8) – Define cell-ID 1, \(N_{ID}^{(1)} \in {0,1,2,...,335}\).
nID2 (int or NumPy array, np.int8) – Define cell-ID 2, \(N_{ID}^{(2)} \in {0, 1, 2}\).
- Input:
No Input required
- Output:
(…, 127), np.int8 – Secondary synchronization sequence of shape \(\text{N} \times 127\) where N is the number of SSS sequences.
Important
If both
nID1
andnID2
are scalar, N (number of SS sequence) = 1.If
nID1
is an array andnID2
is scalar N (number of SS sequence) = length ofnID1
.If
nID1
is a scalar andnID2
is an array N (number of SS sequence) = length ofnID2
.If
nID1
is an array andnID2
is also an array N (number of SS sequence) = length ofnID1
.
- Raises:
ValueError – [Error-SSS]: Size of
nID1
andnID2
is inconsistent!ValueError – [Error SSS]:
nID1
must be an integer or integer numpy array!ValueError – [Error SSS]:
nID2
must be an integer or integer numpy array!Warnings – [Warning S_SSS]: ‘nID2’ should belong to interval {0, 1, 2}!
Warnings – [Warning SSS]: ‘nID1’ should belong to interval {0, 1, 2, …, 335}!
- References:
- [3GPPTS38211_SSS]
3GPP TS 38.211 “Physical channels and modulation (Release 17)”, V17.1.0 (2022-03).