nrPUCCHDMRS
Description
generates sym
= nrPUCCHDMRS(carrier
,pucch
)sym
, which contains demodulation reference signal (DM-RS)
symbols of a physical uplink control channel (PUCCH), as defined in TS 38.211 Section
6.4.1.3 [1], for all PUCCH formats.
carrier
specifies the carrier configuration.
pucch
specifies the PUCCH configuration. For PUCCH formats 1, 3, and
4, setting the GroupHopping
property of pucch
is
set to 'disable'
enables sequence hopping. In this case, the function
selects a sequence number, which might be inappropriate for short base sequences. For PUCCH
format 0, the function returns an empty value for sym
.
Examples
Generate PUCCH DM-RS Format 2 Symbols and Indices
Create a default carrier configuration object.
carrier = nrCarrierConfig;
Specify the number of RBs in the carrier resource grid as 50, the start of the carrier resource grid relative to CRB 0 as 120, and the slot number as 25.
carrier.NSizeGrid = 50; carrier.NStartGrid = 120; carrier.NSlot = 25;
Create a default PUCCH format 2 configuration object.
pucch2 = nrPUCCH2Config;
Specify the first symbol index in the PUCCH transmission slot as 7 and the number of allocated PUCCH symbols as 2. Set the PRBs allocated for the PUCCH to range from 40 to 45. Enable intraslot frequency hopping and set the starting PRB index of the second hop to 20. Specify the DM-RS scrambling identity as 1005.
pucch2.SymbolAllocation = [7 2];
pucch2.PRBSet = 40:45;
pucch2.FrequencyHopping = 'intraSlot';
pucch2.SecondHopStartPRB = 20;
pucch2.NID0 = 1005;
Generate the DM-RS symbols of PUCCH format 2.
sym = nrPUCCHDMRS(carrier,pucch2)
sym = 48×1 complex
0.7071 - 0.7071i
-0.7071 + 0.7071i
-0.7071 - 0.7071i
0.7071 - 0.7071i
-0.7071 - 0.7071i
0.7071 - 0.7071i
0.7071 - 0.7071i
0.7071 - 0.7071i
0.7071 - 0.7071i
-0.7071 + 0.7071i
⋮
Generate the DM-RS RE indices of PUCCH format 2.
ind = nrPUCCHDMRSIndices(carrier,pucch2)
ind = 48x1 uint32 column vector
4682
4685
4688
4691
4694
4697
4700
4703
4706
4709
⋮
Plot the generated symbols and REs in the carrier resource grid.
resGrid = nrResourceGrid(carrier); resGrid(ind) = sym; imagesc(abs(resGrid)) axis xy xlabel('OFDM Symbols') ylabel('Subcarriers') title('Carrier Grid Containing DM-RS of PUCCH Format 2')
Generate PUCCH DM-RS Format 4 Symbols and Indices
Create a default carrier configuration object.
carrier = nrCarrierConfig;
Specify the number of RBs in the carrier resource grid to 10.
carrier.NSizeGrid = 10;
Create a default PUCCH format 4 configuration object.
pucch4 = nrPUCCH4Config;
Set the first symbol index in the PUCCH transmission slot to 2 and the number of allocated PUCCH symbols to 12. Enable group hopping and the additional DM-RS configuration flag. Specify the hopping identity as 120, the spreading factor as 4, and the orthogonal cover code index (OCCI) as 3.
pucch4.SymbolAllocation = [2 12];
pucch4.GroupHopping = 'enable';
pucch4.HoppingID = 120;
pucch4.SpreadingFactor = 4;
pucch4.OCCI = 3;
pucch4.AdditionalDMRS = 1;
Generate the DM-RS symbols of PUCCH format 4 with data type single
.
sym = nrPUCCHDMRS(carrier,pucch4, 'OutputDataType','single')
sym = 48x1 single column vector
0.7071 - 0.7071i
0.7071 - 0.7071i
0.7071 - 0.7071i
-0.7071 - 0.7071i
-0.7071 - 0.7071i
0.7071 - 0.7071i
0.7071 + 0.7071i
-0.7071 - 0.7071i
0.7071 + 0.7071i
0.7071 + 0.7071i
⋮
Generate the DM-RS RE indices of PUCCH format 4.
ind = nrPUCCHDMRSIndices(carrier,pucch4)
ind = 48x1 uint32 column vector
361
362
363
364
365
366
367
368
369
370
⋮
Plot the generated symbols and REs in the carrier resource grid.
resGrid = nrResourceGrid(carrier); resGrid(ind) = sym; imagesc(abs(resGrid)) axis xy xlabel('OFDM Symbols') ylabel('Subcarriers') title('Carrier Grid Containing DM-RS of PUCCH Format 4')
Input Arguments
carrier
— Carrier configuration parameters
nrCarrierConfig
object
Carrier configuration parameters for a specific OFDM numerology, specified as an nrCarrierConfig
object. This function uses only these properties of the nrCarrierConfig
object.
pucch
— PUCCH configuration parameters
nrPUCCH1Config
object | nrPUCCH2Config
object | nrPUCCH3Config
object | nrPUCCH4Config
object
PUCCH configuration parameters, specified as one of these options.
For format 1, specify an
nrPUCCH1Config
object. The function uses only these object properties.For format 2, specify an
nrPUCCH2Config
object. The function uses only these object properties.For format 3, specify an
nrPUCCH3Config
object. The function uses only these object properties.For format 4, specify an
nrPUCCH4Config
object. The function uses only these object properties.
For PUCCH formats 1 to 3 and operation with
shared spectrum channel access for frequency range 1 (FR1), set the corresponding
Interlacing
property to true
, and use the
RBSetIndex
and InterlaceIndex
object
properties to specify the allocated frequency resources. In addition, for PUCCH formats
2 and 3, you can use the SpreadingFactor
and
OCCI
properties with single-interlace configurations. (since R2023b)
Note
For PUCCH format 0, the function returns an empty value.
datatype
— Data type of output symbols
'double'
| 'single'
Data type of the output symbols, specified as 'double'
or
'single'
.
Data Types: char
| string
Output Arguments
sym
— PUCCH DM-RS modulation symbols
complex matrix
PUCCH DM-RS modulation symbols, returned as a complex matrix. For PUCCH format 0, this output 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.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
The
datatype
input argument must be compile-time constant. For example,
when specifying 'single'
as the output data type, include
{coder.Constant('OutputDataType'),coder.Constant('single')}
in the
-args
value of the codegen
function. For more
information, see the coder.Constant
(MATLAB Coder) class.
Version History
Introduced in R2021aR2023b: Configure intracell guard bands
Use the IntraCellGuardBands
object property of the carrier
input
to specify intracell guard bands.
R2023b: Support for release 16 interlacing for operation in unlicensed spectrum (NR-U)
For PUCCH formats 1 to 3, use the Interlacing
,
RBSetIndex
, and InterlaceIndex
object properties
of the
pucch
input argument to configure interlaced PUCCH transmissions. In addition, for PUCCH formats 2
and 3, you can use the SpreadingFactor
and OCCI
properties with single-interlace configurations.
R2023b: Release 16 updates for low PAPR sequences and DM-RS scrambling identities for PUCCH formats 3 and 4
For PUCCH formats 3 and 4, use the
DMRSUplinkTransformPrecodingR16
and
NID0
object properties of the pucch
input argument to specify type 2 low
peak-to-average power ratio (PAPR) PUCCH demodulation reference signal (DM-RS) sequences and
DM-RS scrambling identities, as defined in Release 16 of TS 38.211 Section
6.4.1.3.3.1.
See Also
Functions
Objects
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)