PUCCH Format 0 Resource De-Mapping

In this example,
  • interlacedTransmission - Interlaced Transmission is enabled

  • pucch_ResourceCommon - Common resource configuration

  • intraSlotFreqHopping - Enabling Intra Slot Frequency Hopping

  • pucch_GroupHopping - Enabling Group Hopping

numBatches             = 7    #Number of User Equipments
interlacedTransmission = True #Enabling/Disabling the Interlaced Transmission
pucch_ResourceCommon   = True #Selecting the resource set
numberOfSymb           = None #Number of Symbols
symbolIndex_start      = None #Starting Symbol Index
initial_CyclicShift    = None #Initial Cyclic Shift
indexPUCCH             = 0    #Index of the resource set, if Common resource configuration is enabled
intraSlotFreqHopping   = False #Enabling/Disabling the Intra Slot Frequency Hopping
nID                    = 658   #Hopping ID
pucch_GroupHopping     = 'Enable' #Enabling/Disabling the Group or/and Sequence Hopping
slotNumber             = 1      #Slot Number
m_CS                   = np.array([ 9,  9, 10,  4,  7, 10,  6]) #Cyclic Shift Offset based on the information content
startingPRB            = None #Index of first Physical Resource Block
secondHopPRB           = None #Index of first Physical Resource Block, if Intra Slot Frequency Hopping is enabled
numInterlacedRBs       = 10 #Number of Interlaced ResourceBlocks
numOfInterlaces        = 1 #Number of Interlaces
interlaceIndex_0       = None #Index of the first Interlace
interlaceIndex_1       = None #Index of the second Interlace

Format0_SeqGenobj = PUCCHFormat0Sequence(intraSlotFreqHopping, interlacedTransmission, pucch_ResourceCommon) #Sequence Generation Object
Format0_Seq       = Format0_SeqGenobj(numBatches, m_CS, nID, slotNumber, pucch_GroupHopping, initial_CyclicShift, numberOfSymb, symbolIndex_start, indexPUCCH, numInterlacedRBs) #Generates the PUCCH Format0 Sequence

RMObj = ResourceMapperFormat0(interlacedTransmission, intraSlotFreqHopping, pucch_ResourceCommon) #Resource Mapping Object
rmOP  = RMObj(Format0_Seq, numberOfSymb, symbolIndex_start, startingPRB, secondHopPRB, indexPUCCH, numInterlacedRBs, numOfInterlaces, interlaceIndex_0, interlaceIndex_1) #Maps onto the Resources allocated

rDemObj = ResourceDeMapperFormat0(pucch_ResourceCommon, intraSlotFreqHopping, interlacedTransmission) #Resource De-Mapping Object
rDemOp  = rDemObj(rmOP, numberOfSymb, symbolIndex_start, startingPRB, secondHopPRB, indexPUCCH, numInterlacedRBs, numOfInterlaces, interlaceIndex_0, interlaceIndex_1) #De-Maps sequence from the Resources allocated
The example below considers,
  • interlacedTransmission - Interlaced Transmission is disabled

  • pucch_ResourceCommon - Dedicated resource configuration

  • intraSlotFreqHopping - Disabling Intra Slot Frequency Hopping

  • pucch_GroupHopping - Disabling Group Hopping

numBatches              = 2 #Number of User Equipments
interlacedTransmission = False #Enabling/Disabling the Interlaced Transmission
pucch_ResourceCommon   = False #Selecting the resource set
numberOfSymb           = 1 #Number of Symbols
start_SymbIndex        = 5 #Starting Symbol Index
indexPUCCH             = None #Index of the resource set, if Common resource configuration is enabled
initial_CyclicShift    = 4 #Initial Cyclic Shift
intraSlotFreqHopping   = False #Enabling/Disabling the Intra Slot Frequency Hopping
nID                    = 287 #Hopping ID
pucch_GroupHopping     = 'Disable' #Enabling/Disabling the Group or/and Sequence Hopping
slotNumber             = 8 #Slot Number
m_CS                   = np.array([0, 7]) #Cyclic Shift Offset based on the information content
startingPRB            = 179 #Index of first Physical Resource Block
secondHopPRB           = None #Index of second Physical Resource Block
numInterlacedRBs       = None #Number of Interlaces
numOfInterlaces        = None #Number of Interlaces
interlaceIndex_0       = None #Index of the first Interlace
interlaceIndex_1       = None #Index of the second Interlace

