5G/NR - Pre Trial - Physical Signal - BRS

 

 

 

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.

BRS - Beam Reference Signal

 

The PSS, SSS and ESS tell the UE the timing, the cell ID and the symbol index. But they do not tell the UE how strong each beam is. The BRS does that job. The gNB sends it on every beam of the sweep in subframes 0 and 25, so the UE can measure the received power of each beam and report the best one.

The BRS also serves as the DMRS for xPBCH. Both signals use the same beam in the same symbol, so the UE decodes xPBCH with the channel it has just measured on the BRS.

The sections that follow cover the BRS in order. The first builds the sequence, the second places it on the resource grid, and the third compares it with the reference signals that do the same job in LTE and NR.

Baseband Signal Generation

The BRS has to meet two needs. The UE must be able to measure it on every beam, and the UE must be able to tell one cell's BRS from another's. A pseudo-random QPSK sequence seeded with the cell ID meets both needs. Let's see how the code builds it, one symbol at a time.

For each OFDM symbol l from 0 to 13, the code builds a QPSK sequence r(m) from a Gold sequence c(n), with r(m) = (1 - 2c(2m))/√2 + j(1 - 2c(2m+1))/√2. The Gold sequence starts from cinit = 210(7(ns+1) + l' + 1)(2NIDcell+1) + 2NIDcell + 1, with l' = l mod 7. This is the same form as the LTE CRS, so the sequence changes with the symbol and with the cell ID.

Each symbol gets 8(NRBmax,DL - 18) values. With N_RB_MAX_DL = 100, that is 8 times 82, or 656 values. The 18 RBs in the center of the band carry the PSS, SSS and ESS, so the BRS skips them. In each of the other 82 RBs, the BRS uses 8 subcarriers. The RE mapping section shows both.

 

BRS Full

BRS - Initial 62 data

All 656 BRS values for symbols s = 0 to 13, each as a QPSK constellation and as real and imaginary parts

The first 62 BRS values for symbols s = 0 to 13, each as a QPSK constellation and as real and imaginary parts

 

The left column plots all 656 values for each symbol, from s = 0 to s = 13. The right column plots only the first 62 values, so the individual steps are visible. In each row, the small square is the constellation, and the wide panel plots the real part in red and the imaginary part in blue. Every constellation has four points, one in each quadrant, because each value is a QPSK symbol.

Now compare the rows in the right column. Rows s = 7 to 13 repeat rows s = 0 to 6. The reason is in Generate_Brs.m. The line ns = floor(1/7) always gives 0, so cinit depends only on lp = mod(l,7), and symbols l and l+7 get the same sequence. The lp line suggests that ns was meant to be floor(l/7), the slot index inside the subframe. Check V5G.211 6.7.4.1 before you rely on either version.

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_Brs.m

Last Update : Dec 24, 2016

%V5G.211 - 6.7.4.1

function SequenceBrs = Generate_Brs(BRS)

 

    NID_Cell = BRS.NID_Cell;

    N_RB_MAX_DL = BRS.N_RB_MAX_DL;

 

    r_m = [];

    

    for l = 0:13

        

        % Generate Psuedo Random Sequence

        ns = floor(1/7);

        lp = mod(l,7);

        C_init = 2^10 * (7*(ns + 1) + lp + 1) * (2 * NID_Cell + 1) + 2 * NID_Cell + 1;

 

        r_m_l = [];

        c_m_even = [];

        c_m_odd = [];

 

        PR.x2_init = C_init;

 

        for m = 0 : (8*(N_RB_MAX_DL-18)-1)

          PR.n = 2*m;

          c_m = Generate_PR(PR);

          c_m_even = [c_m_even c_m];

          PR.n = 2*m+1;

          c_m = Generate_PR(PR);

          c_m_odd = [c_m_odd c_m];

        end;

 

        r_m_l = (1 ./ sqrt(2) * (1 - 2 .* c_m_even)) + (j .* 1 ./ sqrt(2) * (1 - 2 .* c_m_odd));

        

        r_m = [r_m ; r_m_l];

 

    end;

    

    SequenceBrs.r_m = r_m;

    

end

 

Filename : PlotSequence_Brs.m

Last Update : Dec 24, 2016

function h=PlotSequence_Brs(BrsSequence,PlotOption)

 

    plotData = BrsSequence.r_m;

    if isfield(PlotOption,'NumOfDataToPlot') == 1

       NumOfDataToPlot = PlotOption.NumOfDataToPlot;

    end;

    

    w = 10;

    

    for l = 0:13

        d_n=plotData(l+1,:);

        

        subplot(14,w,(l*w)+1);

        plot(real(d_n),imag(d_n),'ro', ...

             'MarkerFaceColor',[1 0 0],'MarkerSize',2);

        set(gca,'xticklabel',[]);set(gca,'yticklabel',[]);

        set(gca,'xtick',[]);set(gca,'ytick',[]);

        ylabel(strcat('s = ',num2str(l)));

        set(gca,'fontsize',6);

 

        subplot(14,w,[((l*w)+2) ((l*w)+w)]);

        n = 0:length(d_n)-1;

        plot(n,real(d_n),'r-',n,imag(d_n),'b-');

        if exist('NumOfDataToPlot') == 1

            xlim([0 NumOfDataToPlot]);

        else    

            xlim([0 n(end)]);

        end;    

        set(gca,'xticklabel',[]);set(gca,'yticklabel',[]);

        set(gca,'xtick',[]);set(gca,'ytick',[]);

    end

 

end

 

Filename : Test_Generation_Brs.m

Last Update : Dec 24, 2016

 

clear

PlotOption = [];

 

BRS.NID_Cell = 0;

BRS.N_RB_MAX_DL = 100;

 

BrsSequence = Generate_Brs(BRS);

 

%PlotOption.NumOfDataToPlot = 62;

PlotSequence_Brs(BrsSequence,PlotOption);

 

 

 

Generate_Brs.m returns all 14 symbols in SequenceBrs.r_m, one row per symbol. The Gold sequence comes from Generate_PR, which is listed on the Pseudo Random Sequence page. Test_Generation_Brs.m plots the full rows. To plot only the first 62 values, remove the % in front of PlotOption.NumOfDataToPlot = 62.

  • The BRS is a QPSK Gold sequence : the same construction as the LTE CRS, seeded with the symbol and NIDcell.
  • Each symbol carries 656 values : 8 subcarriers in each of the 82 RBs outside the center 18 RBs, for 100 RBs.
  • The cell ID separates cells : a UE can tell the BRS of its own cell from the BRS of a neighbor.
  • The listed code repeats symbols 0 to 6 : ns = floor(1/7) is always 0, so symbols 7 to 13 get the same sequence.

RE Mapping of BRS

RE Mapping, or Resource Element Mapping, decides which subcarrier and which OFDM symbol carries each BRS value. The BRS shares subframes 0 and 25 with the synchronization signals and xPBCH. So the question is which resource elements are left for it.

The BRS goes into every OFDM symbol, from 0 to 13, in subframes 0 and 25. In frequency, it uses the 5th to the 12th subcarrier of each RB, outside the 18 RBs in the center of the band. The first four subcarriers of each RB are reserved for xPBCH.

 

BRS resource elements beside those reserved for xPBCH

Matlab Code :  BRS

The left panel shows the whole subframe, with subcarriers 0 to 1200 on the vertical axis and the 14 OFDM symbols on the horizontal axis. The band around subcarrier 600 is marked Reserved for PSS, SSS, ESS, and the BRS stripes fill the rest of the band. The right panel enlarges subcarriers 0 to 47, which are the first four RBs.

In the right panel, each RB starts with four subcarriers labelled Reserved for xPBCH, and then eight subcarriers labelled BRS. The pattern repeats every 12 subcarriers, and it is the same in all 14 symbols. So in every symbol, xPBCH and the BRS sit side by side on the same beam.

This is what lets the UE measure each beam. In symbol l, the BRS goes out on the beam of that symbol, so the received power of the BRS in symbol l is the received power of beam l. The ESS has already told the UE which symbol is which, so the UE can report the best beam by its index.

  • The BRS fills all 14 symbols of subframes 0 and 25 : one beam per symbol, so one measurement per beam.
  • The BRS takes 8 of the 12 subcarriers in each RB : subcarriers 5 to 12, and xPBCH takes the first four.
  • The center 18 RBs carry no BRS : they are reserved for the PSS, SSS and ESS.
  • The BRS sits next to xPBCH on the same beam : that is why it can serve as the xPBCH DMRS.

Comparison with LTE and NR

Every system needs a reference signal that the UE can measure to judge the link. The BRS adds one requirement: the measurement has to be per beam. Let's compare it with the signals that do this job in LTE and NR.

 

Item

LTE

5G Pre-Trial

NR

Signal the UE measures

CRS

BRS

SSB for initial access, CSI-RS for beam management

What the UE learns

Received power of the cell

Received power of each of the 14 beams

Received power of each SSB beam or CSI-RS beam

Beam sweep

No

Yes, one beam per symbol in subframes 0 and 25

Yes, one beam per SSB, and CSI-RS beams configured by RRC

Sequence

QPSK Gold sequence seeded with NIDcell, slot and symbol

QPSK Gold sequence seeded with NIDcell and symbol

PBCH DMRS and SSS for SSB, QPSK Gold sequence for CSI-RS

Demodulation role

Reference for PBCH and PDCCH

DMRS for xPBCH

PBCH has its own DMRS

 

LTE has no beam sweep, so one cell-wide measurement is enough. The CRS gives the UE the received power of the cell, and the same CRS also serves as the reference for PBCH and PDCCH.

The Pre-Trial BRS keeps the LTE construction, a QPSK Gold sequence, but sends it on a different beam in each symbol. That turns one measurement per cell into 14 measurements per cell. The BRS also keeps a demodulation role, for xPBCH, much as the CRS does for PBCH in LTE.

NR splits the BRS job in two. The UE measures the SSB beams for initial access, using the SSS and the PBCH DMRS. After that, the network can configure CSI-RS beams for finer beam management. PBCH gets its own DMRS inside the SSB, so no separate signal needs to serve two roles.

  • LTE measures the cell : the CRS has no beam sweep.
  • The Pre-Trial measures each beam : the BRS repeats in all 14 symbols, one beam per symbol.
  • NR splits the job : SSB beams for initial access, and CSI-RS beams for beam management.