PUCCH Format 0 Sequence

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
numInterlacedRBs       = 10 #Number of Interlaced ResourceBlocks

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
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
numInterlacedRBs       = None #Number of Interlaces

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
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

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
class toolkit5G.SequenceGeneration.PUCCHFormat0Sequence(intraSlotFreqHopping=False, interlacedTransmission=False, pucch_ResourceCommon=False, seqNumber=0, numRBs=1)[source]

PUCCH Format 0 Sequence is symbol and Interlaced Resource Block dependent

PUCCH Format0 uses Low PAPR Sequence Type 1 with group 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 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

If PUCCH Format 0 uses common resource configuration for resource allocation, the number of symbols allocated for transmission is always 2 and so, the ‘Intra Slot Frequency Hopping’ is always enabled

But, if PUCCH Format 0 uses dedicated resource set for transmission, then the ‘Intra Slot Frequency Hopping’ can either be enabled or disabled. It can be enabled only if Number of symbols allocated is 2

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 0. And so, the Sequence number is always 0

The Sequence Length for PUCCH Format 0 is 12

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.

  • seqNumber (int) – The parameter ‘seqNumber’ is the sequence number indicating the base sequence to be selected. In case of PUCCH Format 0, there is only 1 sequence within the group and the same sequence will be selected always from each group. And so, ‘seqNumber’ is initialised with 0.

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

Input:
  • numBatches (int) – The parameter ‘numBatches’ is the number of User Equipments. It can take any positive scalar or numpy integer.

  • 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).

  • controlInfo (str) – This parameter interprets the control information carried. Valid control information that it can take is “1-HARQ”, “2-HARQ”, “SR”, “HARQ+SR”.

  • 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 maximum slots within a frame.

  • 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.

  • 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

  • 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

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. And, 12 is the sequence length.

Raises:

TypeError

If pucch_GroupHopping is not of data type string

If indexPUCCH is not of type integer

If numRBs is not a integer type

If numberOfSymb is not of type integer

If numBatches is an integer

If seqNumber is not of type scalar or numpy integer

If initial_CyclicShift is not a scalar or numpy integer

If m_CS is not a numpy array of integers

If start_SymbIndex is not a scalar or numpy integer

If numInterlacedRBs is not a scalar or numpy integer

If nID is not type scalar or numpy array of integer

If slotNumber is not type scalar or array of integer

If controlInfo is not a string

ValueError

If indexPUCCH is not between 0 and 2

If numRBs is not equal to 1

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

If numBatches is a positive value

If seqNumber is not a non negative value

If initial_CyclicShift is not between 0 and 11

If m_CS is not ‘0’, ‘3’, ‘6’, ‘9’

If start_SymbIndex is not between 0 and 13

If nID is not between 0 and 1023

If slotNumber is not between 0 and 10

If numInterlacedRBs is not equal to 10 or 11

If pucch_GroupHopping doesn’t contain valid information

If controlInfo doesn’t contain valid information

property controlInfo

Control information carried by Format0 on the uplink control channel

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 between 0 and 11

property m_CS

Cyclic shift offset depending upon the information to be transmitted

property nID

Hopping ID - Higher layer parameter. Takes any values between 0 and 1023

property numBatches

Number of User Equipments - Batching

property numInterlacedRBs

Number of Interlaced Resource Blocks allocated

property numRBs

Number of Physical Resource Blocks allocated

property numberOfSymb

Number of OFDM Symbols allocated. Maximum of 2 symbols can be allocated

property pucch_GroupHopping

Group Hopping and Sequence Hopping Information

property seqNumber

Sequence number within a group depending upon the sequence hopping

property slotNumber

Slot Number withi a Radio frame consisting of 10 slots

property start_SymbIndex

Starting Symbol Index within a slot consisting of 14 OFDM symbols

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 0’

[3GPPTS38212_Format0]

(3GPP TS 38.211 version 17.1.0 Release 17) 5G;NR;Physical channels and modulation ‘6.3.2.4 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’