5G/NR - Pre Trial - Physical Signal - PSS
NOTE : This note is about a tempary 5G specification that was implemented and tried before 5G specification is finalized. I keep this note for study purpose.
Let's start with the first signal a UE looks for on a 5G Pre-Trial carrier. The Pre-Trial physical layer is defined in V5G.211, and it borrows its PSS from LTE almost unchanged. So if you already know the LTE PSS, most of this page will look familiar. The part to watch is the time mapping, because that is where the Pre-Trial starts to look like NR.
PSS is a specific physical layer signal that is used for radio frame synchronization. It has characterstics as listed below.
- Mapped to 72 active sub carriers(6 resource blocks), centered around the DC subcarrier at every OFDM symbols in Subframe 0 and at every OFDM symbols in Subframe 25. (Note : the 5 subcarriers at the bottom and top (10 subcarriers in total) are not allocated any data, meaning only 62 subcarriers carries the real PSS data)
- Made up of 62 Zadoff Chu Sequence Values
- Used for Downlink Frame Synchronization
- One of the critical factors determining Physical Cell ID
The sections that follow cover these points in order. The first builds the sequence, the second places it on the resource grid, and the third compares the result with the LTE PSS and the NR PSS.
Baseband Signal Generation
The signal generation algorithm of Pretrial PSS is same as LTE PSS. It generate three different Zadoff Chu sequences that are made up of 62 data points as shown below. This is same as LTE PSS signal generation.
Written out, the sequence du(n) has two parts. For n = 0, 1, ..., 30, du(n) = e-jπun(n+1)/63. For n = 31, 32, ..., 61, du(n) = e-jπu(n+1)(n+2)/63. The root index u is 25, 29 or 34, for NID(2) = 0, 1 or 2. The NID column in the table is this NID(2).
Why does the second part use (n+1)(n+2) instead of n(n+1)? The shift skips the middle value of a length-63 Zadoff-Chu sequence. That middle value would sit on the DC subcarrier, which carries no data. So 62 values remain, 31 on each side of DC.
|
NID |
Sequence Plot |
|
0 |
|
|
1 |
|
|
2 |
|
Each row of the table plots one sequence on the complex plane, in three panels. The black panel holds n = 0..30, the blue panel holds n = 31..61, and the red panel holds all 62 values. Every point sits on the unit circle. So each PSS subcarrier carries the same power, whichever root is in use.
The black and blue panels show the same set of points. This is because the second half is the first half in reverse order, du(61-n) = du(n). Also compare the rows for NID 1 and NID 2. Root 34 is 63 - 29, so the NID 2 sequence is the complex conjugate of the NID 1 sequence. Its plot is therefore the NID 1 plot mirrored across the real axis.
Disclaimer : This code is just to push myself (probably readers) to look into the algorithm (formula) specified in the specification to the most detailed level. If you try to convert the specification into the programming code whatever language you choose, you will understand the equation / algorithm in much more detailed level than just reading the document. However, this code has not been verified with any real data.
|
Filename : Generate_Pss.m Last Update : Dec 15, 2016 |
|
%V5G.211 - 6.8.1.1 function SequencePss = Generate_Pss(PSS)
u_shift = [25 29 34];
NID = PSS.NID;
d_u = [];
for n = 0:61
u = u_shift(NID+1);
if n <= 30 d = exp(-j*pi*u*n*(n+1)/63); else d = exp(-j*pi*u*(n+1)*(n+2)/63); end;
d_u = [d_u d];
end;
SequencePss = d_u;
end |
|
Filename : PlotSequence_Pss.m Last Update : Dec 15, 2016 |
|
function h=PlotSequence_Pss(PssSequence,PlotOption)
xmin = PlotOption.xmin; xmax = PlotOption.xmax; ymin = PlotOption.ymin; ymax = PlotOption.ymax;
subplot(1,3,1); plot(real(PssSequence(1:31)),imag(PssSequence(1:31)), ... 'ko','MarkerFaceColor',[0 0 0]); axis([xmin xmax ymin ymax]); title('n=0..30');
subplot(1,3,2); plot(real(PssSequence(32:62)),imag(PssSequence(32:62)), ... 'bo','MarkerFaceColor',[0 0 1]); axis([xmin xmax ymin ymax]); title('n=31..61');
subplot(1,3,3); plot(real(PssSequence(1:62)),imag(PssSequence(1:62)),... 'ro','MarkerFaceColor',[1 0 0]); axis([xmin xmax ymin ymax]); title('n=0..61');
end |
|
Filename : Test_Generation_Pss.m Last Update : Dec 15, 2016 |
|
PSS.NID = 0;
PssSequence = Generate_Pss(PSS);
PlotOption.xmin = -1.5; PlotOption.xmax = 1.5; PlotOption.ymin = -1.5; PlotOption.ymax = 1.5;
PlotSequence_Pss(PssSequence,PlotOption);
|
Each of the three code blocks has one job. Generate_Pss.m builds the 62 values for one NID, PlotSequence_Pss.m draws the three panels, and Test_Generation_Pss.m runs both for NID 0. Change PSS.NID to 1 or 2, and you get the other two rows of the sequence plot table.
The Pre-Trial PSS reuses the LTE sequence : a length-63 Zadoff-Chu sequence with roots 25, 29 and 34, with the middle value removed.Every value has unit amplitude : all 62 points in the sequence plots sit on the unit circle.The two halves mirror each other : the second half is the first half in reverse order, so both plot the same points.The root carries NID(2) : when the UE finds which of the three sequences is present, it has one part of the Physical Cell ID.
RE Mapping of PSS
RE Mapping, or Resource Element Mapping, decides which subcarrier and which OFDM symbol carries each PSS value. The sequence is the same as in LTE, so the mapping is where the Pre-Trial PSS differs. As you will see, the difference is in time rather than in frequency.
The location of PSS within a radio frame is as highlighed in red box below. It is at the center of the frequency domain in subframe 0 and 25.

