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

article/2025/11/6 22:25:36

微信公众号同步更新欢迎关注同名modem协议笔记

这篇看下频域资源分配,本篇内容主要在38.214 6.1.2.2 resource allocation in frequency domain章节中。

483ab60493d04b00858b512a95c73d70.png

相比于R15,R16 频域资源分配有3种类型 Uplink resource allocation scheme type 0/1/2(增加了Uplink resource allocation type 2)。其中type0 用于tansform precoding disabled的场景,type 1/2没有限制,tansform precoding enable或disable都可以使用。Uplink resource allocation type 2 于RRC 层参数useInterlacePUCCH-PUSCH相关联,主要用于NR-U场景。

28fc672c79b548868c9b38938c7fd8a4.png

对于DCI 0_1/0_2,当pusch-Config 中的IE resourceAllocation配置为dynamicSwitch时,UE需要根据DCI field Frequency domain resource assignment确定是用Uplink resource allocation type 0还是1,DCI Frequency domain resource assignment最高bit用来表示分配类型:0 表示Type0 ,1 表示Type1,剩余bits表示具体资源;否则就根据resourceAllocation具体配置用对应的类型。

resourceAllocation只能配置为resourceAllocationType0, resourceAllocationType1, dynamicSwitch,而type 2有专用场景,当BWP-UplinkDedicated 中有配置useinterlacePUCCH-PUSCH时,就只能用 resourceAllocationType2。

bada5c9e6b6543ecb4f2b8aa1d92e5ae.png

对于DCI 0_0,没有配置useInterlacePUCCH-PUSCH参数时,就只能用resourceAllocationType1;有配置useInterlacePUCCH-PUSCH时 就用resourceAllocationType2。注意在配置useInterlacePUCCH-PUSCH时有要求,就是BWP-UplinkCommon和BWP-UplinkDedicated中要么都配置,要么都不配置该IE。

1c0aff29325c45198d44e52a60bc7657.png

DCI 中没有带bandwidth part indicator field或UE不支持基于DCI的BWP切换时,就在UE目前激活的BWP内确定频域RB资源;DCI中有带bandwidth part indicator field且UE支持基于DCI的BWP切换时,就在DCI指示的BWP内进行频域资源的确定。

下面看下Uplink resource allocation scheme type 0/1/2具体内容。PUSCH resource allocation type 0和1 基本和PDSCH部分内容一致,PUSCH resource allocation type 2是针对NR-U场景,新增的分配方式。

PUSCH resource allocation type 0

fd1dfb99791b49359281285eb0047f0d.png

在Type 0中,以RBG为粒度分配。RBG是一个连续的VRB集合,size大小由高层参数rbg-size配置和BWP带宽共同决定。rbg-size配置的话,只能是config2,不配置时,默认为config1;然后根据3GPP 38.214的Table 6.1.2.2.1-1确定分配方式,算出RBG大小及各个RBG包含的RB数。BWP以bitmap的方式表示分配哪些RBG给UE,每个RBG对应1位。Type0支持连续资源分配,也支持非连续资源分配。

抄个PDSCH的例子,BWP大小为48  RB,PUSCH配置为Configuration 1,查表可知RBG大小为4个RB,位图长度为48 / 4 = 12 ,则具体分配的RBG可用位图“100111100111”表示。如果RRC层resourceAllocation配置为dynamicSwitch,此时还要增加一个最高位bit用于区分是type 0还是type 1类型,后面的bit才用于资源的指示。

ca9f0e2c23374af3b77256c405d82cf2.png

PUSCH Resource Allocation Type 1

8186c22ed7f74adcbe26e37bcadb73ef.png

Type1 使用RIV(resource indication value)指示资源 ;以起始位置RB_start和RB数量Lrb表示分配的资源,类似于时域的SLIV。RIV值的最大长度和BWP带宽相关。举个例子,BWP大小为24 RB,RB_start = 10(第11个RB),Lrb = 11(长度为11 RB)。RB_start 从0 开始取值,则示图如下

dd79d48e55ee4c00b0cd67648e52ae42.png

Type 1只支持连续资源分配,Type0 既可以分配连续资源,也可以分配非连续资源,比Type 1灵活。另一方面,Type0 bitmap的分配方式和Type 1的RIV 相比,Type 1的编码更省资源,更有效率。

de47320f31e4429d84357338da015f4e.png

当出现DCI size不同的情况时,比如USS 中的DCI 0_0 是从CSS 中的DCI 0_0 中推算出来的,但是实际上目前激活的BWP 的DCI size和CSS 不一样,这时候就要对之前的RIV 过程进行一个同比例的缩放操作,缩放因子就是K。

c71515856952412f98b31b0ae0bcd6ce.png

对于DCI 0_2 的调度,先将resourceAllocationType1GranularityDCI-0-2 指定的参数作为P,按照type 0的方式先进行RBG 分组,然后再用Type 1的 RIV表示起始RBG index和分配的连续RBG的长度,分配资源。

PUSCH Resource Allocation Type 2

