NR HARQ(二) CBG HARQ-ACK codebook

news2024/11/26 20:26:11

这篇开始看下HARQ-ACK codebook的相关内容,先看CBG-based HARQ-ACK codebook。那第一个关注点就是CBG 的划分规则,这部分内容主要在38.213 9.1.1章节中,PDSCH和PUSCH 的CBG 划分规则基本是一样的,这里以PDSCH为例介绍。

2f3ad8273d2446ebbbb54939f7542354.png

PDSCH 和PUSCH 都有 maxCodeBlockGroupPerTransportBlock;maxCodeBlockGroupPerTransportBlock:每个TB块最多分为n个码块组;当下行为2个TB块时,最大只能配置为n4,因为DCI中CBGTI位图只有8bits。

e3bd0cfe1c5649f992895b107003dc11.png
CBG划分首先要确定两个参数,一个是N由 RRC 层参数maxCodeBlockGroupsPerTransportBlock提供,C 是按照38.212中Code block segmentation and code block CRC attachment 规则进行CB分割时确定的参数,具体过程可以看下NR PDSCH(五) PDSCH 信道编码与调制流程,这里简单说下,NR中,PDSCH和PUSCH信道均采用LDPC编码,LDPC有最大码块长度和限定: LDPC base graph 1   Kcb =8448;LDPC base graph 2   Kcb =3840;当TB块(含CRC)超过码块最大长度限定后,TB块被切分为C个码块发送;当RRC配置参数codeBlockGroup Transmission时,C个码块按照多个码块组进行发送和应答。

 2f9131cf88dd4d7abcb7001797e1ac67.png

然后由M=min(N,C)确定要划分的CBGs 的数量,具体的划分规则,通过3个例子,看下应该就比较清晰了,如下。
(1) N=8,C=5  M=min(8,5)=5 即要分5组。
M1=mod(5,5)=0,  k1=5/5 向上取整,k2=5/5 向下取整=1
M1=0  m=M1,M1+1, ....,M-1= 0,1,2,3,4
CB index =M1*K1+(m-M1)*k2+k     k=0,1...., k2-1   =0
CBG 0 m=0   0*K1+(0-0)*1+0=0
CBG 1 m=1   0*K1+(1-0)*1+0=1
CBG 2 m=2   0*K1+(2-0)*1+0=2
CBG 3 m=3   0*K1+(3-0)*1+0=3
CBG 4 m=4   0*K1+(4-0)*1+0=4

b9e3b5417afd4b75b23c4b5600c1b0c9.png

(2) N=8,C=9  M=min(8,9)=8 即要分8组。
M1=mod(9,8)=1,  k1=9/8 向上取整=2,k2=9/8 向下取整=1
M1=1>0  
CBG m ,m=0,1,....,M1-1=0
CBG 0 m*k1+k     k=0,  k1-1=0,1  则 code block index =0,1
其他CBG  m的情况, m=M1,M1+1,.....M-1 =1,2,3,4,5,6,7
CB index =M1*K1+(m-M1)*k2+k     k=0,1...., k2-1   =0
CBG 1 m=1   1*2+(1-1)*1+0=2
CBG 2 m=2   1*2+(2-1)*1+0=3
CBG 3 m=3   1*2+(3-1)*1+0=4
.....
CBG 7 m=7   1*2+(7-1)*1+0=8

3cb1c777662b4b2a9e340b3ea3c13ffa.png

(3) N=8,C=50  M=min(8,50)=8 即要分8组。
M1=mod(50,8)=2,  k1=50/8 向上取整=7,k2=50/8 向下取整=6
M1=2>0  
CBG m ,m=0,1,....,M1-1=0,1 即只有CBG 0和CBG 1
m*k1+k     k=0, 1,... k1-1=0,1,2,3,4,5,6
CBG 0 m*k1+k =k  则 code block index =0~6
CBG 1 m*k1+k =1*7+k  则 code block index =7~13

其他CBG  m的情况, m=M1,M1+1,.....M-1 =2~7
CB index =M1*K1+(m-M1)*k2+k     k=0,1...., k2-1 =0~5
CBG 2 m=2   2*7+(2-2)*6+k= 14~19
CBG 3 m=3   3*7+(3-2)*6+k=20~25
CBG 4 26~31
CBG 5 32~37
CBG 6 38~43
CBG 7 44~49