In the radio frame map, each column is one of the 50 subframes, numbered 0 to 49, and the vertical axis is frequency. The red boxes appear only in subframes 0 and 25. The colored blocks right next to each red box are the SSS and the ESS, which share the same two subframes.
A Pre-Trial subframe lasts 0.2 ms, so 25 subframes make 5 ms. The UE therefore gets one PSS opportunity every 5 ms. This is the same PSS period as in LTE FDD, where the PSS appears in subframes 0 and 5 of a 10 ms frame.
If you cut out only subframe 0 and maginify the resource elements around the center frequency, it looks as shown below. In frequency domain allocation, it is same as in LTE PSS, but in time domain allocation you would find a big difference from LTE PSS. In case of LTE PSS, it occupies only one OFDM symbol but in 5G Pretrial it occupies the whole subframe (i.e, 14 OFDMA Symbols). Why it use 14 OFDMA symbols ? Actually, the data being carried by each OFDM symbol is same in every symbol. The difference is with antenna ports. As you see below, each of OFDM symbol for PSS is mapped to different antenna ports. These antenna ports will use different Beam Configuration.
In short, the same PSS signal is being transmitted in every symbols in subframe 0 and 25 with different beam direction for each symbol. (If you are interested in the fundamental idea of this type of transmission, refer to Synchronization Signal in a frame structure).

Matlab Code : PSS
The left panel of the magnified view shows the whole subframe. Subcarriers 0 to 1200 run up the vertical axis, and the 14 OFDM symbols run along the horizontal axis. The grey box, from subcarrier 450 to 750, is enlarged in the right panel. There the PSS fills the 62 subcarriers around subcarrier 600 in every one of the 14 symbols.
The labels mark the PSS for port 300 on the first symbol and the PSS for port 313 on the last symbol. The ports in between follow the symbols in between. So the gNB can send each symbol on a different beam, and a UE receives the PSS best in the symbol whose beam points toward it.
This mapping changes what the UE learns from a PSS detection. In LTE, the PSS has one fixed position, so a detection gives the symbol timing and the 5 ms boundary together. In the Pre-Trial, the same sequence appears in 14 symbols. A detection gives the symbol timing, but the UE still does not know which of the 14 symbols it received. The ESS carries that symbol index.
The PSS appears only in subframes 0 and 25 : the UE gets one opportunity every 5 ms, the same period as in LTE.The frequency mapping matches LTE : 62 subcarriers carry the sequence inside a 72 subcarrier, 6 RB allocation around the center.The time mapping does not match LTE : the PSS fills all 14 symbols, with one antenna port per symbol from 300 to 313.A PSS detection does not give the symbol index : the sequence is the same in every symbol, so the ESS has to supply it.
Comparison with LTE PSS and NR PSS
The Pre-Trial PSS sits between two standards. It keeps the LTE sequence, but it already sweeps beams, as NR later does with SSB bursts. Let's put the three side by side, so you can see which choices NR kept and which it replaced.
|
Item |
LTE PSS |
5G Pre-Trial PSS |
NR PSS |
|
Sequence |
Zadoff-Chu, length 63, middle value removed |
Same as LTE |
BPSK m-sequence, length 127 |
|
Number of values |
62 |
62 |
127 |
|
How NID(2) is carried |
Root 25, 29 or 34 |
Root 25, 29 or 34 |
Cyclic shift 0, 43 or 86 |
|
Subcarrier spacing |
15 kHz |
75 kHz |
15 or 30 kHz in FR1, 120 kHz or more in FR2 |
|
Allocation |
72 subcarriers, 6 RB, 1.08 MHz |
72 subcarriers, 6 RB, 5.4 MHz |
127 subcarriers inside the 240 subcarrier SSB, 20 RB |
|
Position in time |
One OFDM symbol, in subframes 0 and 5 for FDD |
All 14 OFDM symbols of subframes 0 and 25 |
The first OFDM symbol of each SSB |
|
Period |
5 ms |
5 ms |
Set by ssb-periodicityServingCell, from 5 ms to 160 ms |
|
Beams |
No beam sweep |
14 beams, one antenna port per symbol, ports 300 to 313 |
One beam per SSB, up to 4, 8 or 64 SSBs in a burst |
|
How the UE learns the beam or symbol index |
Not needed |
ESS |
SSB index, from PBCH DMRS and the PBCH payload |
Start with the sequence rows. The Pre-Trial changed only the numerology and the time mapping, and it kept the LTE sequence. So a Pre-Trial PSS detector can reuse an LTE correlator. Only the sample rate and the search over 14 symbols change.
NR went further and replaced the sequence. A Zadoff-Chu sequence couples a timing offset with a frequency offset. So a frequency error moves the correlation peak in time, and the UE reads a wrong timing. The NR m-sequence is less sensitive to this. NR also uses three cyclic shifts of one sequence instead of three roots.
Now look at the last two rows. NR kept the idea of a beam sweep, but it sweeps whole SS/PBCH blocks rather than single PSS symbols. Each block carries its own SSB index in the PBCH DMRS and the PBCH payload. That index does the job the ESS does in the Pre-Trial. For the NR side in detail, see NR PSS.
The Pre-Trial kept the LTE sequence : only the subcarrier spacing and the time mapping changed.NR replaced the sequence : a length-127 m-sequence with three cyclic shifts took the place of three Zadoff-Chu roots.The beam sweep continued into NR : it moved from 14 PSS symbols to a burst of SS/PBCH blocks.The SSB index took over the job of the ESS : it tells the UE which beam, and so which time position, it received.