type 2与interlace RB 相关联,先看下之前 在PUCCH(二)中提到的interlace的相关内容,interlace RB内容在38.211 4.4.4.6。

d1ec8189b1bb4aac9e827543cc677cb2.png

m的取值范围0~M-1,其中M 是由u决定的,当u=0,即SCS =15khz时,M=10;u=1 即SCS=30khz时,M=5。

interlace m 对应的是一组RB 集合,以例子来说明,假设M=5 那m的 取值范围0~4,

interlace 0对应CRB( 0,5,10,15,....),

interlace 1对应CRB(1,6,11,16,....),

interlace 2 对应CRB(2,7,12,17,....)

interlace 3对应CRB(3,8,13,18,...),

interlace 4对应CRB(4,9,14,19,....)。

IRB 是在BWP内的interlace RB 的编号,IRB 在BWP内从0开始编号。因而通过interlace 的id就可以确定一个RB set,里面的RB是以CRB为基准,要根据激活BWP的情况,确定包含在BWP内的IRB ,这些处于BWP范围内的IRB才是分配给UE 的资源。

再来看下CRB 和IRB 的关系,通过IRB 的number 根据上面的公式就可以算出CRB的number,举个例子来说明。对于interlace 3  m=3 M=5  ,N_start_BWP=10 ,参数比较小,通过肉眼看就能确定,IRB 0 对应的是CRB 13,IRB 1对应的是CRB 18;下面通过计算来验证下 n_IRB=0 时,n_CRB=5*0+10+(-7mod5)=10+3=13,即IRB 0对应CRB13 ;n_IRB=1时,n_CRB=5*1+10+((-7)mod 5)=18,即IRB1 对应CRB18。

这里要注意的是负数的mod运算,负数mod运算清楚的话,其他的都不是问题。

-7 mod 5=(-5*2+3)mod 5=3 mod 5 =3

-50 mod 26 =(-26*2+2)mod 26=2 mod 26=2

a72acee828134221a68e0addbd023541.png

由上可知interlace index确定的就是一个RB sets,Type2 的资源分配就是 确定激活UL BWP内的哪些RB sets中的RB可以分配给UE,下面看下type 2。

f6d89632d23a4ceb95362d479da25737.png

type 2 由于SCS的不同(u的不同), Frequency domain resource assignment 需要的bits也不一样,当u=1 SCS=30khz时,需要5+Ybits 确定interlace allocation(5 MSBs)和RB set allocation(Y bits);当u=0 SCS=15khz时,需要6+Ybits 确定interlace allocation(6 MSBs)和RB set allocation(Y bits);Y的确定与激活UL BWP内的RB sets number有关系,确定公式如上。其中N_BWP_RB-set_UL 代表激活的UL BWP内的RB set 的个数。

12ad7296c5254e32aeceeab060bba6b3.png

对于u=0即scs=15khz时,根据RIV与M(M+1)/2的大小关系,可以确定interlace indices m0和l:当0<=RIV<M(M+1)/2时,由Frequency domain resource assignment 6 MSBs 提供的RIV 通过公式确定m0和l;RIV>=M(M+1)/2时,m0和l 由上面的表格确定,由此可以确定分配的interlace 索引,对应的是一系列的RB sets。

fca0cba8743e493eace842b4c7da1643.png

对于u=1,即SCS=30khz时,会有5bits 分别对应interlace index(u=1时,M=5;最高位~最低位分别对应interlace 0~4),当对应的bit 位为1时,代表对应的interlace RB set 可能要分配给UE;否则置0。 

上面的过程确定了一些可能分配给UE 的interlace indices,这些indices 分别对应一个RB sets,下面需要根据Y 确定 具体哪些RB sets要分配给UE 用。

ccb7dece0e70481ca74c1630bec88447.png

对于USS 的DCI 0_0 ,DCI 0_1和configured grant Type 1/2,Frequency domain resource assignment Y LSBs 代表一个RIV_RB-sets 值,通过RIV_RB-sets可以确定N_start_RB-set_UL(starting RB set index)及L_RB-set(连续RB sets的numbers) ,和最初的S+L原理一样。举个例子,u=0 SCS=15KHZ 此时M=10,对应interlace 0~9,通过Frequency domain resource assignment 6 MSBs 确定了用于资源分配的是interlace 0~6,下一步Frequency domain resource assignment Y LSBs 确定N_start_RB-set_UL =2,L_RB-set=3,则代表interlac 2 ~4对应的RB sets 分配给UE用;这里要注意 interlace indices 内的RB 是从CRB 开始定义的,所以还要根据激活BWP情况,确定包含在BWP内的IRB个数,这些IRB才是UE最终可以用的RB资源。 

 

 

 


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

相关文章

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…

java归并排序(含归并排序代码)

目录 一&#xff1a;归并排序的思想 二&#xff1a;归并排序代码 三&#xff1a;归并排序结果​ 一&#xff1a;归并排序的思想 归并排序&#xff08;Merge Sort&#xff09; 当我们要排序这样一个数组的时候&#xff0c;归并排序法首先将这个数组分成一半。如图&#xff1a…