5G/NR - PUCCH                                           Home : www.sharetechnote.com

 

 

 

 

 

PUCCH / UCI

 

PUCCH is an uplink physical channel that carries UCI (Uplink Control Information). As DCI (Downlink Control Information) is carried by PDCCH, UCI is carried by PUCCH.  A big difference between DCI and UCI is that UCI can be carried either by PUCCH or PUSCH depending on situation whereas DCI can be carried only by PDCCH (not by PDSCH in any case).

 

 

 

Contents of UCI

 

The contents of UCI is as follows (this is same as LTE). Not all of these are carried by single UCI. Depending on situation, sometimes only CSI is carried, sometimes ACK/NACK only, sometimes SR only and sometimes CSI & ACK/NACK etc.

  • CSI
  • ACK/NAK
  • Scheduling Request (SR)

 

 

 

PUCCH Formats

 

There are 5 different formats of PUCCH and which one of them is used is determined by how many bits of information should be carried and how many symbols are assigned, as summarized in the following table.

 

< Based on 38.211 - Table 6.3.2.1-1: PUCCH formats.>

Format Types

Lengh of Symbols

Number of bits

Descriptions (based on 38.300 - 5.3.3)

Format 0

1~2

<= 2

Short PUCCH.

with UE multiplexing in the same PRB.

Based on sequence selection.

Format 1

4~14

<= 2

Long PUCCH.

with multiplexing in the same PRB.

time-multiplex the UCI and DMRS

Format 2

1~2

> 2

Short PUCCH.

with no multiplexing in the same PRB.

frequency multiplexes UCI and DMRS

Format 3

4~14

> 2

Long PUCCH.

with moderate UCI payloads and with some multiplexing capacity in the same PRB.

time-multiplex the UCI and DMRS

Format 4

4~14

> 2

Long PUCCH.

with large UCI payloads and with no multiplexing capacity in the same PRB

 

I think the description from 38.300 - 5.3.3 would give you another aspects of the description as below.   

    The short PUCCH format of up to two UCI bits is based on sequence selection, while the short PUCCH format of more than two UCI bits frequency multiplexes UCI and DMRS. The long PUCCH formats time-multiplex the UCI and DMRS. Frequency hopping is supported for long PUCCH formats and for short PUCCH formats of duration of 2 symbols. Long PUCCH formats can be repeated over multiple slots.

 

 

 

How to Determine PUCCH location ?

 

Following is the illustration for the description on 38.213 - 9.2.1 PUCCH Resource Sets. As you see in the following illustration, some parameters applies to all PUCCH format but some parameters applies to only specific formats as below.

 

 

 

 

How to define PUCCH baseband signal ?

 

RRC Parameters

Related PUCCH Format

Description

PUCCH-F0-F1-initial-cyclic-shift

Format 0 / 1

The index of the cyclic shift = {0,1,...11}
PUCCH-F1-time-domain-OCC

Format 1

The index of the orthogonal cover code
PUCCH-F4-preDFT-OCC-index

Format 4

The index of the orthogonal cover code = {0,1,2,3}
PUCCH-F4-preDFT-OCC-length

Format 4

The length of the orghogonal cover code = {2,4}

 

 

 

Frequeny Hopping

 

It is possible to enable or disable PUCCH using RRC Parameter PUCCH-frequency-hopping

 

 

 

Modulation

 

QPSK or BPSK is used depending on cases as below.

  • Long PUCCH with 2 or more bits of information : QPSK
  • Short PUCCH with more than 2 bits of information : QPSK
  • Long PUCCH with 1 bit information : BPSK

 

 

 

Channel Coding

 

Various types of Channel coding is applied to UCI(Uplink Control Information) depending on the number of bits to be carried.

 

UCI size including CRC, if present

Channel Code

1

Repetition code

2

Simplex Code

3-11

Reed Muller Code

> 11

Polar Code

 

 

 

 

UCI / PUSCH Multiplexing

 

Is it allowed to transmit UCI and PUSCH at the same time ? This (transmition of UCI and PUSCH at the same time) is called Multiplexing and the UCI/PUSCH multiplexing is supported. This multiplexing happens in the way described as follows (38.300 - 5.3.3)

  • UCI carrying HARQ-ACK feedback with 1 or 2 bits is multiplexed by puncturing PUSCH;
  • In all other cases UCI is multiplexed by rate matching PUSCH.

 

 

 

RRC Parameters

 

 