1530034b5fc4436f897006744c67b430.png
划分规则结束了,紧接着看下CBG传输的相关规定。

231927c71580451385671689d23ec17c.png

UE没有配置PDSCH-CodeBlockGroupTransmission时,UE 要针对每个TB 生成1个HARQ-ACK info;有配置PDSCH-CodeBlockGroupTransmission时,UE 会通过DCI 1_1 接收到包含CBGs的TB;RRC层通过maxCodeBlockGroupsPerTransportBlock指示每个TB支持的CBG 数量,然后UE需要针对每个TB中对应的CBG 生成各自的HARQ-ACK info bits。先看PUSCH部分相关内容。

UE procedure for transmitting code block group based transmissions

7a675772018841ac85d0fe7d4f5d2313.png

PUSCH CBG 相关的DCI 0_1 field CBGTI,在配置CBG传输时,其bit大小由maxCodeBlockGroupsPerTransportBlock决定,其可配置层2/4/6/8,即DCI 0_1 CBGTI分别对应2/4/6/8 bits,从最高位之最低位分别代表CBG0/1/2/....
初次传输时, CBGTI =1的CBG代表要进行传输的CBG,之后UE要按照指示在对应TB中包含对应的CBGs data 传输出去;如果是TB 重传,UE只需要将CBGTI =1的CBGs传输出去。再看PDSCH部分。
UE procedure for receiving code block group based transmissions

223ebd59625d4f9382bdb6077102211f.png

对于PDSCH 接收,DCI 1_1 的CBGTI field的大小为N_TB*N,其中N_TB为RRC 层参数maxNrofCodeWordsScheduledByDCI,代表一个DCI 可能带的TB 个数,1个或2个;N根据maxCodeBlockGroupsPerTransportBlock 确定,即DCI 1_1 CBGTI分别对应2/4/6/8 bits,从最高位之最低位分别代表CBG0/1/2/....
初次传输时, TB 中的CBG应该都要送下来给UE;如果是TB 重传,CBGTI=0代表相关的CBG没有传送下来,CBGTI=1代表有对应的CBGs;在RRC层参数有配置codeBlockGroupFlushIndicator =true时,DCI 1_1中会带CBG flushing out information(CBGFI),CBGFI=0代表前面收到的CBGs可能是损坏的,需要清缓存,重新接收;CBGFI=1代表现在这次传输的CBGs是与前面收到的CBGs可以进行软合并;重传的CBG 要和初传时对应相同的CBs。

9999588d6f53475b98503eb59951ce38.png

对于DCI 1_1 中的CBGTI/CBGFI,当RRC 层有配置 priorityIndicatorDCI-1-1时,如果CBGTI和CBGFI的bit width与其他HARQ-ACK codebook不一样时,要对短的CBGTI/CBGTI 进行补0处理,以便使得所有的CBGTI/CBGFI的 HARQ-ACK codebook 相同,如下图两个CBGTI 长度不一样,要对短的补零,使得之后HARQ-ACK codebook bit width 保持一致。

1f5266637087467bb46b23cf029c224a.png

f8b7edca5b364e3e820cb56c4f3ee80d.png

在进行CBG划分后,生成HARQ-ACK codebook包含的HARQ-ACK info bits N 可能会小于maxCodeBlockGroupsPerTransportBlock规定的max数量,此时,要对max-N的剩余bits 生成NACK包含在反馈的HARQ-ACK codebook。
UE要对重传的TB 生成HARQ-ACK codebook时,前一个TB 正确接收的CBGs 直接生成ACK,再对重传中对应其余CBG生成HARQ-ACK。UE没有正确收到整个TB,只收到了N 个CBGs,那UE 直接将这些CBGs反馈NACK。 

单TB传输,实际传输的CBGs =5小于maxCodeBlockGroupsPerTransportBlock=8,这时候反馈HARQ-ACK时,未传输的CBGs 要做NACK处理。

aa1967bb7a4c4666aa4206f80230a965.png

6505d59fec5a47ffb51c5a3ef62a74bf.png

