NR PUCCH(一) PUCCH format 0/1

article/2025/11/6 22:31:37

欢迎关注同名微信公众号“modem协议笔记”。

NR中PUCCH物理信道用来发送上行控制信息Uplink Control Information(UCI),当然UCI也可以在PUSCH上发送。UCI 内容包括:CSI,HARQ ACK/NACK ,SR  及上述三者的组合信息。

那先看下PUCCH format ,序列的生成及资源映射的相关内容。

1875228da5e542d5b411deaf8911f28e.png

NR中支持5种格式PUCCH,根据PUCCH format占用时域符号长度分为短PUCCH(1-2个符号,PUCCH 0/2)和长PUCCH(4-14个符号,PUCCH1/3/4)。使用短PUCCH 能够支持更快速的HARQ应答/信道状态反馈,用于超低时延场景;5种PUCCH格式占用符号数,携带的信息bits数,如上表。长格式PUCCH format 1/3/4可以支持时隙内和时隙间跳频,短格式PUCCH format 0/2可以支持时隙内跳频(2个符号时)。

当使用时隙内跳频时,第一跳发送的符号个数为N_PUCCH_symb /2(向下取整),N_PUCCH_symb 为PUCCH 的符号长度。

e721aa2c20954a8db3b574c2de24b769.png

ab80b8ce47bc4c2f99aa82a116fe5e90.png

不考虑frequency hopping,1个PUCCH format 对应就是一块时频资源,通过starting symbol Index 和nr of symbols 确定时域资源位置;通过startingPRB和nr of PRBs确定频域资源位置。

starting symbol Index指的是slot内 PUCCH format对应符号的index,对于长PUCCH starting symbol Index 范围是0~10,短PUCCH starting symbol Index 是0~13;PUCCH是包含在一个时隙中的,Start symbol index + nr of symbols <= 14。starting PRB的参考点是激活BWP的下边界PRB 0。

4458392c80044b4bb18ae537b8146bc9.png

先看PUCCH format 0,PUCCH 0用于发送HARQ的ACK/NACK反馈,也可以携带SR信息;PUCCH 0发送的信息bit为1 或者2个;PUCCH 0在频域上占用一个RB,在时域上占用1-2个符号。

PUCCH 0高层相关配置参数

initialCyclicShift :初始循环移位

nrofSymbols:符号个数

startingSymbollndex:开始符号索引,时隙内任意位置。

00a5d52f35cf4e9c9ed482ca354d690d.png

format 0  支持循环移位 0~11 ,可以支持12 个UE复用,考虑HARQ-ACK bit数,实际只能支持6(1bit)和3个UE(2bits)复用。比如1 bit HARQ ACK的情况,UE得到initialCyclicShift =0,实际上循环移位 6对应的序列也由该UE使用用作反馈HARQ-ACK value 1;给不同的UE 配置不同的循环移位值  即可实现format 0的复用。

38.213 

8b96f3723e4e48278da764283561afe9.png

5840066caa574546abeb81e0a6932bdf.png

PUCCH format 0 为短PUCCH,时域占用1~2个OFDM符号,用于传输1~2bit的 HARQ-ACK和SR。为了保证在一个OFDM符号上较低的峰均功率比(Peak-to-Average Power Ratio,PAPR)特性,以及多用户复用传输特性,PUCCH format 0没有调制过程,不使用参考信号,HARQ-ACK的不同组合状态通过使用同一个基序列的不同循环移位产生的传输序列来表达。PUCCH 0发送ack/nack反馈,0代表NACK,1代表ACK。

例如原始序列0,1,2,3,4,5,6,7,8,9,10,11,单bit HARQ 场景:

发送的序列是0,1,2,3,4,5,6,7,8,9,10,11  循环移位是0则是nack;

发送的序列是6,7,8,9,10,11,0,1,2,3,4,5  循环移位是6代表 ack 。

当使用2bits时,Mcs 参照38.213 Table 9.2.3-4中的情况表达不同的含义。

46175fd796384412b1b4a5b538b657a4.png

PUCCH format 0,1,3,4  均使用38.211 5.2.2中的低均峰比序列type 1。

