SSS is a specific physical layer signal that is used for radio frame synchronization. It arrives two symbols after PSS, and it carries the larger half of the cell identity. PSS narrows the search to three candidates, and SSS then supplies N_ID(1), which takes 336 values. It has characterstics as listed below.
- Mapped to 127 active sub carriers around the center of SSB block located at subcarrier 56~182 (Refer to the structure of SSB)
- Placed at the third OFDM symbol (symbol 2) within a SSB Burst
- Made up of 127 m-Sequence Values
- Used for Downlink Frame Synchronization
- One of the critical factors determining Physical Cell ID
Followings are the details about SSS
- Comparision to LTE SSS
- Sequence Generation Algorithm
- PCI to PSS,SSS Converter
- PSS,SSS to PCI Converter
- Reference
Comparision to LTE SSS
Following is the PSS sequence generation formula for NR PSS and LTE SSS. Even though the details of LTE sequence generation is not shown here, fundamental nature of NR SSS and LTE SSS is similar. They are both based on m-sequence. However, if you get into the details of the sequence generation process, you will notice that LTE SSS generation is much more complicated than NR. LTE SSS sequence gets different depending on which subframe it is transmitted, whereas NR SSS does not vary with the subframe at which it is transmitted.
The two definitions are stacked with the clause number of each written above it. The NR line is a single product of two bracketed terms. The LTE line is a choice between two cases, and the case depends on which subframe carries the signal.

Figure 1. NR removed the subframe dependence. One SSS sequence serves every occasion in a cell, so a detection no longer has to be qualified by where in the frame it was found.
One label in that comparison is out of date. The NR formula is marked 38.211 - 7.4.2.2.1, and in 38.211 v19.4.0 that clause holds the PSS sequence generation. SSS sequence generation is clause 7.4.2.3.1. The numbering moved because clause 7.4.2.1 was reassigned to the physical-layer cell identities. The LTE label is still correct, and 36.211 v19.3.0 keeps SSS sequence generation at clause 6.11.2.1.
The subframe dependence is what the comparison is really about. LTE forms d(2n) from s0 in subframe 0 and from s1 in subframe 5, so one cell transmits two different SSS sequences inside a single radio frame. The swap is what let a UE separate subframe 0 from subframe 5, because the two carry different sequences.
NR does not do that. One sequence per cell serves every SSS occasion, so a detector never has to test two hypotheses about where in the frame it is looking. That simplification moves the problem elsewhere, because the frame position then has to be recovered from something other than SSS.
Property |
NR SSS |
LTE SSS |
|---|---|---|
Sequence generation clause today |
38.211 - 7.4.2.3.1 |
36.211 - 6.11.2.1 |
Clause number written in the figure |
38.211 - 7.4.2.2.1, which is now the PSS clause |
36.211 - 6.11.2.1, still current |
Construction shown in the figure |
The product of two shifted m-sequences |
An m-sequence multiplied by a scrambling sequence c0 |
Output indices the formula covers |
Every n from 0 to 126 |
The even indices, written d(2n) |
Varies with the subframe |
No |
Yes, subframe 0 uses s0 and subframe 5 uses s1 |
Both are m-sequence based : the family did not change between LTE and NR, unlike the PSS case.NR builds one product, LTE builds a scrambled pair : the NR formula multiplies two shifted copies, and the LTE formula multiplies a sequence by c0.The subframe dropped out of the definition : an NR cell sends one SSS sequence and an LTE cell sends two.The LTE formula covers only the even indices : d(2n) is written out, and the odd ones follow the same pattern with the roles reversed.The NR clause number in the picture is stale : SSS sequence generation is 38.211 - 7.4.2.3.1, and 7.4.2.2.1 now belongs to PSS.
Sequence Generation Algorithm
NR SSS sequence is generated by the following formula. Unless you are the one who need to implement this, you may not need to understand every details of this formula. But at least it would be good to know of the major factors to determine the sequence. Followings are some highlights about this sequence.
- The sequence is determined by both NID(1) and NID(2). In LTE, only NID(1) gets involved in SSS generation.
Six statements are stacked in the formula. The top two are the recursions for the two binary sequences, each written with the state it starts from. The middle line is the product that forms d(n). The lower lines give the two shifts, and the last of them is the identity split that feeds both.