在配置CBG 传输时,当CBG中所有的 code blocks 都成功收到时,针对CBG生成对应的HARQ-ACK info bit;只要CBG中有1个code block 没有正确接收就要生成NACK。如果UE 同一时间收到2个TBs,UE就将2个TB的CBG HARQ-ACK info 按照先第一个TB 后第二个TB 的顺序排放。 
传输2个TB,maxCodeBlockGroupsPerTransportBlock=4,两个TB 的HARQ-ACK codebook下。

 071fa2eba53f41568856760fae0dc2a1.png

下行HARQ-ACK时序示意图
PDCCH 调度PDSCH ,下行HARQ-ACK 时序示意图

8c85ea29745e40a0a5fd7728974e5c9f.png

调度DCI在时隙n,则PDSCH 接收时隙在n+K0,接收PDSCH 在时隙n,则发送HARQ-ack 的PUCCH在时隙n+K1
K1相关内容在NR PUCCH (三)PUCCH resource 的配置与调用 有介绍;K0相关内容在NR PDSCH (一)时域资源有介绍,不再赘述。

a85168919448471aa4a594f8f2f12791.png

还有一个因素和下行HARQ-ACK时序相关,即UE对PDSCH的处理时延
发送HARQ-ACK的PUCCH的第一个上行符号不能早于上行符号L1位置,L1 定义为T_proc,1=(N1+d1,1+d2)(2048+144)*k*(2的-u次方)*Tc+Text 后上行符号。其中确定UE PDSCH处理时延的参数包括UE的处理capability能力capability 1 和capability 2, PDSCH DM-RS position ,PDSCH mapping Type A/B 类型,子载波间隔及38.211 38.133中的内容,具体可以看38214 5.3节UE PDSCH processing procedure time。PUSCH也有类似的发送准备时延,具体在38.214 6.4 UE PUSCH preparation procedure time,这里不细说了。

通过上面的内容也可以看出只有DCI0_1和DCI 1_1支持CBG传输,在配置CBG时,对于其他DCI,也只能进行基于TB 的传输,这点后面也会用到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90126.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis-Plus之通用枚举

系列文章目录 Mybatis-PlusSpringBoot结合运用_心态还需努力呀的博客-CSDN博客MyBaits-Plus中TableField和TableId用法_心态还需努力呀的博客-CSDN博客 MyBatis-Plus分页查询(快速上手运用)_心态还需努力呀的博客-CSDN博客_mybatis plus分页查询 MyBa…

CyclicBarrier 多线程处理数据

文章目录前言需求环境准备单线程处理多线程处理总结前言 开发中,我们经常会遇到处理批量数据,最后把处理成功和失败的数据结果记录下来。普通方法一个循环就可以搞定这个需求,但是面临大量数据单个线程去处理可能面临很大的瓶颈,…

怎么进行视频配音?建议收藏这些配音方法

最近我的朋友向我求助,他想要自己制作一个视频,但是视频里面有些片段需要配音,可是他又不想用自己的声音来配音。一方面担心容易NG,需要录制很多遍,会浪费较多的时间;另一方面是,如果视频录制和…

​单张图像三维人脸重建必备入门face3d—3DMM

作者:小灰灰 来源:投稿 编辑:学姐 本次的例子是将pipeline生成的图片作用于3DMM,重新拟合成新的图片。 load model 3DMM的表达式: 𝑆̅ ∈ 𝑅3𝑛是平均人脸形状,&#x…

国产网关apisix安装

1、安装docker 参考:centos7安装docker_代码手艺人老羊的博客-CSDN博客 2、下载包(从github) # Download the Docker image of Apache APISIX git clone https://github.com/apache/apisix-docker.git 3、安装 # Switch the current di…

单点登录设计

01 单系统登录机制 1、http无状态协议 web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三…

JavaScript高级 |彻底搞懂原型对象

本文已收录于专栏⭐️ 《JavaScript》⭐️ 学习指南:对象的原型函数的原型new操作符将方法放原型里constructor总结梳理原型对象内存表现完结散花参考文献对象的原型 JavaScript 当中每个对象都有一个特殊的内置属性[[prototype ]] ,这个特殊的对象可以指向另外一个…

科技云报道:畅想无人化运维的AIOps,还有多远的路要走?