低峰均值比序列是基于基序列生成,而基序列是基于ZC 序列生成。ZC序列是CAZAC(Constant Amplitude Zero Auto-Correlation)序列,具有恒幅、零自相关的优良特点;且具有良好的互相关性,即对于任意CAZAC原始序列与其循环移动n位后的序列互不相关;任意CAZAC序列经过(FFT/IFFT)后仍然是CAZAC序列。协议中根据序列长度分别定义了基序列---如果Mzc 为6、12、18、24,使用如图红框表达式(一种特殊的QPSK-based序列);如果Mzc 为30 ,使用黄框中的表达式。

对于PUCCH format 0 Mzc=12 使用红框中的基序列表达式。

4d2a254e957c4695b59549057e36fa9b.png

PUCCH format 0,1,3,4  使用的低均峰比序列type 1 表达式如下

e3d07faa344b4760bfe435ed59420b71.png

618a45232727478eab8240ec22b1cede.png

基序列分成30组,对于PUCCH 0 来说 每组一个基序列 v=0 ;基序列组号u和v的值根据公式确定,主要与RRC 层参数 pucch-GroupHopping 相关。下面看PUCCH 0  u和v的确定方法。

f08049cd59f443a4b83c211870c14dc9.png

pucch-GroupHopping:用于PUCCH format 0,1,3,4;“neither”代表group和sequence hopping 都不开启;“enable”代表 enable group 但是disable sequence hopping;"disable" 代表disable group但是 enable sequence hopping。  

a08eaa75342c418cbb63624d28c4d98f.png

v和u的确定和RRC配置参数 pucch-GroupHopping有关系:

当pucch-GroupHopping=neither时,基序列组和序列不变 ;

当pucch-GroupHopping=enable时,基序列组跳变,序列不变; 

当pucch-GroupHopping=disable时,基序列组不变,序列跳变。

2d0cc49983f6493fa042ca2ba69420fd.png

u 和v确定后,PUCCH 基序列也就确定,之后再确定循环移位,PUCCH使用的低均峰比序列type 1序列就可以完全确定下来。

循环移位的确定公式及对应参数的取值如下图。

13a535a1a44a4eea968542dc73328c18.png

cd7c4fb3dcd34226814484c009fda290.png

相比于R15,R16多了一个参数mint及对应RRC IE,当有配置 useInterlacePUCCH-PUSCH时,mint=5n_IRB ;否则mint=0。这个interlace和NR-U相关,暂不关注。下面就是根据低均峰比序列type 1生成PUCCH format 0 序列的过程。

0caab31515024f1aad516671dcd7aeb9.png

最后要把序列映射到具体RE上,映射顺序先频域k,再时域l。PUCCH 0天线端口号 p=2000;其实PUCCH 0/1/2/3/4 使用的天线端口号都是 p=2000。

从资源映射和PUCCH 0序列特点可以看出,PUCCH 0时域资源可以配置1 或2个符号,不影响复用的UE个数,当配置为2个符号时,可以提升ACK反馈的可靠性。当进行的是interlaced 传输时,对于每一个interlace RB要进行相同的资源映射过程。

解调(De-Modulation)和调制(Modulation)相对应,如果UCI没有经过调制,UE不需要发送DM-RS, 根据38.211 内容看PUCCH format 0直接通过Cyclic Shift表示UCI,不需要编码、加扰和调制,因而PUCCH format 0 不需要DMRS 。因此PUCCH format 1、PUCCH format 2、PUCCH format 3和PUCCH format 4有DM-RS的序列生成 及需要资源映射。

再看下PUCCH format 1,PUCCH format 1属于长PUCCH,在时域占用符号个数4-14个,承载的信息bit最多2个;用于HARQ的ACK/NACK反馈,也可以携带SR信息;PUCCH 1在频域上占用1个RB。

PUCCH 1 RRC层相关配置参数如下。9bbfe749b4f64e3585ae99ad0b640013.png

initialCyclicshift:初始循环位数(0~11)

nrofSymbols:符号个数4-14

startingSymbollndex:开始符号索引

timeDomainOCC:时域OCC配置(0~6)

根据initialCyclicshift和timeDomainOCC 可知,PUCCH 1最多支持12×7=84UE复用。

PUCCH 1 的ACK/NACK 反馈信息 1 或者 2bits -- 1 表示 ACK,0 表示NACK;采用/2 BPSK(1 bit)和QPSK(2 bits) 调制,调制后为一个复值符号;PUCCH 1也支持PUCCH-GroupHopping配置。