Figure 2. The cell enters only through m0 and m1. Both underlying sequences are identical in every cell, exactly as on the PSS side.
Two recursions, not one : x0 adds x0(i+4) to x0(i), and x1 adds x1(i+1) to x1(i), both modulo 2.Both start from the same state : [x(6) ... x(0)] = [0 0 0 0 0 0 1] for each of them.d(n) is a product : [1 - 2 x0((n + m0) mod 127)] multiplied by [1 - 2 x1((n + m1) mod 127)].m0 = 3 floor(N_ID(1) / 112) + N_ID(2) : the first shift, and the only place N_ID(2) appears.m1 = (N_ID(1) mod 112) + m0 + 1 : the second shift, and it adds to the first rather than replacing it.n runs from 0 to 126 : one value for each of the 127 SSS subcarriers.
The first recursion is worth comparing with the PSS generator. The sequence x0 uses the same two tap positions, so it produces the same 127 values in the same cyclic order. Only the start state differs, and a different start state of one maximum length register gives a cyclic shift of one sequence. In this case the offset is 54 positions.
The second sequence is genuinely different. Its feedback reads x1(i+1) rather than x1(i+4), which is a different polynomial and a different sequence. Both still carry the property that matters. Over a full period each returns 127 against itself, and exactly -1 at every one of the other 126 alignments.
Figure 3. Nothing in the two generators depends on the cell. The identity only decides where each of the two read-outs begins, and the product of the two is what a UE detects.
The two shifts are the only cell dependent part. The first takes nine values, from 0 to 8, and the second takes 120 values, from 1 to 120. The two ranges overlap, so neither shift alone names a cell. Taken as a pair they do, because the 1008 identities produce 1008 distinct pairs with no collision anywhere.
One consequence deserves stating plainly. SSS on its own determines the whole physical cell identity, including the part PSS has already supplied. PSS is still needed, because it provides the symbol timing that lets SSS be sampled at all. The identity itself is not divided between the two signals in the way the arithmetic first suggests.
The separation between the 1008 sequences is good. Correlated against each other at the alignment a receiver would actually use, no two of them exceed 17 against a peak of 127. Across all pairs the correlation takes only four values, which are -17, -1, 0 and +15.
Two sequences and two shifts : the cell enters through m0 and m1, and never through the recursions themselves.x0 is the sequence PSS already uses : the same recursion with a different start state, offset by 54 positions.m0 spans 0 to 8 and m1 spans 1 to 120 : m1 is always the larger, because it is built as m0 plus at least one.All 1008 pairs are distinct : no two cell identities produce the same SSS sequence.SSS alone fixes the identity : it reads N_ID(2) as well as N_ID(1), so the pair (m0, m1) already names the cell.The sequences separate well : the largest correlation between any two of the 1008 is 17, against a peak of 127.
PCI to PSS,SSS Converter
Following is the formula to convert PCI to PSS,SSS. N_cell_ID indicates PCI, N_ID_2 indicates PSS and N_ID_1 indicates SSS. Cell planning assigns the physical cell identity, and both synchronization signals are built from the pieces of it. This division is the only step between the planned number and the sequences a cell transmits.
The division is by three, and it splits the identity unevenly on purpose. N_ID_1 is the quotient and runs from 0 to 335, while N_ID_2 is the remainder and runs from 0 to 2. The calculator refuses anything above 1007, because 38.211 clause 7.4.2.1 defines exactly 1008 identities.
Both halves are used on the SSS side. N_ID_1 sets m1 and part of m0, and N_ID_2 sets the rest of m0, so a change in either one produces a different SSS sequence. PSS reads only N_ID_2, and it ignores the quotient completely.
N_ID_1 is the quotient : the identity divided by three with the remainder discarded, which places it between 0 and 335.N_ID_2 is the remainder : the same division taken modulo three, so it is 0, 1 or 2.SSS uses both halves : m0 reads N_ID_2, and both shifts read N_ID_1.1008 identities factor as 3 times 336 : the three way factor goes to PSS and the 336 way factor to SSS.The range check is not cosmetic : a value above 1007 has no physical cell identity behind it.
PSS,SSS to PCI Converter
Following is the formula to convert PSS,SSS to PCI. N_cell_ID indicates PCI, N_ID_2 indicates PSS and N_ID_1 indicates SSS. This is the order in which a receiver obtains them. PSS gives N_ID_2 on symbol 0, SSS gives N_ID_1 on symbol 2, and the identity is assembled once both have been decoded.
The reconstruction multiplies N_ID_1 by three and adds N_ID_2, which is the definition 38.211 clause 7.4.2.1 gives. The calculator bounds each input on its own, because 336 or more for N_ID_1, or 3 or more for N_ID_2, describes no real cell.
A detector does not have to work in that order. Every one of the 1008 SSS sequences is distinct, so a successful SSS correlation already names the cell. The PSS step stays necessary for timing, and testing three hypotheses there costs far less than testing 1008.
The identity is 3 N_ID_1 + N_ID_2 : the quotient is scaled back up and the remainder is added on top.SSS arrives two symbols after PSS : symbol 2 against symbol 0 of the same SS/PBCH block.The two ranges differ in size : N_ID_1 reaches 335 and N_ID_2 stops at 2.SSS is the signal that determines the identity : its 1008 sequences are all distinct, so it carries the whole of it.Each input is bounded separately : 0 to 335 and 0 to 2, because an out of range pair maps above 1007.
Reference
[1] 38.211 v19.4.0 : NR - Physical channels and modulation. Clause 7.4.2.1 defines the physical-layer cell identities, clause 7.4.2.3.1 generates the SSS sequence, and clause 7.4.2.3.2 maps it to resource elements.
[2] 36.211 v19.3.0 : E-UTRA - Physical channels and modulation. Clause 6.11.2.1 generates the LTE SSS sequence.