Synchronization Signal Block (SSB) Resource Mapping

This module maps multiple Synchronization Signal Blocks (SSBs) on to the resource grid.

class toolkit5G.ResourceMapping.ResourceMapperSSB(ssbType='caseA', carrierFrequency=3600000000.0, isPairedBand=True, withSharedSpectrumChannelAccess=False)[source]

Generates the Synchronization signal block grid as per Section 7.4.3 [3GPPTS38211_SSBGrid].

Parameters:
  • ssbType (str) – Defines the SSB Type for resource mapping. It can take a value from the set \(\in \{\)“caseA”, “caseB”, “caseC”, “caseD”, “caseE”, “caseF”, “caseG” \(\}\). Default value is “caseA”.

  • carrierFrequency (float) – Defines the carrier frequency used for simulation. Default value is :math:`3.6 times 10^9’.

  • isPairedBand (bool) – Indicates whether the bands used for SSB transmission are paired or not. Default value is True.

  • withSharedSpectrumChannelAccess (bool) – Indicates whether the shared channel access is enabled or not. Default value is False.

Important

kssb and offsetToPointA are used independently or jointly to select the offsetInSubcarriers and offsetInRBs.

Input:
  • ssb ((K,4,240), np.complex64) – Defines N SSBs to be loaded in the Resource Grid. Please read the note after the Input parameters to understand the relation between K and N.

  • ssbPositionInBurst ((Lmax,1) int \(\in \{0,1\}\)) – Indicates time domain position of SSB in a SSB burst. The first left most bit corresponds to SS/PBCH index 0, the second left most bit corresponds to SS/PBCH index 1 and so on.

  • offsetInSubcarriers ((N,) NumPy array of integers or int) – Defines the subcarrier offset between the first subcarrier of SS/PBCH and the last subcarrier of RB Offset(15kHz|60kHz). It is SSB grid equivalent of SSB grid. The numerology used for kSSB depends on the carrier Bandwidth. For FR1 bandwidths, kSSB is always in 15 kHz. Remember, kSSB is defined for the carrier grid. Default value is 0. * If offsetInSubcarriers is scalar, then same offset is applied to all the SSBs in the grid. * If offsetInSubcarriers is vector, the corresponding offset is applied to each SSB.

  • offsetInRBs ((N,) NumPy array of integers or int) – Defines the offset in units of resource blocks. Its the equivalent of OffsettoPointA which defines the frequency offset between point A and the lowest subcarrier of the RB overlapping with SSB. the unit of this parameter is number of RB. Subcarrier spacing within this RB is always 15 Khz subcarrier spacing for FR1, 60 Khz subcarrier spacing for FR2 regardless of SSB subcarrier spacing. Default value is 0. * If offsetInRBs is scalar, then same offset is applied to all the SSBs in the grid. * If offsetInRBs is vector, the corresponding offset is applied to each SSB.

  • nHF (int \(\in \{0,1\}\)) – Each SS block has a well-defined position within an SS burst set which is contained within the first or second half of a 5ms frame. From the SS-block time index, in combination with the half-frame bit, the device can determine the frame boundary. Default value is None.

  • numRBs (int) – Defines the number of Resource blocks (RBs) considered for resource Grid. It can be any integer value between 20 and 272 which is compliant with kssb and offsetToPointA. The maximum value of N_RB for 5G is 273. Default value is 272.

Important

N must be equal to number of ones in ssbPositionInBurst.

Important

The value of K can be:
  • 1, the same SSB is transmitted over each beam.

  • Number of ones in ssbPositionInBurst, the SSB is loaded on the location specified by the bit map.

  • Size of ssbPositionInBurst, the SSB corresponding to bitmap are picked up and loaded on the location specified by the bit map.

Output:

(140 \(\times \frac{{\Delta f}_{ssb}}{15000}\), 12*numRBs), np.complex64 – Resource grid loaded with SSB.

Raises:
  • Warning – [Warning:] Only one SSB is passed for configured symbols! It will be copied to all the configured symbols!

  • Warning – [Warning:] Only one SSB is passed for configured symbols! It will be copied to all the configured symbols!

  • ValueError – Invalid number of SSBs passed! Should match with the non-zero location in ‘ssbPositionInBurst’

  • ValueError – Invalid Choice of SSB It should be either 4x240 or (number of SSB)x4x240

  • ValueError – [Error]: ssbType must be string!

  • ValueError – [Error]: Invalid SSB Type, not supported by 5G standards!

  • Exception – [Error]: N_RB must be integer!

  • Exception – [Error]: N_RB should take only between 0 to 273 value!

  • Exception – [Error]: Carrier frequency must be integer or Float type!

  • Exception – [Error]: Carrier frequency must be in the range 0.5GHz to 100GHz!

  • Exception – [Error]: kssb must be integer!

  • Exception – [Error]: For carrier frequency range-1, the kssb must be less than 22!

  • Exception – [Error]: For carrier frequency range-2, the kssb must be less than 11!

  • Exception – [Error]: Currently not supporting carrier frequencies above 52.6GHz

  • Exception – ssb Type: ‘case-A’ is not configurable for FR2!

  • Exception – ssb Type: ‘case-B’ is not configurable for shared spectrum channel access!

  • Exception – ssb Type: ‘case-B’ is not configurable for FR2!

  • Exception – ssb Type: ‘case-D’ is not configurable for FR1!

  • Exception – ssb Type: ‘case-E’ is not configurable for FR1!

  • Exception – ssb Type: ‘case-F/G’ is not configurable for FR1!

  • Exception – Invalid choice of ssbType

References:
[3GPPTS38211_SSBRM]

(3GPP TS 38.211 version 17.1.0 Release 17) 5G;NR;Physical channels and modulation ‘5.2.2 Low-PAPR sequence generation type 1’