PUCCH Format 0 Resource 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
- 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
- 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
- class toolkit5G.ResourceMapping.ResourceMapperFormat0(interlacedTransmission=True, intraSlotFreqHopping=False, pucch_ResourceCommon=False, formatPUCCH='Format 0', seqLength=12, numRBs=1, beta_PUCCH0=1)[source]
This maps the information carried by the PUCCH Format 0 to the resource elements allocated.
The sequence generated is multiplied with the amplitude scaling factor in order to conform to the transmit power.
Considering 1 Bandwidth Part consisting of number of Physical Resource Blocks to be 275.
The maximum number of Physical Resource Blocks(PRBs) allocated is 1.
The maximum number of symbols allocated is 2.
If PUCCH Format 0 is used prior to the allocation of dedicated PUCCH resource, it avail the resource information from the common resource configuration provided by the System Information Block 1 based on the index provided.
In case of Interlaced Transmission, the number of Interlaced Resource Blocks that can be allocated can be either 10 or 11 if PUCCH Format 0 uses dedicated resource set for resource allocation. Else, the number of Interlaced Resource Blocks that can be allocated can be 10.
In case of Interlaced Transmission, based on number of interlaces, index of first interlace and index of second interlace is provided.
- 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
beta_PUCCH0 (int) – This parameter is the amplitude scaling factor in order to conform to the transmitting power. It is initialised with 1. It takes a positive scalar or numpy integer.
- Input:
inputSeq (numpy ndarray, np.complex) – Array of dimension, […,
numInterlacedRBs
/numRBs
,seqLength
*numberOfSymb
]If interlaced based transmission is enabled,
numInterlacedRBs
number of sequences are generated. Else,numRBs
number of sequences are generated.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, […, Number of subcarriers (12) *
maxNumPRBs
, Number of Symbols within a slot(14)]- Raises:
TypeError –
If
beta_PUCCH0
is not an integerIf
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
symbolIndex_start
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
inputSeq
PUCCH Format0 SequenceIf
beta_PUCCH0
is not a positive integerIf
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
- 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 Symbols allocated. Maximum of 2 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’
[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’