ad589cb8b607444bac78073c0bee31fd.png

PUCCH 1 正交序列关系图如下

661b3827a8624b9bada0c212c035337b.png

以最后一行PUCCH 有14个符号为例,no intra-slot hopping 时 PUCCH 占用的符号数是7 那其余的7个就是PUCCH DMRS,根据PUCCH DMRS资源映射的公式,可以看出DMRS 占用偶数符号  

当 enable 时隙内跳频时,第一跳有3个PUCCH 符号及4个PUCCH DMRS 符号,第二跳有4个PUCCH 符号和3个PUCCH DMRS 符号也很好理解。

下面就看下PUCCH 1 DMRS。

32e362cb5e174555ba470c977985e9b9.png

intraSlotFrequencyHopping  不配置时 默认disable.

3821d9e0d2e0443d9e670c30bf6cf162.png

PUCCH 1有进行BPSK/QPSK,所以需要解调参考信号DM-RS,通过上面的映射关系可以看到PUCCH 1 DM-RS 最终会映射在偶数符号位置,从符号0开始,结束位置和配置的PUCCH 1符号个数相关。

0a6c0336e43c43eb8dfb75396cb7c774.png

PUCCH 1资源映射时,不能使用DM-RS 的资源。当进行的是interlaced 传输时,对于每一个interlace RB要进行相同的资源映射过程。

举两个例子说明下PUCCH1 和DMRS的具体分布情况。

PUCCH 1 不跳频 进行14个symbol传输时,PUCCH 1 开始符号索引为0 。14 symbol 不跳频时,PUCCH 和DMRS 的分布如下。

f4100fd1cd614d66b2778ae23b2c4eb0.png

7 symbol PUCCH 1跳频时,根据各自表格中的情况 可以确定PUCCH 1 DMRS 各占几个符号:第一跳PUCCH 1 占1个符号,DMRS占2个符号;第二跳 PUCCH 1占2个符号,DMRS 占2个符号,则PUCCH 和DMRS 的分布如下。

396caa721b774290ba67eabd464c653f.png

 SR的发送 38.213 9.2.4

b3f7977eedf848e0a6bbf21c96dab867.png

网络端可以通过配置SchedulingRequestResourceConfig/schedulingRequestID-BFR-SCell/schedulingRequestID-LBT-SCell去调度PUCCH format0/1发送SR,SR本身并不携带额外的信息,就是一个请求网络端调度资源的指示。

7d2acba3cb404777bff09e0ba5d49dc1.png

R16 在SchedulingRequestResourceConfig 中增加了一个指明优先级的参数,phy-PriorityIndex:指示在物理层处理SR时的优先级,p0 代表lowpriority, p1代表high priority。没有配置时默认priority 0。

7a778dbaa4d644e58b32a7ac73aeefd9.png

periodicityAndOffset可以提供SR_periodicity 和SR_offset。如果SR_periodicity 大于1个时隙时,SR 的具体发送时刻由上面的蓝色公式决定;如果SR_periodicity =1个时隙,这时候SR_offset应该配置为0,则每个时隙都是SR 的发送时刻;如果SR_periodicity <1个时隙,SR 的发送时刻对应的符号l 由公式 (l-l0 mod SR_periodicity)mod SR_periodicity=0 决定,其中l0是PUCCH format中配置的startingSymbolIndex。

7fc5b67eaa1d4edabf6dcadcad1b386f.png

只有当UE有positive SR,即UE真的需要请求调度时才发送。当使用PUCCH 0发送SR时,M0 和发送HARQ-ACK一样,从高层配置参数获得 并且Mcs=0(M0和Mcs与计算循环移位相关)。当用PUCCH 1发送SR时,参照38.211 中的规定,但是b(0)要设置为0(b(0)对应的PUCCH 1 序列调制前的数据bit)。

目前只见过SchedulingRequestResourceConfig,例子如下.86f3f0364beb430484c920a3e194604b.png

 HARQ-ACK 和SR复用

20f5e30831a34af896ab58ef4d1e0550.pngaa352420ae9346eaab3ab6e1482cc385.png如果

