PUCCH Format 0 Resource De-Mapping
- In this example,
interlacedTransmission
- Interlaced Transmission is enabledpucch_ResourceCommon
- Common resource configurationintraSlotFreqHopping
- Enabling Intra Slot Frequency Hoppingpucch_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 disabledpucch_ResourceCommon
- Dedicated resource configurationintraSlotFreqHopping
- Disabling Intra Slot Frequency Hoppingpucch_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 enabledpucch_ResourceCommon
- Dedicated resource configurationintraSlotFreqHopping
- Disabling Intra Slot Frequency Hoppingpucch_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 stringIf
startingPRB
is not an integerIf
secondHopPRB
is not an integerIf
seqLength
is not an integerIf
maxNumPRBs
is not an integerIf
numOfInterlaces
is not an integerIf
interlaceIndex_0
is not an integerIf
interlaceIndex_1
is not an integerIf
numRBs
is not a integer typeIf
numberOfSymb
is not of type integerIf
start_SymbIndex
is not a scalar or numpy integerIf
numInterlacedRBs
is not a scalar or numpy integerIf
indexPUCCH
is not of type integerValueError
Invalid dimension of the
inputOFDMGrid
PUCCH Format0If
formatPUCCH
is not ‘Format 0’If
startingPRB
is not a non negative integerIf
seqLength
is not a positive valueIf
secondHopPRB
is not a non negative integerIf
maxNumPRBs
is not between 0 and 275If
numOfInterlaces
is not a positive valueIf
interlaceIndex_0
is not between 0 and 11If
interlaceIndex_1
is not between 0 and 11If
numRBs
is not equal to 1If
numberOfSymb
is not between 1 and 14. Also, ifnumberOfSymb
plusstart_SymbIndex
> 14If
start_SymbIndex
is not between 0 and 13If
numInterlacedRBs
is not equal to 10 or 11If
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’