PUCCH-Config ::=        SEQUENCE {

    resourceSetToAddModList                 SEQUENCE (SIZE (1..maxNrofPUCCH-ResourceSets)) OF

                                    PUCCH-ResourceSet             OPTIONAL,   -- Need N

    resourceSetToReleaseList                SEQUENCE (SIZE (1..maxNrofPUCCH-ResourceSets)) OF

                                    PUCCH-ResourceSetId           OPTIONAL,   -- Need N

    resourceToAddModList                    SEQUENCE (SIZE (1..maxNrofPUCCH-Resources)) OF

                                    PUCCH-Resource               OPTIONAL,   -- Need N

    resourceToReleaseList                   SEQUENCE (SIZE (1..maxNrofPUCCH-Resources)) OF

                                    PUCCH-ResourceId             OPTIONAL,   -- Need N

    format1                         SetupRelease { PUCCH-FormatConfig }  OPTIONAL,   -- Need M

    format2                         SetupRelease { PUCCH-FormatConfig }  OPTIONAL,   -- Need M

    format3                         SetupRelease { PUCCH-FormatConfig }  OPTIONAL,   -- Need M

    format4                         SetupRelease { PUCCH-FormatConfig }  OPTIONAL,   -- Need M

 

    schedulingRequestResourceToAddModList   SEQUENCE (SIZE (1..maxNrofSR-Resources)) OF

                                   SchedulingRequestResourceConfig     OPTIONAL, -- Need M

    schedulingRequestResourceToReleaseList  SEQUENCE (SIZE (1..maxNrofSR-Resources)) OF

                                   SchedulingRequestResourceId         OPTIONAL, -- Need M

 

    multi-CSI-PUCCH-ResourceList   SEQUENCE (SIZE (1..2)) OF PUCCH-ResourceId  OPTIONAL,-- Need M

    dl-DataToUL-ACK                SEQUENCE (SIZE (8)) OF INTEGER (0..15)   OPTIONAL,   -- Need M

    spatialRelationInfoToAddModList    SEQUENCE (SIZE (1..maxNrofSpatialRelationInfos)) OF

                                       PUCCH-SpatialRelationInfo   OPTIONAL,   -- Need N

    spatialRelationInfoToReleaseList   SEQUENCE (SIZE (1..maxNrofSpatialRelationInfos)) OF

                                       PUCCH-SpatialRelationInfoId OPTIONAL,   -- Need N

 

    pucch-PowerControl                 PUCCH-PowerControl   OPTIONAL,   -- Need M

    ...

}

 

resourceSetToAddModList  : List of PUCCH-ResourceSet

 

resourceToAddModList   :  Lists for adding  PUCCH resources applicable for the UL BWP and serving cell in which the PUCCH-Config is defined. The resources defined herein are referred to from other parts of the configuration to determine which resource the UE shall use for which report.  

 

format1  : Parameters that are common for all PUCCH resources of format 1

 

format2  : Parameters that are common for all PUCCH resources of format 2

 

format3  : Parameters that are common for all PUCCH resources of format 3

 

format4  : Parameters that are common for all PUCCH resources of format 4

 

dl-DataToUL-ACK : List of timiing for given PDSCH to the DL ACK. In this version of the specification only the values [0..8] are applicable. Corresponds to L1 parameter 'Slot-timing-value-K1'

 

spatialRelationInfoToAddModList : Configuration of the spatial relation between a reference RS and PUCCH. Reference RS can be SSB/CSI-RS/SRS. If the list has more than one element, MAC-CE selects a single element. Corresponds to L1 parameter 'PUCCH-SpatialRelationInfo'

 

 

PUCCH-FormatConfig ::=                  SEQUENCE {

    interslotFrequencyHopping               ENUMERATED {enabled}  OPTIONAL,   -- Need R

    additionalDMRS                          ENUMERATED {true}     OPTIONAL,   -- Need R

    maxCodeRate                             PUCCH-MaxCodeRate     OPTIONAL,   -- Need R

    nrofSlots                               ENUMERATED {n2,n4,n8}   OPTIONAL,   -- Need S

    pi2PBSK                                 ENUMERATED {enabled}    OPTIONAL,   -- Need R

    simultaneousHARQ-ACK-CSI                ENUMERATED {true}       OPTIONAL    -- Need R

}

 

PUCCH-MaxCodeRate ::=         ENUMERATED {zeroDot08, zeroDot15, zeroDot25, zeroDot35,

                                          zeroDot45, zeroDot60, zeroDot80}

 

