5G/NR - SS Block  

 

 

 

SS Block(SSB) in a Nutshell

 

  • What is it for ?  Carries specific signals for establishing Dowlink Synchronization
  • Components of SSB : PSS(Prinmary Sync Signal),SSS(Secondary Sync Signal) and PBCH
  • Position of SSB in Frequency Domain : Variable (Configurable) meaning 'No need to be at the center frequency'.
  • Period of SSB transmission : ms5, ms10, ms20, ms40, ms80, ms160 but ms20 (20ms interval) is most common
  • Max number of consecutive SSB : 4 or 8 or 64 (4 or 8 is for FR1, 64 for FR2)
  • Main purpose of consecutive SSBs : Beam Management (i.e, Transmitting each SSB in different beam)
  • RRC Parameters for SSB sequence and SSB Interval : ssb-PositionsInBurst, ssb-periodicityServingCell

SS Block in Detail

SS Block(SSB) stands for Synchronization Signal Block and in reality it refers to Synchronization/PBCH block because Synchnronization signal and PBCH channel are packed as a single block that always moves together. The components of this block are as follows :

  • Synchronization Signal : PSS (Primary Synchronization Signal), SSS (Secondary Synchronization Signal)
  • PBCH : PBCH DMRS and PBCH (Data)

This is just two major components of SS Block and it carries a lot of details. Followings are the topics that will be explained in this page.

LTE SS Block vs NR SS Block

