Matlab Toolbox - 4G/LTE

 

 

 

Primary Synchronization Signal (PSS)

 

The PSS is the first signal a UE looks for, so ltePSS is also one of the simplest functions in the toolbox. It needs only the cell identity to produce its 62 symbols. This page generates them, shows how they change with NCellID, and places them in the resource grid.

If you don't know what PSS (Primary Synchronization Signal) is, refer to Physical Layer Signal : PSS (Primary Synchronization Signal) page first.

Followings are the topics to be covered in this page.

PSS Symbol Generation

This part shows how to generate PSS symbols (modulated date) which will be allocated for each RE (Resource Element) in PSS region in LTE Downlink Radio Frame.

    % Since PSS is determined by each eNodeB, you have to define properites of a eNodeB.  

    % NDLRB indicate System Bandwith in the unit of RBs.

    % NDLRB 6 = 1.4 Mhz, NDLRB 15 = 3.0 Mhz, NDLRB 25 = 5.0 Mhz,

    % NDLRB 50 = 10 Mhz, NDLRB 75 = 15 Mhz, NDLRB 100 = 20 Mhz

    % CellRefP indicate number of downlink Antenna. CellRefP = 1 means 1 transmission antenna (SISO)

    % NCellID indicate PCI (Physical Cell Identity) of the Cell

    % NSubframe indicate the subframe number. Since PSS resides only in a specific subframe,

    % you need to specify the proper subframe number here.

    enb.CyclicPrefix = 'Normal';

    enb.NDLRB = 6;

    enb.CellRefP = 1;

    enb.DuplexMode = 'FDD';

     

    enb.NCellID = 0;

    enb.NSubframe = 0;

     

    % if you pass the eNodeB information (enb) into ltePSS(), it will generate the PSS symbols for the specified cell.

    % pss_arrayIndex is just a sequence of integer which will used to plot PSS symbols.

     

    pss = ltePSS(enb);

    pss_arrayIndex = 0:length(pss)-1;

     

    % Following is to represent PSS symbols.

     

    subplot(1,3,1);

    plot(real(pss),imag(pss),'ro','MarkerFaceColor',[1 0 0]);

    title('Constellation');

    subplot(1,3,[2 3]);

    plot(pss_arrayIndex,real(pss),'ro-',pss_arrayIndex,imag(pss),'bo-');

    xlim([0 max(pss_arrayIndex)]);

    title('PSS index vs PSS value. Red -> real, Blue -> Imaginary');

The 62 values follow 36.211 v19.3.0 clause 6.11.1.1. The PSS is a frequency-domain Zadoff-Chu sequence of length 63 with its middle element removed. So du(n) = e-jπun(n+1)/63 for n = 0 to 30, and du(n) = e-jπu(n+1)(n+2)/63 for n = 31 to 61. The removed element would sit on the DC subcarrier, which the downlink leaves empty.

The root index u is the only parameter. Table 6.11.1.1-1 gives u = 25, 29 and 34 for NID(2) = 0, 1 and 2. NID(2) is the physical-layer identity within the cell-identity group, and it equals NCellID mod 3. The other fields of enb, such as NDLRB and CellRefP, do not change the values ltePSS returns.

  • 62 values, constant amplitude : every value lies on the unit circle.
  • Root index u = 25, 29 or 34 : selected by NID(2).
  • NID(2) = NCellID mod 3 : the only part of the cell identity that the PSS carries.

How does the PSS change with NCellID ?

The plots below answer a practical question: how many different PSS sequences can a UE meet? The code runs three times, with NCellID 0, 1 and 2, and every other setting unchanged.

Following is the result of the code listed above with some variable changes.

If you see the left plot (constellation), you would notice PSS is a ZadOff Chu sequence. As you see in the right side graph, PSS is made up of 62 symbols.

    enb.CellRefP = 1;

    enb.NCellID = 0;

 

Constellation and real and imaginary parts of the 62 PSS symbols for NCellID 0