interslotFrequencyHopping : Enabling inter-slot frequency hopping when PUCCH Format 1, 3 or 4 is repetead over multiple slots. The field is not applicable for format 2

 

additionalDMRS : Enabling 2 DMRS symbols per hop of a PUCCH Format 3 or 4 if both hops are more than X symbols when FH is enabled (X=4). Enabling 4 DMRS sybmols for a PUCCH Format 3 or 4 with more than 2X+1 symbols when FH is disabled (X=4). Corresponds to L1 parameter 'PUCCH-F3-F4-additional-DMRS'. The field is not applicable for format 1 and 2.  

 

maxCodeRate : Max coding rate to determine how to feedback UCI on PUCCH for format 2, 3 or 4. Corresponds to L1 parameter 'PUCCH-F2-maximum-coderate', 'PUCCH-F3-maximum-coderate' and 'PUCCH-F4-maximum-coderate' . The field is not applicable for format 1.

 

nrofSlots : Number of slots with the same PUCCH F1, F3 or F4. When the field is absent the UE applies the value n1. Corresponds to L1 parameter 'PUCCH-F1-number-of-slots', 'PUCCH-F3-number-of-slots' and 'PUCCH-F4-number-of-slots'. The field is not applicable for format 2.

 

pi2PBSK : Enabling pi/2 BPSK for UCI symbols instead of QPSK for PUCCH. Corresponds to L1 parameter 'PUCCH-PF3-PF4-pi/2PBSK'. The field is not applicable for format 1 and 2.

 

simultaneousHARQ-ACK-CSI : Enabling simultaneous transmission of CSI and HARQ-ACK feedback with or without SR with PUCCH Format 2, 3 or 4. Corresponds to L1 parameter 'PUCCH-F2-Simultaneous-HARQ-ACK-CSI', 'PUCCH-F3-Simultaneous-HARQ-ACK-CSI' and 'PUCCH-F4-Simultaneous-HARQ-ACK-CSI'. When the field is absent the UE applies the value OFF. The field is not applicable for format 1.

 

 

PUCCH-SpatialRelationInfo ::=               SEQUENCE {

    pucch-SpatialRelationInfoId                 PUCCH-SpatialRelationInfoId,

    referenceSignal                             CHOICE {

        ssb-Index                                   SSB-Index,

        csi-RS-Index                                NZP-CSI-RS-ResourceId,

        srs                                         SRS-ResourceId

    },

    pucch-PathlossReferenceRS-Id                PUCCH-PathlossReferenceRS-Id,

    p0-PUCCH-Id                                 P0-PUCCH-Id,

    closedLoopIndex                             ENUMERATED { i0, i1 }

}

 

PUCCH-SpatialRelationInfoId ::=             INTEGER (1..maxNrofSpatialRelationInfos)

 

PUCCH-ResourceSet ::=                       SEQUENCE {

    pucch-ResourceSetId                         PUCCH-ResourceSetId,

    resources                                   SEQUENCE (SIZE (8..maxNrofPUCCH-ResourcesPerSet))

                                                          OF PUCCH-ResourceId,

    maxPayloadMinus1                            INTEGER (4..256)  OPTIONAL    -- Need R

}

 

PUCCH-ResourceSetId ::=                         INTEGER (0..maxNrofPUCCH-ResourceSets-1)

 

PUCCH-Resource ::=                              SEQUENCE {

    pucch-ResourceId                                PUCCH-ResourceId,

    startingPRB                                     PRB-Id,

    intraSlotFrequencyHopping                       ENUMERATED { enabled } OPTIONAL,   -- Need R

    secondHopPRB                                    PRB-Id      OPTIONAL,   -- Need R

 

    format             CHOICE {

        format0               PUCCH-format0,     - Cond InFirstSetOnly

        format1               PUCCH-format1,     - Cond InFirstSetOnly

        format2               PUCCH-format2,     - Cond NotInFirstSet

        format3               PUCCH-format3,     - Cond NotInFirstSet

        format4               PUCCH-format4      - Cond NotInFirstSet

    }

}

 

PUCCH-ResourceId ::=                            INTEGER (0..maxNrofPUCCH-Resources-1)

 

PUCCH-format0 ::=                               SEQUENCE {

    initialCyclicShift                              INTEGER(0..11),

    nrofSymbols                                     INTEGER (1..2),

    startingSymbolIndex                             INTEGER(0..13)

}

 