Format0_SeqGenobj = PUCCHFormat0Sequence(intraSlotFreqHopping, interlacedTransmission, pucch_ResourceCommon) #Sequence Generation Object
Format0_Seq       = Format0_SeqGenobj(numBatches, m_CS, nID, slotNumber, pucch_GroupHopping, initial_CyclicShift, numberOfSymb, symbolIndex_start, indexPUCCH, numInterlacedRBs) #Generates the PUCCH Format0 Sequence

RMObj = ResourceMapperFormat0(interlacedTransmission, intraSlotFreqHopping, pucch_ResourceCommon) #Resource Mapping Object
rmOP  = RMObj(Format0_Seq, numberOfSymb, symbolIndex_start, startingPRB, secondHopPRB, indexPUCCH, numInterlacedRBs, numOfInterlaces, interlaceIndex_0, interlaceIndex_1) #Maps onto the Resources allocated

rDemObj = ResourceDeMapperFormat0(pucch_ResourceCommon, intraSlotFreqHopping, interlacedTransmission) #Resource De-Mapping Object
rDemOp  = rDemObj(rmOP, numberOfSymb, symbolIndex_start, startingPRB, secondHopPRB, indexPUCCH, numInterlacedRBs, numOfInterlaces, interlaceIndex_0, interlaceIndex_1) #De-Maps sequence from the Resources allocated
In this example,
  • interlacedTransmission - Interlaced Transmission is enabled

  • pucch_ResourceCommon - Dedicated resource configuration

  • intraSlotFreqHopping - Disabling Intra Slot Frequency Hopping

  • pucch_GroupHopping - Disabling Group Hopping

numBatches             = 1 #Number of User Equipments
interlacedTransmission = True #Enabling/Disabling the Interlaced Transmission
pucch_ResourceCommon   = False #Selecting the resource set
numberOfSymb           = 1 #Number of Symbols
start_SymbIndex        = 5 #Starting Symbol Index
indexPUCCH             = None #Index of the resource set, if Common resource configuration is enabled
initial_CyclicShift    = 7 #Initial Cyclic Shift
intraSlotFreqHopping   = False #Enabling/Disabling the Intra Slot Frequency Hopping
nID                    = 408 #Hopping ID
pucch_GroupHopping     = 'Disable' #Enabling/Disabling the Group or/and Sequence Hopping
slotNumber             = 2 #Slot Number
m_CS                   = np.array([10]) #Cyclic Shift Offset based on the information content
numInterlacedRBs       = 11 #Number of Interlaced ResourceBlocks
startingPRB            = None #Index of first Physical Resource Block
secondHopPRB           = None #Index of second Physical Resource Block
numOfInterlaces        = 1 #Number of Interlaces
interlaceIndex_0       = 8 #Index of the first Interlace
interlaceIndex_1       = None #Index of the second Interlace

Format0_SeqGenobj = PUCCHFormat0Sequence(intraSlotFreqHopping, interlacedTransmission, pucch_ResourceCommon) #Sequence Generation Object
Format0_Seq       = Format0_SeqGenobj(numBatches, m_CS, nID, slotNumber, pucch_GroupHopping, initial_CyclicShift, numberOfSymb, symbolIndex_start, indexPUCCH, numInterlacedRBs) #Generates the PUCCH Format0 Sequence