在一个时隙内,UE的SR发送时刻和发送HARQ-ACK的时刻重叠了,UE可以在PUCCH 0上发送SR。

如果UE需要发送的为positive SR(请求SR),通过循环移位的方式指示HARQ-ACK信息和SR。如果UE 需要发送的为Positive SR ,通过循环移位的方式指示HARQ-ACK信息和SR  如上面的Table 9.2.5-1 和Table 9.2.5-2 中的Mcs设定情况。

3ea014e25bef4420b200aa24a0e329ac.png

HARQ-ACK和SR复用在PUCCH format 1,当在同一个时隙内,UE要使用PUCCH format 1发送Positive SR和最多2 bits HARQ-ACK应答时,UE使用SR对应的PUCCH 1资源发送HARQ-ACK;当在同一个时隙内,UE要使用PUCCH 1发送Negative SR和最多2 bits HARQ-ACK 应答时,UE使用HARQ-ACK 对应的PUCCH 1 资源发送HARQ-ACK 信息。


http://chatgpt.dhexx.cn/article/bWaJ9tX2.shtml

相关文章

NR PUSCH(三) 频域资源分配方式

微信公众号同步更新欢迎关注同名modem协议笔记 这篇看下频域资源分配&#xff0c;本篇内容主要在38.214 6.1.2.2 resource allocation in frequency domain章节中。 相比于R15&#xff0c;R16 频域资源分配有3种类型 Uplink resource allocation scheme type 0/1/2&#xff08…

NR PUSCH(四) Frequency hopping

微信公众号同步更新&#xff0c;欢迎关注同名modem协议笔记 上篇PUSCH 介绍了频域分配方式resource allocation type0/1/2&#xff0c;其中type 0 RBG位图的分配方式比较灵活&#xff0c;type 2对应的interlaced RB 本身就是一种频域的离散化&#xff0c;都可以实现类似的效果…

halcon中阈值分割算子用法

1.threshold(Image : Region : MinGray, MaxGray : )&#xff1a;通过给定的阈值区间对图像进行分割 效果图&#xff1a; read_image (Audi2, audi2) fill_interlace (Audi2, ImageFilled, odd) threshold (ImageFilled, Region, 0, 90) 2.binary_threshold(Image : Region : …

De-interlace 反交错 简介

<script type"text/javascript"> </script> <script type"text/javascript"> </script> 为了更好的理解新的逐行扫瞄的概念&#xff0c;必须先弄清楚电视传输的一些基本知识&#xff0c;一副图像是如何传输的&#xff0c;它与新的…

pygame加载png出现known incorrect sRGB,Interlace handling should be turned on when using png_read_image问题

使用pygame加载png出现libpng warning: iCCP: known incorrect sRGB profile和Interlace handling should be turned on when using png_read_image警告的问题 一、解决Interlace handling should be turned on when using png_read_image警告 最近使用Python实现强化学习走迷…

计算机视觉之旅(Day3)

对不起大家&#xff0c;opencv的坑我尽量在年底更完&#xff0c;C的坑已经基本更完了&#xff0c;在没有进一步深入学习C之前可能这个系列已经算完了。不多说&#xff0c;我看看机器视觉的基本内容吧。 &#xff08;一&#xff09;基本构成 传统的机器视觉系统是由待测目标、…

交错(拉丝)(Interlace) 与 反胶卷过带

第一部分——交错&#xff08;拉丝&#xff09;&#xff08;Interlace&#xff09;的产生 引用了相当多网友的分析与结论&#xff0c;恕我不能依次注明。分析主要来自“[SilkyBible] 视频知识系列”&#xff0c;就主要概念的主要影响因素进行了一点分析。如果有错误&#xff0c…

二分法之最大子段和

1.问题描述&#xff1a;给定一个数组&#xff0c;找出其中可以构成最大数的子段&#xff0c;子段和是由连续的子段构成的&#xff1b;给定有n个整数(可能为负整数)组成的序列a1,a2,...,an,求该序列连续的子段和的最大值。 2.设计思路&#xff1a;对于一个连续的子段和&#xf…

java动态规划求最大子段和_动态规划-最大子段和