PUCCH-format1 ::=                               SEQUENCE {

    initialCyclicShift                              INTEGER(0..11),

    nrofSymbols                                     INTEGER (4..14),

    startingSymbolIndex                             INTEGER(0..10),

    timeDomainOCC                                   INTEGER(0..6)

}

 

PUCCH-format2 ::=                               SEQUENCE {

    nrofPRBs                                        INTEGER (1..16),

    nrofSymbols                                     INTEGER (1..2),

    startingSymbolIndex                             INTEGER(0..13)

}

 

PUCCH-format3 ::=                               SEQUENCE {

    nrofPRBs                                        INTEGER (1..16),

    nrofSymbols                                     INTEGER (4..14),

    startingSymbolIndex                             INTEGER(0..10)

}

 

PUCCH-format4 ::=                               SEQUENCE {

    nrofSymbols                                     INTEGER (4..14),

    occ-Length                                      ENUMERATED {n2,n4},

    occ-Index                                       ENUMERATED {n0,n1,n2,n3},

    startingSymbolIndex                             INTEGER(0..10)

}

 

PUCCH-ConfigCommon ::=           SEQUENCE {

    pucch-ResourceCommon            BIT STRING (SIZE (4))      OPTIONAL,   -- Need R

    pucch-GroupHopping              ENUMERATED { neither, enable, disable },

    hoppingId                       BIT STRING (SIZE (10))     OPTIONAL,   -- Need R

    p0-nominal                      INTEGER (-202..24)         OPTIONAL,   -- Need R

 

    ...

}

 

 

SchedulingRequestResourceConfig ::=    SEQUENCE {

    schedulingRequestResourceId              SchedulingRequestResourceId,

    schedulingRequestID                      SchedulingRequestId,

    periodicityAndOffset                     CHOICE {

        sym2                                    NULL,                       

        sym6or7                                 NULL,                       

        sl1                                     NULL,      -- Recurs in every slot

        sl2                                     INTEGER (0..1),

        sl4                                     INTEGER (0..3),

        sl5                                     INTEGER (0..4),

        sl8                                     INTEGER (0..7),

        sl10                                    INTEGER (0..9),

        sl16                                    INTEGER (0..15),

        sl20                                    INTEGER (0..19),

        sl40                                    INTEGER (0..39),

        sl80                                    INTEGER (0..79),

        sl160                                   INTEGER (0..159),

        sl320                                   INTEGER (0..319),

        sl640                                   INTEGER (0..639)

    }         OPTIONAL,   -- Need M

    resource                                    PUCCH-ResourceId     OPTIONAL    -- Need M

}

 

 

PUCCH-PowerControl ::=      SEQUENCE {

    deltaF-PUCCH-f0            INTEGER (-16..15)      OPTIONAL,   -- Need R

    deltaF-PUCCH-f1            INTEGER (-16..15)      OPTIONAL,   -- Need R

    deltaF-PUCCH-f2            INTEGER (-16..15)      OPTIONAL,   -- Need R

    deltaF-PUCCH-f3            INTEGER (-16..15)      OPTIONAL,   -- Need R

    deltaF-PUCCH-f4            INTEGER (-16..15)      OPTIONAL,   -- Need R

    p0-Set                     SEQUENCE (SIZE (1..maxNrofPUCCH-P0-PerSet)) OF

                                  P0-PUCCH            OPTIONAL, -- Need M

    pathlossReferenceRSs       SEQUENCE (SIZE (1..maxNrofPUCCH-PathlossReferenceRSs)) OF

                                  PUCCH-PathlossReferenceRS OPTIONAL, -- Need M

    twoPUCCH-PC-AdjustmentStates     ENUMERATED {twoStates} OPTIONAL, -- Need R

    ...

}

 

P0-PUCCH ::=                            SEQUENCE {

    p0-PUCCH-Id                             P0-PUCCH-Id,

    p0-PUCCH-Value                          INTEGER (-16..15)

}

 

P0-PUCCH-Id ::=                         INTEGER (1..8)

 

PUCCH-PathlossReferenceRS ::=           SEQUENCE {

    pucch-PathlossReferenceRS-Id                PUCCH-PathlossReferenceRS-Id,

    referenceSignal                             CHOICE {

        ssb-Index                                   SSB-Index,

        csi-RS-Index                                NZP-CSI-RS-ResourceId

    }

}

 

PUCCH-PathlossReferenceRS-Id ::=  INTEGER (0..maxNrofPUCCH-PathlossReferenceRSs-1)

 

 

 

Reference

 

[1]