RMObj = ResourceMapperFormat0(interlacedTransmission, intraSlotFreqHopping, pucch_ResourceCommon) #Resource Mapping Object
rmOP  = RMObj(Format0_Seq, numberOfSymb, symbolIndex_start, startingPRB, secondHopPRB, indexPUCCH, numInterlacedRBs, numOfInterlaces, interlaceIndex_0, interlaceIndex_1) #Maps onto the Resources allocated


rDemObj = ResourceDeMapperFormat0(pucch_ResourceCommon, intraSlotFreqHopping, interlacedTransmission) #Resource De-Mapping Object
rDemOp  = rDemObj(rmOP, numberOfSymb, symbolIndex_start, startingPRB, secondHopPRB, indexPUCCH, numInterlacedRBs, numOfInterlaces, interlaceIndex_0, interlaceIndex_1) #De-Maps sequence from the Resources allocated
class toolkit5G.ResourceMapping.ResourceDeMapperFormat0(pucch_ResourceCommon=False, intraSlotFreqHopping=False, interlacedTransmission=False, channel='AWGN', rg_Size=275, seqLength=12, numRBs=1, formatPUCCH='Format 0')[source]

This De-Maps the PUCCH Format 0 sequence from the OFDM resource grid.

Parameters:
  • intraSlotFreqHopping (bool) – The parameter ‘intraSlotFreqHopping’ indicates whether the Intra Slot Frequency Hopping is enabled/disabled. It is always disabled in case of Interlaced transmission. By default it is disabled.

  • interlacedTransmission (bool) – The parameter ‘interlacedTransmission’ indicates whether Interlaced based transmission is either enabled or disabled. By default it is disabled.

  • pucch_ResourceCommon (bool) – The parameter ‘pucch_ResourceCommon’ indicates whether PUCCH Format 0 uses common resource configuration or dedicated resource set for resource allocation. By default it is set that PUCCH Format 0 is used after dedicated resource allocation

  • numRBs (int) – The parameter ‘numRBs’ is the number of PRBs allocated and it is initialised with 1

  • formatPUCCH (str) – The parameter ‘formatPUCCH’ indicates which PUCCH format is being selected. It is initialised with ‘Format 0’. It takes a string.

  • maxNumPRBs (int) – This parameter indicates maximum number of Physical Resource Blocks considered within a Bandwidth Part. It is initialised with 275, considering 275 Physical Resource Blocks within a BandwidthPart. It takes the positive scalar or numpy integer.

  • seqLength (int) – This parameter indicates the length of the sequence generated. It is initialised with 12 as the length of the sequence generated tends to be 12. It takes a positive scalar or numpy integer.

Input:
  • inputOFDMGrid (numpy ndarray) – Array of dimension, […, Number of subcarriers (12) * maxNumPRBs, Number of Symbols within a slot(14)]

  • numberOfSymb (int) – The parameter ‘numberOfSymb’ is the number of Symbols allocated. Maximum of 2 symbols per slot can be allocated. It takes only positive scalar or numpy integer.It can be either provided by dedicated resource set or common resource configuration and so it is initialised with None

  • start_SymbIndex (int) – The parameter ‘symbolIndex_start’ indicates the starting symbol index. It can take a integer. Taking into consideration that maximum of 14 symbols within a slot, it can take values between 0 and 13.It can be either provided by dedicated resource set or common resource configuration and so it is initialised with None

  • indexPUCCH (int) – The parameter ‘indexPUCCH’ is the resource index to indicate the resource in case of resource allocation by common resource configuration.It can be either provided by dedicated resource set or common resource configuration and so it is initialised with None

  • numInterlacedRBs (int) – The parameter ‘numInterlacedRBs’ is the Number of Interlaced Resource Blocks. It can take positive integer value.It can be either provided by dedicated resource set or common resource configuration and so it is initialised with None

  • startingPRB (int) – The parameter ‘startingPRB’ is the index of First Physical Resource Block, if Interlace transmission is not enabled. It takes a scalar or numpy integer

  • secondHopPRB (int) – The parameter ‘secondHopPRB’ is the index of First Physical Resource Block in case of IntraSlot Frequency Hopping and , if Interlace transmission is not enabled. It takes a scalar or numpy integer

  • interlaceIndex_0 (int) – The parameter ‘interlaceIndex_0’ is the first interlace index in case of Interlace transmission. It takes a scalar or numpy integer

  • interlaceIndex_1 (int) – The parameter ‘interlaceIndex_1’ is the second interlace index in case of Interlace transmission. It takes a scalar or numpy integer

  • numOfInterlaces (int) – The parameter ‘numOfInterlaces’ indicates the number of interlaces in case of Interlace transmission. It takes a scalar or numpy integer

