What is SSS?
The Secondary Synchronization Signal (SSS) is a 127-element Gold sequence transmitted in the center 127 subcarriers of SSB symbol 2. While PSS uses a single m-sequence cyclically shifted (3 possibilities), SSS uses the product of two m-sequences to generate 336 distinct sequences — one per possible N¹_ID value.
Because the UE already has accurate symbol timing from PSS, it does not need to slide a template across the buffer. Instead, it directly extracts symbol 2, runs an FFT, and correlates in the frequency domain against all 336 SSS sequences. Whichever gives the strongest correlation identifies N¹_ID.
d(n) = [1 − 2x₀((n+m₀) mod 127)] · [1 − 2x₁((n+m₁) mod 127)]
where m₀ = 15·⌊N¹_ID / 112⌋ + 5·N²_ID and m₁ = N¹_ID mod 112
SSS sequence generation
SSS uses two different m-sequences, x₀ and x₁, with different feedback polynomials. Their element-wise product creates the Gold sequence. The shifts m₀ and m₁ depend on both N¹_ID and N²_ID — so SSS encodes N¹_ID while also incorporating N²_ID (already known from PSS) into its structure.
x₀(i+7) = (x₀(i+4) + x₀(i)) mod 2 ← same as PSS m-sequence x₁(i+7) = (x₁(i+1) + x₁(i)) mod 2 ← different polynomial Both initialized with: x(0..6) = [1,0,0,0,0,0,0] // Shifts for our example: N¹_ID=147, N²_ID=1 m₀ = 15 × ⌊147/112⌋ + 5 × 1 = 15×1 + 5 = 20 m₁ = 147 mod 112 = 35 // Gold sequence: element-wise product d(n) = [1−2·x₀((n+20) mod 127)] × [1−2·x₁((n+35) mod 127)] // First 4 values (N¹_ID=147, N²_ID=1): d(0) = [1−2·x₀(20)] × [1−2·x₁(35)] = [1−2·1] × [1−2·0] = −1×+1 = −1 d(1) = [1−2·x₀(21)] × [1−2·x₁(36)] = [1−2·0] × [1−2·1] = +1×−1 = −1 d(2) = [1−2·x₀(22)] × [1−2·x₁(37)] = [1−2·0] × [1−2·0] = +1×+1 = +1 d(3) = [1−2·x₀(23)] × [1−2·x₁(38)] = [1−2·1] × [1−2·1] = −1×−1 = +1
How the UE finds SSS
Since timing is already known from PSS, the UE jumps directly to SSB symbol 2. It removes the cyclic prefix (144 samples), runs an FFT on the 2048 useful samples, and extracts the 127 center subcarriers. Then it correlates against all 336 pre-computed SSS sequences.
t_SSS = 4523 + 2×2192 = 8907 ← SSS symbol start CP = samples 8907..9050 ← discard (144 samples) Useful = samples 9051..11098 ← 2048 samples → FFT input
corr(N¹_ID=0) = 0.41 corr(N¹_ID=1) = 0.88 ... corr(N¹_ID=146) = 2.31 corr(N¹_ID=147) = 72.4 ← PEAK corr(N¹_ID=148) = 1.95 ... corr(N¹_ID=335) = 0.67 → N¹_ID = 147