Sequence Generation
- In this example,
interlacedTransmission
- Interlaced Transmission is disabledpucch_ResourceCommon
- Common resource configurationintraSlotFreqHopping
- Disabling Intra Slot Frequency Hoppingpucch_GroupHopping
- Disabling Group Hopping
pucch_ResourceCommon = True #Selecting the resource set
interlacedTransmission = False #Enabling/Disabling the Interlaced Transmission
intraSlotFreqHopping = False #Enabling/Disabling the Intra Slot Frequency Hopping
slotNumber = 2 #Slot Number
nID = 157 #Hopping ID
pucch_GroupHopping = 'Neither' #Enabling/Disabling the Group or/and Sequence Hopping
m_CS = np.array([0]) #Cyclic Shift Offset based on the information content
initialCycShift = None #Initial Cyclic Shift
numofSymbols = None #Number of Symbols
symbolIndex_start = None #Starting Symbol Index
indexPUCCH = 7 #Index of the resource set, if Common resource configuration is enabled
numInterlacedRBs = None #Number of Interlaced Resource Blocks
if interlacedTransmission == True: #if Interlaced Transmission is enabled
nHop = 0 # frequency hopping is disabled
Format1_Sequence = np.zeros((numBatches, numInterlacedRBs, 12)).astype(complex)
Format1_SeqGenobj = PUCCHFormat1Sequence(pucch_ResourceCommon, intraSlotFreqHopping, interlacedTransmission) #PUCCH Format 1 Sequence Generation Object
Format1_Seq = Format1_SeqGenobj(m_CS, nID, slotNumber, nHop, pucch_GroupHopping, symb, symbolIndex_start, numofSymbols, initialCycShift, indexPUCCH, numInterlacedRBs) #Generates Format 1 sequence
Sequence = Format1_Seq
else: #if Interlaced Transmission is enabled
hoppingRefVar = 1 if intraSlotFreqHopping == False else 2
Format1_Sequence = np.zeros((numBatches, 1, 12 * hoppingRefVar)).astype(complex) # number of hops = 2 (0, 1)---> Specific sequence based on group hopping
nHop = 0 # if frequency hopping is enabled/disabled, first hop frequency hopping index if enabled
Format1_SeqGenobj = PUCCHFormat1Sequence(pucch_ResourceCommon, intraSlotFreqHopping, interlacedTransmission) #PUCCH Format 1 Sequence Generation Object
Format1_Seq = Format1_SeqGenobj(m_CS, nID, slotNumber, nHop, pucch_GroupHopping, symb, symbolIndex_start, numofSymbols, initialCycShift, indexPUCCH, numInterlacedRBs) #Generates Format 1 sequence
Format1_Sequence[..., 0:12] = Format1_Seq
if intraSlotFreqHopping == True:
nHop = 1 # if frequency hopping is enabled, second hop frequency hopping index
Format1_SeqGenobj = PUCCHFormat1Sequence(pucch_ResourceCommon, intraSlotFreqHopping, interlacedTransmission) #PUCCH Format 1 Sequence Generation Object
Format1_Seq = Format1_SeqGenobj(m_CS, nID, slotNumber, nHop, pucch_GroupHopping, symb, symbolIndex_start, numofSymbols, initialCycShift, indexPUCCH, numInterlacedRBs) #Generates Format 1 sequence
Format1_Sequence[..., 12:] = Format1_Seq
- class toolkit5G.SequenceGeneration.PUCCHFormat1Sequence(pucch_ResourceCommon=False, intraSlotFreqHopping=False, interlacedTransmission=False, numRBs=1, maxNumPRBs=275)[source]
This class ‘PUCCH_format1_seqGeneration’ generates the sequence for PUCCH Format 1 which is Number of user equipments, symbol , Interlaced Resource Block dependent.
PUCCH Format 1 uses Low PAPR Sequence Type 1 with group hopping and sequence Hopping.
The number of Bandwidth Part(BWP) considered is 1.
The maximum number of Physical Resource Blocks(PRBs) allocated is 1.
The maximum number of symbols allocated is from 4 to 14.
If PUCCH Format 1 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.
If PUCCH Format 1 uses common resource configuration for resource allocation, the ‘Intra Slot Frequency Hopping’ is always enabled.
But, if PUCCH Format 1 uses dedicated resource set for transmission, then the ‘Intra Slot Frequency Hopping’ can either be enabled or disabled.
The interlaced based transmission can either be enabled or disabled within a BWP. The number of Interlaced Resource Blocks can be either 10 or 11.
There is always 1 sequence within each group and so, the same sequence will always be selected in case of PUCCH Format 1. And so, the Sequence number is always 0.
The Sequence Length for PUCCH Format 0 is 12.
It is then multiplied with the transmission symbols.
- Parameters:
intraSlotFreqHopping (bool) – The parameter ‘intraSlotFreqHopping’ indicates whether the Intra Slot Frequency Hopping is enabled/disabled. 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
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.
- Input:
inputSymb (numpy array, np.complex) – An array of size, […, \(\text{N}_\text{symb}\)] where \(\text{N}_\text{symb}\) is the number modulated symbols
m_CS (numpy array of integer(s)) – This parameter denotes the cyclic shift offset based on the information content. It can take numpy array containing positive integer value(s).
nID (int) – Hopping ID ranging from 0 to 1023. This takes integer.
slotNumber (int) – It is the slot number allocated. It takes the value (integer) beteen 0 and 10.
nHop (int) – Frequency Hopping Index. Format 1 considers two hops. So, it takes value either 0 or 1 based on first hop or second hop respectively. This takes an integer.
pucch_GroupHopping (str) –
This parameter defines whether group hopping and sequence hopping has been enabled. Possible input it can take is ‘neither’, ‘enable’, ‘disable’.
‘neither’ - The value of ‘neither’ is used to signal that there is no group hopping nor sequence hopping.
‘enable’ - The value of ‘enable’ is used to enable group hopping and disable sequence hopping.
‘disable’ - The value of ‘disable’ is used to disable group hopping and enable sequence hopping.
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.
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.
initial_CyclicShift (int) – The parameter ‘initial_CyclicShift’ denotes the Initial Cyclic Shift. It can take values between 0 and 11. The values should be an integer. 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.
- Output:
numpy ndarray, np.complex – Array of size, […,
numInterlacedRBs
/numRBs
, 12 * \(\text{z}\)]If interlaced based transmission is enabled,
numInterlacedRBs
number of sequences are generated. Else,numRBs
number of sequences are generated. 12 corresponds to the sequence length. And \(\text{z}\) can be 1 or 2 based on disabling or enabling intraslot frequency hopping respectively.- Raises:
TypeError –
If
numRBs
is not a integer typeIf
maxNumPRBs
is not an integerIf
numberOfSymb
is not of type integerIf
initial_CyclicShift
is not a scalar or numpy integerIf
m_CS
is not a numpy array of integerIf
start_SymbIndex
is not a scalar or numpy integerIf
numInterlacedRBs
is not a scalar or numpy integerIf
nID
is not type scalar or numpy array of integerIf
slotNumber
is not type scalar or array of integerIf
pucch_GroupHopping
is not of data type stringIf
indexPUCCH
is not of type integerIf
nHop
is not of type integerValueError
If
indexPUCCH
is not between 3 and 15If
numRBs
is not equal to 1If
numberOfSymb
is not between 1 and 14. Also, ifnumberOfSymb
plusstart_SymbIndex
> 14If
initial_CyclicShift
is not between 0 and 11If
m_CS
is not ‘0’If
start_SymbIndex
is not between 0 and 13If
nID
is not between 0 and 1023If
slotNumber
is not between 0 and 10If
numInterlacedRBs
is not equal to 10 or 11If
pucch_GroupHopping
doesn’t contain valid information.If
nHop
is 0 or 1. Also, ifintraSlotFreqHopping
is disabled, it is always 0.
- property indexPUCCH
This parameter is used to select the resource from the common resource configuration provided by SIB1
- property initial_CyclicShift
Initial Cyclic Shift. Takes values bwtween 0 and 11.
- property m_CS
Cyclic shift offset based on the information to be transmitted
- property maxNumPRBs
Maximum number of Physical Resource Blocks within a Bandwidth Part
- property nHop
Frequency Hopping Index
- property nID
Hopping ID - Higher Layer Parameter. Takes values between 0 and 1023
- property numInterlacedRBs
Number of Interlaced Resource Blocks allocated
- property numRBs
Number of Physical Resource Blocks allocated
- property numberOfSymb
Number of OFDM Symbols allocated. 4 to 14 symbols can be allocated within a slot
- property pucch_GroupHopping
Group Hopping and Sequence Hopping Information
- property slotNumber
Slot Number with a Radio frame consisting of 10 slots
- property start_SymbIndex
Starting Symbol Index within the slot
References
[1]. (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’
[2]. (3GPP TS 38.211 version 17.1.0 Release 17) 5G;NR;Physical channels and modulation ‘6.3.2.4 PUCCH Format 1’
[3]. (3GPP TS 38.213 version 16.5.0 Release 16) 5G;NR;Physical layer procedures for control ‘ 9.2.1 PUCCH Resource Sets’
[4]. Book - 5G NR in Bullets, Edition 1