Output:

numpy ndarray, np.complex – Array of dimension, […, numInterlacedRBs/numRBs, 12 * numberOfSymb]

If interlaced based transmission is enabled, numInterlacedRBs number of sequences are generated. Else, numRBs number of sequences are generated.

Raises:

TypeError

If formatPUCCH is not a string

If startingPRB is not an integer

If secondHopPRB is not an integer

If seqLength is not an integer

If maxNumPRBs is not an integer

If numOfInterlaces is not an integer

If interlaceIndex_0 is not an integer

If interlaceIndex_1 is not an integer

If numRBs is not a integer type

If numberOfSymb is not of type integer

If start_SymbIndex is not a scalar or numpy integer

If numInterlacedRBs is not a scalar or numpy integer

If indexPUCCH is not of type integer

ValueError

Invalid dimension of the inputOFDMGrid PUCCH Format0

If formatPUCCH is not ‘Format 0’

If startingPRB is not a non negative integer

If seqLength is not a positive value

If secondHopPRB is not a non negative integer

If maxNumPRBs is not between 0 and 275

If numOfInterlaces is not a positive value

If interlaceIndex_0 is not between 0 and 11

If interlaceIndex_1 is not between 0 and 11

If numRBs is not equal to 1

If numberOfSymb is not between 1 and 14. Also, if numberOfSymb plus start_SymbIndex > 14

If start_SymbIndex is not between 0 and 13

If numInterlacedRBs is not equal to 10 or 11

If indexPUCCH is not between 0 and 2

property formatPUCCH

PUCCH Format selection

property indexPUCCH

This parameter is used to select the resource from the common resource configuration provided by SIB1

property interlaceIndex_0

Index of first interlace, in case of Interlaced Transmission

property interlaceIndex_1

Index of second interlace, in case of Interlaced Transmission

property maxNumPRBs

Number of PRBs within a Bandwidth Part

property numInterlacedRBs

Number of Interlaced Resource Blocks allocated

property numOfInterlaces

Number of Interlaces, in case of Interlaced Transmission

property numRBs

Number of Physical Resource Blocks allocated

property numberOfSymb

Number of OFDM Symbols allocated. 4 to 14 symbols can be allocated.

property offset

PRB offset

property rg_Size

Size of Bandwidth Part (BWP size)

property secondHopPRB

Index of first PRB in case of IntraSlotHopping is enabled. Takes a positive integer

property seqLength

Sequence Length of the generated PUCCH Format0 sequence

property start_SymbIndex

Starting Symbol Index within a slot consisting of 14 OFDM symbols

property startingPRB

Index of first PRB. Takes a positive integer

References:
[3GPPTS38211_Format0]

(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’type 1’

[3GPPTS38212_Format0]

(3GPP TS 38.211 version 17.1.0 Release 17) 5G;NR;Physical channels and modulation ‘6.3.2.3 PUCCH Format 0’

[3GPPTS38213_Format0]

(3GPP TS 38.213 version 16.5.0 Release 16) 5G;NR;Physical layer procedures for control ‘ 9.2.1 PUCCH Resource Sets’