NCellID 0, root index u = 25. Both the real part in red and the imaginary part in blue are symmetric about the middle of the sequence.

The only difference between this example and previous example is NCellID. If you compare this with previous example, you would notice that the sequence of symbols are different. It means PSS sequence varies with NCellID (PCI : Physical Cell ID)

    enb.CellRefP = 1;

    enb.NCellID = 1;

 

Constellation and real and imaginary parts of the 62 PSS symbols for NCellID 1

NCellID 1, root index u = 29.

The only difference between this example and previous example is NCellID. If you compare this with previous example, you would notice that the sequence of symbols are different. It means PSS sequence varies with NCellID (PCI : Physical Cell ID)

    enb.CellRefP = 1;

    enb.NCellID = 2;

 

Constellation and real and imaginary parts of the 62 PSS symbols for NCellID 2

NCellID 2, root index u = 34. The constellation is the one for NCellID 1 reflected about the real axis, and the imaginary part has the opposite sign.

If you have Matlab LTE Toolbox, plot more cases with different NCellID (e.g, NCellID 3,4,5,6,7,8...) and see how the PSS pattern varies.

That experiment gives only three patterns. NCellID 3 gives the same PSS as NCellID 0, NCellID 4 the same as NCellID 1, and so on, because the PSS depends only on NCellID mod 3. The UE finds NID(2) from the PSS, and NID(1), from 0 to 167, from the SSS. Together they give NIDcell = 3NID(1) + NID(2), which is one of 504 values.

The plots also show two properties of the sequence. The first is symmetry: du(61 - n) = du(n), so the second half repeats the first half in reverse order, and the plots are mirror images about the middle. The second is conjugation: 29 + 34 = 63, so the sequences for NCellID 1 and 2 are complex conjugates of each other. That is why the NCellID 2 constellation is the NCellID 1 constellation reflected about the real axis.

  • Three PSS sequences only : NCellID 3, 4 and 5 repeat NCellID 0, 1 and 2.
  • NID(2) from the PSS, NID(1) from the SSS : NIDcell = 3NID(1) + NID(2).
  • Symmetric sequence : du(61 - n) = du(n).
  • u = 29 and u = 34 are conjugates : because 29 + 34 = 63.

Where does the PSS go in the grid ?

ltePSS returns only the values, so the next question is where they go. The toolbox answers that with ltePSSIndices, which the Cell RS page uses to place the PSS into a grid from lteDLResourceGrid.

36.211 clause 6.11.1.2 maps the 62 values onto the 62 subcarriers around DC. Five subcarriers on each side of them are reserved and carry nothing, so the PSS occupies the central 72 subcarriers, or 6 RB, whatever the bandwidth. With NDLRB = 6, as in the code above, those 6 RB are the whole 1.4 MHz carrier. For frame structure type 1, the PSS goes in the last OFDM symbol of slots 0 and 10, which are in subframes 0 and 5. That is why the code comments ask for a suitable NSubframe.

  • Central 72 subcarriers : 62 for the PSS and 5 reserved on each side.
  • Same position for every bandwidth : the UE can find the PSS before it knows NDLRB.
  • Last symbol of slots 0 and 10 for FDD : subframes 0 and 5 of each radio frame.

Disclaimer !

This page is only to show you the overall logics and visualization for various LTE physical layer channels. I haven't investigated much about verifying about the accuracy.

If you think the code is not so efficient, it is 100% my fault. I haven't made any effort for effiecient code. I just tried to create code as simple as possible for the readers. As you know, easy-to-read code is not always efficient for a specific chipset.

If you find any mistake in terms of accuracy, it is also very highly likely be my fault. Not the problem of Matlab tool box itself.

Any comment and corrections if you find any mistake will be welcome and appreciated.

Reference

[1] 3GPP TS 36.211 v19.3.0 - clause 6.11.1, Primary synchronization signal

[2] Physical Layer Signal : PSS