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.


PSS (Primary Synchronization Signal)


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



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.



Sequence Plot






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 -

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);    


             d = exp(-j*pi*u*(n+1)*(n+2)/63);   



        d_u = [d_u d];




    SequencePss = d_u;





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;



    plot(real(PssSequence(1:31)),imag(PssSequence(1:31)), ...

         'ko','MarkerFaceColor',[0 0 0]);

    axis([xmin xmax ymin ymax]);




    plot(real(PssSequence(32:62)),imag(PssSequence(32:62)), ...

        'bo','MarkerFaceColor',[0 0 1]);

    axis([xmin xmax ymin ymax]);





        'ro','MarkerFaceColor',[1 0 0]);

    axis([xmin xmax ymin ymax]);






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;






RE Mapping(Resource Element Mapping) of PSS


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.



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