2018-01-14 21:14:58 一、最大子段和问题 问题描述&#xff1a;给定n个整数(可能有负数)组成的序列a1&#xff0c;a2&#xff0c;...&#xff0c;an&#xff0c;求该序列的最大子段和。如果所有整数都是负数&#xff0c;那么定义其最大子段和为0。 方法一、最大子段和的简单算法…

四种方法求解最大子段和问题

题目描述 给定一段长度为n的序列&#xff0c;我们需要找到其中一个连续的子段&#xff0c;使这个子段中各个元素加和最大&#xff0c;如果这个数组中全为负整数&#xff0c;我们就定义这个子段和为0. 题目分析 首先我们的目的是找一个局部的子段但加和是全局最大&#xff0c;…

最大子段和问题(分治法和动态规划)

什么是最大子段和&#xff0c;通俗点讲&#xff1a; 最大子段和就是给了一些数&#xff0c;然后你从中找了几个连续的数&#xff0c;这组连续的数的和比任意一组连续的数的和都大&#xff0c;那么你找的这几个连续的数的和就是这些数的最大子段和。 通俗的听不懂你就看这里&am…

最大子段求和

3种算法&#xff1a;最大子段求和 一、问题分析 问题&#xff1a;给定有n个整数(可能为负整数)组成的序列 a 1 , a 2 , . . . , a n , a_1,a_2,...,a_n, a1​,a2​,...,an​,求该序列连续的子段和的最大值。 如果该子段的所有元素和是负整数时定义其最大子段和为0。 简易算法…

最大子段和问题(3种方法)

给定由n个整数(可能为负整数)组成的序列a1&#xff0c;a2&#xff0c; a3… &#xff0c; an&#xff0c; 寻找它的某个连续子段&#xff0c;使得其和最大。例如( -2,11,-4,13,-5,-2 )最大子段是{ 11,-4,13 }其和为20。 1、最大字段和问题的简单算法 (1)枚举法求解&#xff1…

最大子段和(动态规划算法)

最大子段和&#xff08;动态规划算法&#xff09; 文章目录 最大子段和&#xff08;动态规划算法&#xff09;一、思路二、伪代码三、C代码四、输入实例 一、思路 D[i]表示从i开始的最大字段和。&#xff08;但我们不是从前往后找字段结束位置&#xff09; 根据递推公式&#x…

最大子段和——用蛮力算法,分治策略,动态规划算法三种求法(C语言)

目录 一、题目 二、算法求解 1、蛮力算法 伪代码 算法分析 程序 2、分治策略 伪代码 算法分析 程序 3、动态规划算法 伪代码 算法分析 程序 一、题目 设A<a1,a2,...,an>是n个整数的序列&#xff0c;称<ai,....,aj>为该序列的连续子序列&#xff0c;其…

归并排序 java实现_java实现归并排序

归并排序 归并排序&#xff0c;指的是将两个已经排序的序列合并成一个序列的操作。 归并操作的过程如下&#xff1a; 申请空间&#xff0c;使其大小为两个已经排序序列之和&#xff0c;该空间用来存放合并后的序列 设定两个指针&#xff0c;最初位置分别为两个已经排序序列的起…

Java八大算法:归并排序

一、什么是归并排序&#xff1f; 1.概念 归并排序&#xff08;Merge sort&#xff09;是建立在归并操作上的一种有效的排序算法&#xff0c;归并排序对序列的元素进行逐层折半分组&#xff0c;然后从最小分组开始比较排序&#xff0c;合并成一个大的分组&#xff0c;逐层进行…

归并排序(Java代码实现)

基本思想&#xff1a; 将两个或两个以上的有序表合并成一个有序表的过程。常用的归并为2-路归并&#xff0c;就是将两个有序表合为一个有序表。 过程&#xff1a; 先来看一张示意图&#xff1a; 可以看出&#xff0c;归并排序分为分解和合并两个步骤。 分解就是将原数组分解…

归并排序(Java实现)

归并排序&#xff08;Merge Sort&#xff09;是建立在归并操作上的一种有效&#xff0c;稳定的排序算法&#xff0c;该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先…

归并排序java详解

import java.util.Arrays;public class Mergesort {public static void main(String[] args) {int arr[]{8,4,5,7,1,3,6,2};int temp[]new int[arr.length];//归并排序需要一个额外空间mergeSort(arr,0,arr.length-1,temp);System.out.println("归并排序后" Arrays.t…