Following illustrations shows some high level differences between LTE SS Block and NR SS Block (In LTE, we didn't use the term 'SS Block', but LTE also use PSS/SSS and PBCH which can be called as SS Block).

Major difference between LTE SS/PBCH and NR SSH lies in the periodicity of each channel. In LTE, SS(PSS,SSS) are transmitted in every 5ms and PBCH is tranmitted in every 10ms. That is, the periodicity of SS and PBCH are different in LTE. However in NR, SS and PBCH are transmitted all at the same time, which means their perodicity is all same. Typical periodicity of SSB(SS+PBCH) in NR is 20ms, but the peridicity can vary in terms of 3gpp specification.

Time Domain transmission pattern of SS Block in NR is more complicated than LTE SS Block (Actually LTE has only one pattern of SSB Transmission in Time Domain as shown in LTE Frame Structure. In LTE, the subframe number and OFDM symbol number within the subframe is always same in any cases). In NR, there are many different cases of Time Domain pattern of SSB Transmission as illustrated below.

NOTE 1 : I want to introduce a good note for this type of design quoted from section II of this paper as follows :

    The transmission of SS/PBCHs within an SS/PBCH set is confined to a 5 ms window.The maximum number of SS/PBCHs within an SS/PBCH set (i.e., within 5ms period) is specified to be4 for frequency ranges up to 3 GHz, 8 for 3 to 6 GHz, or 64 for 6 to 52.6 GHzin order to achieve a trade-off between coverage and resource overhead. Furthermore, the number of actual transmitted SS/PBCHs is configurable and could be less than the maximum number. This option is particularly useful towards reducing processing burden at the gNB, especially in the case of requiring transmission of multiple SS/PBCHs on multiple carriers within a slot

SSB Transmission Pattern(SSB Bitmap)

The illustration of SSB transmission shown above is the case where all the SSB is transmitted, but it is not required to transmit all the SSB. Depending on network requirement, it can selectively transmit only a few SSB and inform UE of which SSBs are transmitted and which are not transmitted. This transmission pattern is informed via a RRC IE(Information Element) called ssb-PositionInBurst. The structure of ssb-PositionInBurst is a little different depending on which message it is used.. I don't know why they designed the same thing in different way though.

This is used for SA(Standalone) and configured in SIB1 message.

ServingCellConfigCommonSIB ::=      SEQUENCE {

     ...

    ssb-PositionsInBurst                    SEQUENCE {

        inOneGroup                          BIT STRING (SIZE (8)),

        groupPresence                       BIT STRING (SIZE (8))                                       OPTIONAL -- Cond Above6GHzOnly

    },

    ssb-periodicityServingCell       ENUMERATED { ms5, ms10, ms20, ms40, ms80, ms160, spare2, spare1 }

}

NOTE : In FR1, inOneGroup can specify all the possible ssb bitmap. In FR2, inOneGroup only cannot specify all the possible ssb bitmap because FR2 SSB bitmap is max 64 bits, but inOneGroup can specify only 8 bits.  groupPresence IE is to handle this kind of situation. The 64 bitmap is grouped into 8 group which comprised of 8 bits. Each of the group bitmap is specified by groupPresense. Combining the two IE inOneGroup and groupPrsense can specify any of 64 bitmap.

 

This is used for NSA(Non-Standalone) and configured in RRC Connection Reconfiguration in LTE anchor.

ServingCellConfigCommon ::= SEQUENCE {

    ....,

    ssb-PositionsInBurst CHOICE {

        shortBitmap                   BIT STRING (SIZE (4)),

        mediumBitmap                   BIT STRING (SIZE (8)),

        longBitmap                     BIT STRING (SIZE (64))

    },

    ssb-periodicityServingCell       ENUMERATED { ms5, ms10, ms20, ms40, ms80, ms160, spare2, spare1 }  

..

}

Even though the structure of ssb-PositionInBurst is a little bit different depending cases, the way of interpretation is pretty similar. The first bit(the left most bit) indicates the first SSB, the second bit(the second from the left most bit) indicates the second SSB etc. It would be much easier if you go through some examples.

Example 1 >

If the bitmap is set as follows in RRC Connection Reconfiguration of LTE Anchor to add an NR cell is set as below, it means the SSB pattern of this NR cell is sub 3Ghz Case A or Case B since it defines only 4 bits (4 SSBs) and the NR Cell transmit every SSBs because every bit is set to be '1'.

 

    ssb-PositionsInBurst CHOICE {

        shortBitmap                  = 1111

    },

Example 2 >

If the bitmap is set as follows in RRC Connection Reconfiguration of LTE Anchor to add an NR cell is set as below, it means the SSB pattern of this NR cell is sub 3Ghz Case A or Case B since it defines only 4 bits (4 SSBs) and the NR Cell transmit the first SSB (SSB#0) and the third SSB(SSB#2).

 

    ssb-PositionsInBurst CHOICE {

        shortBitmap                  = 1010

    },

Example 3 >

If the bitmap is set as follows in RRC Connection Reconfiguration of LTE Anchor to add an NR cell is set as below, it means the SSB pattern of this NR cell is Case A or Case B between 3Ghz and 6Ghz since it defines 8 bits (8 SSBs) and every SSBs are transmitted because all the bits are set to be 1.

 

    ssb-PositionsInBurst CHOICE {

        mediumBitmap                  = 11111111

    },

Example 4 >

If the bitmap is set as follows in RRC Connection Reconfiguration of LTE Anchor to add an NR cell is set as below, it means the SSB pattern of this NR cell is Case A or Case B between 3Ghz and 6Ghz since it defines  8 bits (8 SSBs) and SSB#0,#2,#4,#6 are transmitted.

 

    ssb-PositionsInBurst CHOICE {

        mediumBitmap                  = 10101010

    },

Example 5 >

If the bitmap is set as follows in RRC Connection Reconfiguration of LTE Anchor to add an NR cell is set as below, it means the SSB pattern of this NR cell is Case A or Case B between 3Ghz and 6Ghz since it defines 8 bits (8 SSBs) and SSB#0,#1,#2,#3 are transmitted.

    ssb-PositionsInBurst CHOICE {

        mediumBitmap                  = 11110000

    },

Example 6 >

If the bitmap is set as follows in RRC Connection Reconfiguration of LTE Anchor to add an NR cell is set as below, it means the SSB pattern of this NR cell is Case D or Case E in mmWave(over 6Ghz) since it defines  64 bits (64 SSBs) and every SSBs are transmitted because all the bits are set to be 1.

    ssb-PositionsInBurst CHOICE {

        longBitmap                   = 11111111 11111111 11111111 11111111

                                        11111111 11111111 11111111 11111111  

    },

Example 7 >

If the bitmap is set as follows in RRC Connection Reconfiguration of LTE Anchor to add an NR cell is set as below, it means the SSB pattern of this NR cell is Case D or Case E in mmWave(over 6Ghz) since it defines  64 bits (64 SSBs) and SSB#0,#1,#2,#3,#4,#5,#6,#7 are transmitted.

 

    ssb-PositionsInBurst CHOICE {

        longBitmap                   = 11111111 00000000 00000000 00000000

                                        00000000 00000000 00000000 00000000  

    },

Details on NR SS Block

Even though it is a small package sitting in a radio frame, it has many different components in it and the way it works is pretty complicated. So it would be too much to describe all the details of SS Block in a single page. In my notes, the detailed description of the SS Block is scattered among several different pages. This page is written in order to consolidate all of those separate pagesand help you to get a big picture on SS Block.  

  • How each of SS Block components (PSS, SSS, PBCH DMRS, PBCH) are allocated in SS Block Resource Grid ? - See here
  • Exactly when/where the SS Block is transmitted in a radio frame ? - See here.
  • How PSS(Primary Synchronization Signal) is generated and what kind of parameters are involved ? - See here.
  • How SSS(Secondary Synchronization Signal) is generated and what kind of parameters are involved ? - See here.
  • How PBCH DMRS signal is generated and what kind of information can be detected from this signal ? - See here.
  • How PBCH(MIB Data) is processed from higher layer to physical layer ? - See here.

How SSB Subcarrier Spacing is determined ?

The general tule for SSB SCS determination is specified in 38.213 - 4.1 as follows.

    if the SCS of SS/PBCH blocks is not provided by ssbSubcarrierSpacing, the applicable cases for a cell depend on a respective frequency band as specified in this table for FR1 and this table for FR2. In case of NSA, SSB subcarrierSpacing tend to be explicitely specified by RRC(i.e, ssbSubcarrierSpacing) but in SA case I think UE need to figure out from the combination of this table and blind search (i.e, try all SCS that are allowed in a specific band)

How SSB is indexed and get informed to UE ?

Each SSBlock within a SSBlot Set (ie, all of the SSblocks within the 5 ms period of the SSB transmission) is assigned with a unique numbers starting from 0 and increasing by 1. This number reset to 0 in the next SS Block Set (i.e, next 5 ms span after SSB transmission cycle(e.g, 20 ms). This unique number (i.e, SSBlock Index) is informed to UE via two different within SSBlock.

38.213 - 4.1 states as follows :

    The candidate SS/PBCH blocks in a half frame are indexed in an ascending order in time from 0 to  L-1. A UE shall determine the 2 LSB bits, for L = 4, or the 3 LSB bits, for L > 4 , of a SS/PBCH block index per half frame from a one-to-one mapping with an index of the DM-RS sequence transmitted in the PBCH. For L = 64  , the UE shall determine the 3 MSB bits of the SS/PBCH block index per half frame by PBCH payload bits

Beam Sweeping by SSB

This part is inspired by Dan Serbescu who has been doing a lot of proof reading for my notes and makes well use of the notes. He is posting many small tips on Linked in with revised figures from my notes. In many cases, I liked his revised figures(illustration) better than my original drawing.

This is about how beam sweeping is implemented by changing beam direction for each SSB transmission. I think following illustration would be intuitive and self-sufficient. You may need much explanation on this. First take a look at this illustration and try to make your own story out of it.

NOTE : For the simplicity of the drawing, I used SSB for sub 6 Ghz even though Beamforming /Sweeping would not be such a critical functionality as in mmWave.

Let me make my own story out of this illustratioin (I hope you already had your version of stories). This is the mechanism by which UE measure and identifies the best beam for a UE.

    i) Multiple SSBs are being transmitted with a certain interval.

    ii) Each SSB can be identified by a unique number called SSB index

    iii) Each SSB is transmitted via a specific beam radiated in a certain direction

    iv) Multiple UEs are located at various places around a gNB.

    v) UE measures the signal strength of each SSB it detected for a certain period (a period of one SSB Set).

    vi) From the measurement result, UE can identifies the SSB index with the strongest signal strength. This SSB with the strongest signal strength is the best beam for the UE 1. (For example, Beam #1 is the best beam(the selected beam for UE1 and Beam#7 is the best beam for the UE 2)

NOTE : How many different beams are being transmitted is determined by how many SSBs are being transmitted within a SSB Burst Set(a set of SSBs being transmitted in 5 ms window of SSB transmission). The parameter defining the maximum number of SSBs within a SSB set is called Lmax(See here). In sub 6 Ghz, Lmax is 4 or 8 and in mmWave Lmax is 64. In other words, in sub6 Ghz, max 4 or 8 different beams can be used and they sweep in one dimension (horizontal only or vertical only). in mmWave max 64 different beams can be used and they can sweep in two dimensions (horizontal and vertical directions).

RRC Parameters Related to SS/PBCH Block

The details of SS/PBCH block is informed to UE via various RRC parameters as listed below. It will take pretty much time and effort to fully understand the correlation between the low layer parameters listed above and RRC parameters listed below.

36.331-f30

MIB ::= SEQUENCE {

    systemFrameNumber                   BIT STRING (SIZE (6)),

    subCarrierSpacingCommon           ENUMERATED {scs15or60, scs30or120},

    ssb-SubcarrierOffset               INTEGER (0..15),

    dmrs-TypeA-Position                 ENUMERATED {pos2, pos3},

    pdcch-ConfigSIB1                    INTEGER (0..255),

    cellBarred                          ENUMERATED {barred, notBarred},

    intraFreqReselection                ENUMERATED {allowed, notAllowed},

    spare                               BIT STRING (SIZE (1))

}

 

SIB1 ::=        SEQUENCE {

    cellSelectionInfo                   SEQUENCE {

        q-RxLevMin                          Q-RxLevMin,

        q-RxLevMinOffset                    INTEGER (1..8)      OPTIONAL,   -- Need R

        q-RxLevMinSUL                       Q-RxLevMin          OPTIONAL,   -- Need R

        q-QualMin                           Q-QualMin           OPTIONAL,   -- Need R

        q-QualMinOffset                     INTEGER (1..8)      OPTIONAL    -- Need R

    }    OPTIONAL,   -- Need S

    cellAccessRelatedInfo               CellAccessRelatedInfo,

    connEstFailureControl               ConnEstFailureControl   OPTIONAL,   -- Need R

    si-SchedulingInfo                   SI-SchedulingInfo       OPTIONAL,   -- Need R

    servingCellConfigCommon             ServingCellConfigCommonSIB    OPTIONAL,   -- Need R

    ims-EmergencySupport                ENUMERATED {true}             OPTIONAL,   -- Need R

    eCallOverIMS-Support                ENUMERATED {true}             OPTIONAL,   -- Cond Absent

    ue-TimersAndConstants               UE-TimersAndConstants         OPTIONAL,   -- Need R

 

    uac-BarringInfo                     SEQUENCE {

        uac-BarringForCommon                UAC-BarringPerCatList     OPTIONAL,   -- Need S

        uac-BarringPerPLMN-List             UAC-BarringPerPLMN-List   OPTIONAL,   -- Need S

        uac-BarringInfoSetList              UAC-BarringInfoSetList,

        uac-AccessCategory1-SelectionAssistanceInfo CHOICE {

            plmnCommon                      UAC-AccessCategory1-SelectionAssistanceInfo,

            individualPLMNList              SEQUENCE (SIZE (2..maxPLMN))

                                               OF UAC-AccessCategory1-SelectionAssistanceInfo

        }   OPTIONAL

    }     OPTIONAL,   -- Need R

 

    useFullResumeID                     ENUMERATED {true}    OPTIONAL,   -- Need N

    lateNonCriticalExtension            OCTET STRING         OPTIONAL,

    nonCriticalExtension                SEQUENCE{}           OPTIONAL

}

 

UAC-AccessCategory1-SelectionAssistanceInfo ::= ENUMERATED {a, b, c}

 

ServingCellConfigCommonSIB ::=      SEQUENCE {

    downlinkConfigCommon                DownlinkConfigCommonSIB,

    uplinkConfigCommon                  UplinkConfigCommonSIB   OPTIONAL,   -- Need R

    supplementaryUplink                 UplinkConfigCommonSIB   OPTIONAL,   -- Need R

    n-TimingAdvanceOffset               ENUMERATED { n0, n25560, n39936 }   OPTIONAL, -- Need S

    ssb-PositionsInBurst                    SEQUENCE {

        inOneGroup                          BIT STRING (SIZE (8)),

        groupPresence                       BIT STRING (SIZE (8))                                       OPTIONAL -- Cond Above6GHzOnly

    },

    ssb-PeriodicityServingCell          ENUMERATED {ms5, ms10, ms20, ms40, ms80, ms160},

    tdd-UL-DL-ConfigurationCommon       TDD-UL-DL-ConfigCommon    OPTIONAL, -- Cond TDD

    ss-PBCH-BlockPower                  INTEGER (-60..50),

    ...

}

 

ServingCellConfigCommon ::= SEQUENCE {

    physCellId                       PhysCellId OPTIONAL,

    downlinkConfigCommon             DownlinkConfigCommon

    uplinkConfigCommon               UplinkConfigCommon OPTIONAL,

    supplementaryUplinkConfig        UplinkConfigCommon OPTIONAL,

    n-TimingAdvanceOffset            ENUMERATED { n0, n25600, n39936 },

    ssb-PositionsInBurst CHOICE {

        shortBitmap                  BIT STRING (SIZE (4)),

        mediumBitmap                 BIT STRING (SIZE (8)),

        longBitmap                   BIT STRING (SIZE (64))

    },

    ssb-periodicityServingCell       ENUMERATED { ms5, ms10, ms20, ms40, ms80, ms160, spare2, spare1 }

    dmrs-TypeA-Position              ENUMERATED {pos2, pos3},

    lte-CRS-ToMatchAround            SetupRelease { RateMatchPatternLTE-CRS } ,

    rateMatchPatternToAddModList     SEQUENCE (SIZE (1..maxNrofRateMatchPatterns))

                                              OF RateMatchPattern

    rateMatchPatternToReleaseList    SEQUENCE (SIZE (1..maxNrofRateMatchPatterns))

                                              OF RateMatchPatternId

    subcarrierSpacing                SubcarrierSpacing OPTIONAL, -- Cond

    HOAndServCellAdd

    tdd-UL-DL-ConfigurationCommon    TDD-UL-DL-ConfigCommon OPTIONAL,

    ss-PBCH-BlockPower               INTEGER (-60..50),

...

}

 

ssb-PositionsInBurst : Indicates the time domain positions of the transmitted SS-blocks in an SS-burst. The first/ leftmost bit corresponds to SS/PBCH block index 0, the second bit corresponds to SS/PBCH block index 1, and so on. Value 0 in the bitmap indicates that the corresponding SS/PBCH block is not transmitted while value 1 indicates that the corresponding SS/PBCH block is transmitted. Corresponds to L1 parameter 'SSB-Transmitted' (see 38.213 - 4.1)

inOneGroup : the interpretation of this field differs depending on carrier frequency(f).

  • When f <= 3Ghz, only the 4 leftmost bits are valid; the UE ignores the 4 rightmost bits.
  • When 3 Ghz < f <= 6Ghz, all 8 bits are valid. The first/ leftmost bit corresponds to SS/PBCH block index 0, the second bit corresponds to SS/PBCH block index 1, and so on.
  • When 6 Ghz < f, all 8 bit are valid; The first/ leftmost bit corresponds to the first SS/PBCH block index in the group (i.e., to SSB index 0, 8, and so one); the second bit corresponds to the second SS/PBCH block index in the group (i.e., to SSB index 1, 9, and so one), and so on.  Value 0 in the bitmap indicates that the corresponding SS/PBCH block is not transmitted while value 1 indicates that the corresponding SS/PBCH block is transmitted.

groupPresence : This field is present when the carrier frequency is above 6GHz. The first/leftmost bit corresponds to the SS/PBCH index 0-7, the second bit corresponds to SS/PBCH block 8-15, and so on. Value 0 in the bitmap indicates that the SSBs according to inOneGroup are not present. Value 1 indicates that the SS/PBCH blocks are transmitted in accordance with inOneGroup.

ssb-periodicityServingCell : he SSB periodicity in msec for the rate matching purpose. If the field is absent, the UE applies the value ms5

 

FrequencyInfoDL ::=                 SEQUENCE {

    absoluteFrequencySSB               ARFCN-ValueNR,

    ssb-SubcarrierOffset               INTEGER (1..23)  OPTIONAL,   -- Need S

    frequencyBandList                  MultiFrequencyBandListNR,

    absoluteFrequencyPointA            ARFCN-ValueNR,

    scs-SpecificCarrierList            SEQUENCE (SIZE (1..maxSCSs)) OF SCS-SpecificCarrier,

    ...

}

 

SCS-SpecificCarrier ::=         SEQUENCE {

    offsetToCarrier             INTEGER (0..2199),

    subcarrierSpacing           SubcarrierSpacing,

    k0                          ENUMERATED {n-6, n0, n6},

    carrierBandwidth            NTEGER (1..maxNrofPhysicalResourceBlocks),

    ...

}

absoluteFrequencySSB : Frequency of the SSB to be used for this serving cell. The frequency provided in this field identifies the position of resource element RE=#0 (subcarrier #0) of resource block RB#10 of the SS block. The cell-defining SSB of an SpCell is always on the sync raster. Frequencies are considered to be on the sync raster if they are also identifiable with a GSCN value (see 38.101).   

ssb-SubcarrierOffset : The frequency domain offset between SSB and the overall resource block grid in number of subcarriers. Absence of the field indicates that no offset is applied (offset = 0). For FR2 only values up to 11 are applicable. Corresponds to L1 parameter kssb.

frequencyBandList : List of one or multiple frequency bands to which this carrier(s) belongs. Multiple values are only supported in system information but not when the FrequencyInfoDL is provided in dedicated signalling (HO or S(p)Cell addition).

absoluteFrequencyPointA : Absolute frequency position of the reference resource block (Common RB 0). Its lowest subcarrier is also known as Point A. Note that the lower edge of the actual carrier is not defined by this field but rather in the scs-SpecificCarrierList. Corresponds to L1 parameter 'offset-ref-low-scs-ref-PRB'

offsetToCarrier : Offset in frequency domain between Point A (lowest subcarrier of common RB 0) and the lowest usable subcarrier on this carrier in number of PRBs (using the subcarrierSpacing defined for this carrier). The maximum value corresponds to 275*8-1. It corresponds to L1 parameter 'offset-pointA-low-scs'

subcarrierSpacing : Subcarrier spacing of this carrier. It is used to convert the offsetToCarrier into an actual frequency. Only the values 15 or 30 kHz  (<6GHz), 60 or 120 kHz (>6GHz) are applicable. it orresponds to L1 parameter 'ref-scs'

k0 : Corresponds to L1 parameter k0 (38.211-5.3.1). n-6 corresponds to value -6, n0 corresponds to value 0 and n6 corresponds to value +6  

carrierBandwidth : Width of this carrier in number of PRBs (using the subcarrierSpacing defined for this carrier). It corresponds to L1 parameter 'BW'

Reference : YouTube

[1]  5G Explained: Synchronization Signal Blocks in 5G NR