Main Content

nrPUCCH1

Generate PUCCH format 1 modulation symbols

Description

sym = nrPUCCH1(ack,sr,symAllocation,cp,nslot,nid,groupHopping,initialCS,freqHopping,occi) returns the physical uplink control channel (PUCCH) format 1 modulation symbols, as defined in TS 38.211 Section 6.3.2.4 [1], based on these input arguments:

  • Hybrid automatic repeat-request acknowledgment (HARQ-ACK) ack

  • Scheduling request (SR) sr

  • PUCCH symbol allocation symAllocation

  • Cyclic prefix cp

  • Radio frame slot number nslot

  • Scrambling identity nid

  • Group hopping configuration groupHopping

  • Initial cyclic shift initialCS

  • Intra-slot frequency hopping configuration freqHopping

  • Orthogonal cover code index occi

example

sym = nrPUCCH1(___,mrb) specifies the number of PUCCH resource blocks in addition to the input arguments in the previous syntax.

sym = nrPUCCH1(___,'OutputDataType',datatype) specifies the PUCCH symbol data type in addition to the input argument combinations in the previous syntaxes.

Examples

collapse all

Specify a transmission with two-bit HARQ-ACK and positive SR.

ack = [0;1];
sr = 1;

Specify the first symbol index in the PUCCH transmission slot as 0, the number of allocated PUCCH symbols as 14, and the slot number as 3.

symAllocation = [0 14];
nslot = 3;

Set the scrambling identity to 512 and the initial cyclic shift to 5.

nid = 512;
initialCS = 5;

Generate the symbols with normal cyclic prefix, intra-slot frequency hopping and group hopping enabled, and orthogonal cover code index 2.

cp = 'normal';
freqHopping = 'enabled';
groupHopping = 'enable';
occi = 2;
sym = nrPUCCH1(ack,sr,symAllocation,cp,nslot, ...
    nid,groupHopping,initialCS,freqHopping,occi)
sym = 84×1 complex

  -1.0000 - 0.0000i
  -0.5000 + 0.8660i
  -0.8660 + 0.5000i
  -0.0000 - 1.0000i
  -0.8660 - 0.5000i
   0.8660 - 0.5000i
  -1.0000 + 0.0000i
   0.8660 + 0.5000i
  -0.8660 + 0.5000i
  -1.0000 + 0.0000i
      ⋮

Specify a transmission with one-bit HARQ-ACK and negative SR.

ack = 1;
sr = 0;

Specify the first symbol index in the PUCCH transmission slot as 3, the number of allocated PUCCH symbols as 9, and the slot number as 7.

symAllocation = [3 9];
nslot = 7;

Set the scrambling identity to 512 and the initial cyclic shift to 9.

nid = 512;
initialCS = 9;

Generate the symbols with extended cyclic prefix, intra-slot frequency hopping and group hopping enabled, and orthogonal cover code index 1.

cp = 'extended';
freqHopping = 'enabled';
groupHopping = 'enable';
occi = 1;
sym = nrPUCCH1(ack,sr,symAllocation,cp,nslot, ...
    nid,groupHopping,initialCS,freqHopping,occi)
sym = 48×1 complex

  -0.0000 + 1.0000i
  -0.8660 + 0.5000i
  -0.5000 + 0.8660i
   1.0000 - 0.0000i
   0.8660 - 0.5000i
   0.8660 + 0.5000i
  -0.0000 - 1.0000i
  -0.8660 + 0.5000i
   0.8660 + 0.5000i
   0.0000 + 1.0000i
      ⋮

Input Arguments

collapse all

HARQ-ACK bits, specified as an empty vector or a binary column vector with one or two rows. An empty vector indicates PUCCH transmission without HARQ-ACK. If specifying a binary column vector, the number of rows corresponds to the number of codewords. Vector element 1 denotes positive acknowledgement (ACK), and vector element 0 denotes negative acknowledgment (NACK).

Data Types: double

SR bits, specified as an empty vector, 1, or 0. An empty vector indicates PUCCH transmission without SR. 1 denotes positive SR. 0 denotes negative SR. For either positive or negative SR with HARQ-ACK information bits, only HARQ-ACK transmission occurs. For negative SR without HARQ-ACK, the output sym is empty.

Data Types: double

PUCCH symbol allocation, specified as a two-element numeric vector of the form [S L], where S and L are nonnegative integers.

  • S is the first OFDM symbol index in the PUCCH transmission slot.

  • L is the number of OFDM symbols allocated for PUCCH transmission. For PUCCH format 1, L is an integer from 4 or 14.

Note

S and L must satisfy these conditions.

  • For extended control prefix, S + L ≤ 12.

  • For normal cyclic prefix, S + L ≤ 14.

Data Types: double

Cyclic prefix length, specified as one of these options:

  • 'normal' — Use this value to specify normal cyclic prefix. This option corresponds to 14 OFDM symbols in a slot.

  • 'extended' — Use this value to specify extended cyclic prefix. This option corresponds to 12 OFDM symbols in a slot. For the numerologies specified in TS 38.211 Section 4.2, extended cyclic prefix length only applies for 60 kHz subcarrier spacing.

Data Types: char | string

Radio frame slot number, specified as an integer from 0 to 159. For normal cyclic prefix of different numerologies, specify an integer from 0 to 159. For extended cyclic prefix, specify an integer from 0 to 39. For more details, see TS 38.211 Section 4.3.2.

Data Types: double

Scrambling identity, specified as an integer from 0 to 1023. nid is higher layer parameter hoppingId, ranging from 0 to 1023, if the higher layer parameter is configured. Otherwise, nid is the physical layer cell identity number NCellID, ranging from 0 to 1007. For more information on these values, see TS 38.211 Section 6.3.2.2.1.

Data Types: double

Group hopping configuration, specified as 'neither', 'enable', or 'disable'. The groupHopping argument is higher layer parameter pucch-GroupHopping.

Note

When groupHopping is set to 'disable', the function enables sequence hopping. In this case, the selected sequence number might not be appropriate for short base sequences.

Data Types: char | string

Initial cyclic shift, m_0, specified as an integer from 0 to 11. initialCS is higher layer parameter initialCyclicShift.

For more information, see TS 38.213 Section 9.2.1 [2].

Data Types: double

Intra-slot frequency hopping configuration, specified as 'enabled' or 'disabled'. The freqHopping argument is higher layer parameter intraSlotFrequencyHopping.

Data Types: char | string

Orthogonal cover code index, specified as an integer from 0 to 6. This input argument corresponds to higher layer parameter timeDomainOCC. The valid range depends on the number of OFDM symbols that contain control information in a hop.

Data Types: double

Number of PUCCH resource blocks, specified as a positive integer.

Data Types: double

Data type of the output symbols, specified as 'double' or 'single'.

Data Types: char | string

Output Arguments

collapse all

PUCCH format 1 modulation symbols, returned as a complex column vector or an empty vector. sym is of length 12×mrb×floor(L/2), where L is the PUCCH symbol allocation length, specified by symAllocation. For negative SR without HARQ-ACK, the output sym is empty.

Data Types: single | double
Complex Number Support: Yes

References

[1] 3GPP TS 38.211. “NR; Physical channels and modulation.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[2] 3GPP TS 38.213. “NR; Physical layer procedures for control.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

Extended Capabilities

Version History

Introduced in R2019a

expand all