科技云报道原创。 在IT行业,运维人常常自我调侃“赚着5k的月薪,操着5千万的心,名下挂着5亿的资产”。 机房的暖通、网络、综合布线,系统的监控告警、故障响应等一大堆繁杂琐碎的工作,充斥着运维人的日常。 与开发和产…

自定义Feign的配置

SpringBoot虽然帮我们实现了自动装配,但是也是支持自定义配置的。 Feign运行自定义配置来覆盖默认配置,可以修改的默认配置如下: 配置Feign日志有两种方式 方式一:配置文件方式 1)全局生效 feign:client:config:defa…

【愚公系列】2022年12月 Elasticsearch数据库-ELK添加SQL插件和浏览器插件(二)

文章目录前言一、ELK添加SQL插件和浏览器插件1.配置插件2.浏览器插件3.Elasticsearch术语介绍4.测试SQL插件和浏览器插件前言 下载SQL插件地址:https://github.com/NLPchina/elasticsearch-sql 我们选择7.15.2版本,ES页选择7.15.2版本把最后面的下载链…

车间调度|基于遗传算法的柔性车间调度(Matlab代码实现)

目录 1 概述 2 遗传优化算法 3 车间调度 4 运行结果 5 参考文献 6 Matlab代码实现 1 概述 调度通过合理安排生产资源,以缩短生产时间和提高资源利用率为目的,在生产系统中扮演着重要的角色。作业车间调度问题(Job-shop Schedu-ling Problem,JSP)是一类经典…

1996-2020年全国31省农村电力和农田水利建设相关数据

1996-2020年全国31省农村电力和农田水利建设相关数据 1、1996-2020年 2、范围:31省 3、指标包括: 乡村办水电站、装机容量、发电量、农村用电量、有效灌溉面积、旱涝保收面积、机电排灌面积、实际耕地灌溉面积、新增耕地灌溉面积、节水灌溉面积、新增…

2023年第六届先进控制,自动化与机器人国际会议(ICACAR 2023)

2023年第五届先进控制,自动化与机器人国际会议(ICACAR 2023) 重要信息 会议网址:www.icacar.org 会议时间:2023年4月14-16日 召开地点:中国北京 截稿时间:2023年2月28日 录用通知&#xf…

排序子序列

1 题目来源: 牛客网:排序子序列 2 题目描述  牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分…

Ashampoo Burning Studio创建可启动磁盘

Ashampoo Burning Studio创建可启动磁盘 Ashampoo的产品通常适合质量,但在其中,它是世界上最好的软件之一,名为Ashampoo Burning Studio。与著名的Nero程序相比,该软件几乎一无是处,所有用于制作、写入和复制光盘的软件…

Python Tutorial——模块

如果你从Python解释器中退出,并且再次进入,你会发现你以前定义的函数和变量都已经丢失了。所以,如果你想写一个在某种程度上更长的程序,使用一个文本编辑器来准备解释器的输入会使情况有所好转,并且使用文件代替输入来…

最简单的方式实现Zotero文件同步+坚果云在多台电脑设备之间

应用场景: 放假回家,只带了笔记本搞科研的好童靴,发现实验室台式机的zotero中的PDF没办法在笔记本上读取。于是探索了一下午如何不重新在网页上保存下载台式机中的PDF,轻松获取异地的文献。 方式一: 氪金付费zotero…

参数估计与假设检验

推断统计:研究如何利用样本数据来推断总体特征 描述统计:描述一组数据的特征 参数估计:利用样本信息估计总体特征 假设检验:利用样本信息判断对总体的假设是否成立 一.参数估计 就是对于总体指标的估计 估计:根据…

免费l2接口有多少种类型?

免费l2接口是一个预先定义的函数,它的目的是让开发人员和开发人员无需访问源代码,也无需访问源代码,也无需理解其内部工作。免费l2接口有多少种类型? 有四种类型的股票l2接口: RPC:通过处理(或任务)共享的数据缓冲区…

SpringBoot整合RabbitMQ实现死信队列

文章目录概念介绍什么是死信死信队列应用工程搭建环境说明搭建步骤实现死信准备Exchange&Queue监听死信队列方式一——消费者拒绝&否认方式二——超过消息TTL方式三——超过队列长度限制代码仓库前面一文通过 Java整合RabbitMQ实现生产消费(7种通讯方式&…