NR HARQ (四)Type-2 HARQ-ACK codebook

news2024/11/19 1:38:20

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

上篇提到type-1 HARQ-ACK codebook,即semi-static codebook,UE要为每个PDSCH候选位置生成反馈,也会包含实际没有下行传输的PDSCH,再加上配置CBG的场景,HARQ-ACK 码本中包含的无用信息会更多,开销确实很大。因而,Type-2 HARQ-ACK 码本即dynamic 码本就出现了,目前看实网中一般都用的dynamic 码本,还没有见过semi-static 码本,长话短说,下面就看下相关内容。

4448878f22604724bb168ff3d58d55f5.png

RRC层配置有参数 pdsch-HARQ-ACK-Codebook=dynamic或 pdsch-HARQ-ACK-Codebook-r16时就要采用type-2 HARQ-ACK codebook,即动态码本,目前看到log中采用的都是动态码本。如果DCI format没有带counter DAI时,UE不能用Type-2HARQ-ACK codebook 反馈HARQ-ACK info。

ca808e40a0b445b78f35d97cbe3325cb.png

UE收到下行DCI后,不管调度的是PDSCH reception或SPS PDSCH release或指示SCell dormancy,都要根据DCI field PDSCH-to-HARQ_feedback timing indicator 和K0去反馈HARQ-ACK信息。

c2f1d3aeca0e4a73b6c50fba1df7582e.png  

监听调度PDSCH reception/SPS PDSCH release/SCell dormancy DCI 的PDCCH 时机就是服务小区激活DL BWP中的一个PDCCH monitoring集合,集合中按照PDCCH monitoring occasion 开始时间按升序排列。PDCCHmonitoring occasion集合的基数就是了PDCCH monitoring occasion总数M。

82d6df6ac3414234938539d44b2ab6c7.png

DCI field DAI 中有一部分作为counter DAI 用于指示当前 PDSCH reception/SPS PDSCH release/SCell dormancy 场景已经调度的累积数量,也就是PDCCH出现的个数,即累积的对象是截至当前服务小区的当前PDCCH monitoring occasion的数量。

DAI的计数顺序是,如果UE支持type2-HARQ-ACK-Codebook即一个PDCCH monitoring occasion进行多次PDSCH调度,那首先将各个PDCCH monitoring occasion对应的PDSCH reception,按照PDSCH reception 开始时间升序排列;其次按照服务小区index升序排列,最后按照PDCCH monitoring occasion index 升序排列。如下图。

afe119cd4890492783ae1a7165e92852.png

 c340989412dd4967b779246bc35aa9e4.png 

对于R16 multi-DCI based multi-TRP的场景,有配置ackNackFeedbackMode=joint时,counter DAI要先根据相同服务小区的相同PDCCH monitoring occasion中的第一个 CORESET 进行计数,然后再根据第二个 CORESET计数。

7465844a9ab14a6fb0331f7ca5c07d09.png

total DAI表示服务小区和PDCCH monitoring occasion pair出现的总个数,即调度的PDCCH出现的个数,截至到当前PDCCH monitoring occasion,且会在每个PDCCH monitoring occasion进行更新。

对于R16 multi-DCI based multi-TRP的场景,有配置ackNackFeedbackMode=joint时,total DAI是根据{服务小区,PDCCH 监视时机}-对中的第一个 CORESET 和第二个 CORESET共同计数。

34e0b73dc8114edb919b9180c0c53aa0.png

N_DL_C-DAI 代表counter DAI 的bits数,T_D=2^N_DL_C-DAI。V_DL_C-DAI,c,m代表在服务小区c PDCCH monitoring occasion m中DCI 调度PDSCH 的数量即counter DAI的值

根据spec规定counter DAI 和total DAI 能用2bits表示,38.213 Table 9.1.3-1定义了DCI bit的取值和DAI 的对应关系。

R16中DCI 1_2中counter DAI也可以是1bit表示,因而38.213 Table 9.1.3-1A定义了DCI 1 bit的取值和DAI 的对应关系。

14d6ee40fb04497c83ed28b8795565a6.png

另外在PDCCH monitoring occasion m中所有DCI format 的total DAI所带的值是一样的。在HARQ-ACK codebook相关配置没有改变的情况下,网络侧在下发DCI 时所带的counter DAI 的bits大小应该保证是一样的。

e937108c93e74979ade6ab38b42d96bf.png 

例如上图PDCCH monitoring occasion 对应1~4,DCI DAI 对应counter DAI 和Total DAI,根据上面的描述total DAI会在每个 PDCCH monitoring occasion,每个PDCCH monitoring occasion的total DAI 的值也应该是一样的,counter DAI 用于统计已经出现的累积调度,如此UE就可以很好的掌握下行传输的基本情况,更好的做出HARQ-ACK。

type-2 HARQ-ACK codebook的生成也是一段伪代码。

0cb7256755f944928fb349b9e6c3f169.png 

UE根据DCI动态调度情况,要生成对应的HARQ-ACK info,对应的就是动态码本 其长度为O_ACK;伪代码中的m=0对应的是最早的那个PDCCH monitoring occasion,N_DL_cells对应的是服务小区的个数;j对应的是DAI 相关的参数,Vtemp和Vtemp2用于记录counter DAI和Total DAI变化的参数,0作为初始值;Vs用于记录ACK 的HARQ-ACK info。

1fb73906e54247fb93874057f705e71e.png

首先对特定的PDCCH monitoring occasion m开始进行遍历,c对应的服务小区,即代表针对特定的PDCCH monitoring occasion,还要对服务小区进行遍历,如果服务小区发生BWP切换,对应小区不做任何操作,UE直接跳到下一个服务小区。

afac7b8368b348efbd1f04760bd0db7b.png

如果遍历小区没有发生BWP切换且在PDCCH monitoring occasion n 收到PDCCH data;初始Vtemp=0,假如正常收到第一个DCI 其c-DAI=1,不可能满足第一个if,下一步Vtemp=1。下一个if 判断DCI是否有带T-DAI,如果没带Vtemp,2=c-DAI的值,有带T-DAI,则Vtemp,2=T-DAI的值。

那什么时候会满足V_DL_c-DAI,c,m<=Vtemp?正常情况下c-DAI 是2bits,即每4个值,为一轮,没有漏检时,永远不会满足V_DL_c-DAI,c,m<=Vtemp,所以漏检DCI时才可能满足第一个if;比如上一个DCI c-DAI=1,则Vtemp=1, 下一个DCI c-DAI 直接=1,说明没有收到c-DAI=2和3对应的DCI,这时候c-DAI<=Vtemp,j++,j对应漏检DCI的次数,j++一次,对应的c-DAI 4个值。

另外Vtemp 会先于Vtemp,2赋值,正常情况下Vtemp,2 是不可能小于Vtemp的,虽然有时候DCI 可能没有带T-DAI,这种情况下Vtemp,2 会赋值c-DAI的值,只能是Vtemp,2>=Vtemp, 所以如果Vtemp,2<Vtemp 则说明,有漏检DCI情况。

5e40706cdc1343bb8d69f4c88bb63d37.png

后面根据配置的场景生成对应的HARQ-ACK info,2TB传输没有带harq-ACK-SpatialBundlingPUCCH时,针对每TB生成1bit HARQ-ACK info,即对应2bits;2TB传输且带harq-ACK-SpatialBundlingPUCCH,将2TB 的HARQ-ACK进行位与操作最终生成1 bit HARQ-ACK info;其他情况,直接生成1bit HARQ-ACK info。 这里假设j=0的话,即UE一直没有漏检DCI,有序接收DCI,即这里的Vs记录的就是正常接收的TB HARQ-ACK bit 对信息。

之后继续特定PDCCH monitoring occasion 对服务小区进行遍历,小区遍历完成则换下一个PDCCH monitoring occasion 继续对服务小区进行遍历。

8827921a64554151a2c47507645951b8.png

Vtemp,2<Vtemp 说明,有漏检DCI情况,j++;如果2TB传输没有带harq-ACK-SpatialBundlingPUCCH,O_ACK=2(4*j+Vtemp,2);否则O_ACK=4*j+Vtemp,2;最后从O_ACK中去掉Vs就是要放开NACK的bit位。

上面的内容是按照counter DAI 对应2bits的情况看的,R16中DCI 1_2 中counter DAI 可能会对应1bit,因而 动态码本生成的过程还涉及以下内容。

1df9a2b806624b9784c48eb8ff350281.png

 

5d729797dea94c8a84fb00e76ebca532.png 

对于和SPS PDSCH reception复用的场景,UE生成SPS PDSCH reception 的bits后 将其级联在O_ACK末尾发送。

81e7f2c3351c437e8004b567b238f8a0.png

举个例子,假如网络侧共发送8个DCI ,maxNrofCodeWordsScheduledByDCI=2,UEmiss了DCI(3,3),则j=1,Vtemp,2=4,O_ACK=2(4*1+4)=16 bit,反馈的HARQ-ACK如上图。

82ab31cd3f16453a83ebde0e2f44acaf.png

maxNrofCodeWordsScheduledByDCI=2但是UE只有到1个TB,这时候如果有配置 harq-ACK-SpatialBundlingPUCCH,UE对第二个TB生成ack,否则生成NACK。

Type-2 HARQ-ACK codebook for CBG

在配置CBG传输时,动态码本的生成和上面的内容会有点不一样,总结着说,如果有任意一个服务小区被配置使用基于CBG的数据传输,则生成两个子码本:第一子码本为TB子码本,针对指示SPS PDSCH释放的PDCCH以及基于TB的PDSCH传输进行TB级的反馈;第二子码本为CBG子码本,针对基于CBG的PDSCH传输进行CBG级的反馈。将两个子码本按照TB子码本和CBG子码本顺序级联在一起构成最终的HARQ-ACK码本。如果多个服务小区都被配置使用基于CBG的传输且配置的CBG个数不同,则基于最大的CBG个数产生CBG子码本。配置CBG的情况的动态码本=TB 子码本+CBG 子码本,上报时TB 在前,CBG在后,两者级联在一起。下面看下spec上的描述。

b13215d764794142840ed747b5241c0b.png

根据CBG的配置情况,将小区分成两部分:配置CBG传输的小区记为N_DL,CBG_cells,没有配置CBG传输的小区(按TB发送的小区), 记为N_DL,TB_cells。 N_DL,CBG_cells+N_DL,TB_cells=N_DL_cells

生成码本的方式和前面的描述是一样的,但是有些点要注意。

0c49f5dd740f417b8ae20e98807b5f22.png

生成TB based sub-codebook时要用N_DL_cells而不是N_DL,TB_cells,例如SPS PDSCH release/SPS PDSCH reception DCI 1_1指示的SCell dormancy和虽然配置了CBG传输但是实际中仍然进行的TB传输,例如DCI 1_0,虽然配置了CBG,但是只能进行基于TB的传输,这点也是在计算TB 子码本时要用N_DL_cells原因;对于CBG子码本,要用N_DL,CBG_cells进行计算。

385dc3b5e62b4a3db5c5bb30eabae750.png

如果多个服务小区都被配置使用基于CBG的传输且配置的CBG个数不同,则基于最大的CBG个数产生CBG子码本,最大bit数由N_CBG/TB,max_HARQ-ACK,c ×N_DL_TB,c。如果某个CBG传输小区的N_CBG/TB_HARQ-ACK,c ×N_DL_TB,c小于最大值,后面不足的位用NACK补足。

这里生成子码本时,harq-ACK-SpatialBundlingPUCCH 不起作用;且两个子码本的counter DAI和Total DAI独立工作,最后上报时TB子码本在前,CBG子码本在后,两者级联在一起。对于multi-DCI based multi-TRP的场景,生成码本时要分别针对两个CORESETs都统计一次。

055d949bc4c64cafb8c3933292be652d.png

举个例子 假如有3个CC,serving cell 0进行CBG传输,maxCodeBlockGroupsPerTransportBlock=2;serving cell 1进行TB传输,serving cell 3进行CBG传输,maxCodeBlockGroupsPerTransportBlock=4;所有CC的maxNrofCodeWordsScheduledByDCI=2;上图中5个绿色部分分别生成各2bit的TB HARQ-ACK info,组成TB sub codebook;由于最大的N_CBG/TB,max_HARQ-ACK,c=4,所以CBG传输部分要生成N_CBG/TB,max_HARQ-ACK,c ×N_DL_TB,c=2×4=8 bit的码本,共3个CBG TB,共24 bits,其中橙色的CBG 由于maxCodeBlockGroupsPerTransportBlock=2,所以要用NACK 补上4bit;最后码本长度=TB subcodebook+CBG subcodebook=10+24 =34bits。

HARQ-ACK codebook 这部分还剩余3个章节,Type-2 HARQ-ACK codebook in physical uplink shared channel,Type-2 HARQ-ACK codebook grouping and HARQ-ACK retransmission和Type-3 HARQ-ACK codebook determination,这几个后面有时间再整理。

 

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

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

相关文章

【Linux 内核 内存管理】物理内存组织结构

一、 UMA和NUMA两种模型 共享存储型多处理机有两种模型 一致内存访问&#xff08;Uniform-Memory-Access&#xff0c;简称UMA&#xff09;模型 非一致内存访问&#xff08;Nonuniform-Memory-Access&#xff0c;简称NUMA&#xff09;模型 UMA模型 物理存储器被所有处理器件均…

超标量处理器设计——第八章_发射

超标量处理器设计——第八章_发射 参考《超标量处理器》姚永斌著 文章目录超标量处理器设计——第八章_发射8.1 简述8.1.1 集中式 VS. 分布式8.1.2 数据捕捉 VS. 非数据捕捉8.1.3 压缩 VS. 非压缩8.2 发射过程的流水线8.2.1 非数据捕捉结构的流水线8.2.2 数据捕捉结构的流水线8…

随手写系列——写一个凯撒密码转换页面

文章目录先展示效果H5编写C3编写JS编写——方法一&#xff1a;过程版JS编写——方法二&#xff1a;对象版代码获取先展示效果 &#xff08;因为主要是实现功能&#xff0c;所以CSS写的很粗糙&#xff09; H5编写 基础结构如下&#xff1a; 先构成最外面的大盒子.box&#…

【Flutter】之便于提高开发效率的周边库和轮子

GetX 状态管理 GetX包含很多功能&#xff0c;各种弹出widget、路由管理、国际化、Utils、状态管理等。 基于路由管理 1. 添加到项目中 1.1. 将此添加到pubspec.yaml文件中。 get: 4.1.4 1.2. 在命令行中运行 flutter packages get 1.3. 在MaterialApp前面加上 “Get”&…

centos7 yum安装postgreSQL

安装环境centos7.6 安装步骤&#xff1a; 1、安装postgresql&#xff1a; yum install postgresql-server 2、安装postgresql 扩展包&#xff1a; yum install postgresql-contrib 3、初始化&#xff1a; postgresql-setup initdb 4、启动开机自启动&#xff1a; systemc…

说话人识别神经网络推理方式

概述 说话人识别是一个序列总结&#xff08;Sequence Summarization&#xff09;任务&#xff0c;输入是音频&#xff08;或者说&#xff0c;声学特征的序列&#xff09;&#xff0c;输出是说话人的嵌入码&#xff0c;有的神经网络可以输入一对音频&#xff0c;直接输出这对音…

java微信支付v3系列——9.微信支付之商家转账API

这个功能就比较复杂了&#xff0c;首先是得有90天的资金流水才能开通&#xff0c;其次开通后还需要在官网进行配置&#xff0c;不能直接调用&#xff0c;并且限制了IP地址。 如下图所示&#xff0c;首先需要进行产品设置&#xff0c;将里面都设置好后才能进行开发&#xff0c;…

feign 调用常见问题避坑指南!

摘要&#xff1a;主要是总结了一下这段时间在使用 feign 的过程中的遇到的一些坑点。一、Get请求自动转化成POST的问题1、client 请求参数没有加上 RequestParam 注解问题代码&#xff1a;GetMapping("/showName") String showName(String name);错误提示&#xff1a…

让 APISpace 告诉你什么场景使用什么API

Q1&#xff1a;某商家打算搞年底促销活动&#xff0c;需要将活动信息通过短信的形式通知给用户&#xff0c;这个场景可以用什么接口&#xff1f; 发送通知类的短信&#xff0c;可以使用 通知短信 API~ 通知短信&#xff0c;支持三大运营商&#xff0c;虚拟运营商短信发送&…

第14章 并发控制与恢复

第14章 并发控制与恢复 考试范围&#xff1a; 14.1-14.3, 14.8-14.11 考试题型&#xff1a; 事务操作 考试内容&#xff1a; 1、锁/共享锁/排它锁的概念 2、多粒度锁 Multiple Granularity 3、两阶段封锁协议 The Two-Phase Locking Protocol 两段锁协议是指同一事务对任何…

2.前端笔记-JS-JS3种书写位置、注释、输入输出

书写位置 行内式嵌入式外部文件引入 1、行内式JS 可以将单行或少量的JS代码写在HTML标签的事件属性中&#xff08;以on开头的属性&#xff09;&#xff0c;如onclick单双引号使用&#xff1a;HTML中推荐双引号&#xff0c;JS中推荐单引号&#xff0c;如 <input type&quo…

vue实现将自己网站(h5链接)分享到微信中形成小卡片(超详细)

大家好&#xff0c;我是雄雄。 前言 我们在分享公众号信息到微信或者群中的时候&#xff0c;会出现一个小卡片&#xff0c;如下所示&#xff1a; 但是呢&#xff0c;这种小卡片只能走微信的接口来实现&#xff0c;比如我们从公众号、小程序中分享的内容可以是这样的。如果我们…

0基础转行,四个月,改变了我的人生!

转行对于很多人而言都是一个新的开始&#xff0c;但有的人是决定了立马去做&#xff0c;而有的人则是犹犹豫豫&#xff0c;我考虑考虑吧、还没有决定好、过段时间再说吧…… 就这样&#xff0c;相似情况的两个人&#xff0c;最后有了不同的结果。 很多人总是以我很忙、学历不高…

自学100天,零基础转行软件测试,我要以更好的姿态奔赴下一场山海!

三年大专一场空 专业是电子商务&#xff0c;18年毕业&#xff0c;当时在报考时时觉得电子商务挺高大上的&#xff0c;觉得电商肯定会有前途&#xff0c;以后毕业肯定好找工作&#xff0c;跟大多数人一样&#xff0c;我开始幻想我以后毕业以后的纸醉金迷的生活&#xff0c;我以…

模数转换器ADC

模数转换器ADC F28335内部的ADC模块是一个12位分辨率的、具有流水线结构的模数转换器,其结构框图如图11-1所示。从图11-1可以看到,F28335的ADC模块一共具有16个采样通道,分成了两组,一组为ADCINAO~ ADCINA7,另一组为ADCINBO~ADCINB7。A组的通道使用采样保持器A,也就是图…

【SCI论文解读复现NO.1】基于Transformer-YOLOv5的侧扫声纳图像水下海洋目标实时检测

前言 此前出了目标改进算法专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读最新目标检测算法论文&#xff0…

【小学信息技术教资面试】《制作通讯录》教案

1.题目&#xff1a;制作通讯录 2.内容&#xff1a; 3.基本要求&#xff1a; &#xff08;1&#xff09;使用任务驱动法进行教学。 &#xff08;2&#xff09;掌握表格的插入和信息的填写。 &#xff08;3&#xff09;试讲时间是10分钟。 《制作通讯录》教案 一、教学目标&am…

我国核桃种植深加工行业供给较为充足 未来大健康消费时代将带来广阔市场

根据观研报告网发布的《2022年中国核桃种植深加工行业分析报告-行业竞争策略与发展动向研究》显示&#xff0c;核桃加工分为初加工与深加工。其中核桃深加工包括核桃油的压榨、核桃蛋白粉的制备、以核桃仁为原料生产休闲食品、以核桃青皮、壳等为原料生产加工日化产品等&#x…

Java agent 使用

一、前言 于一个即将上线的应用来说&#xff0c;系统监控是必不可少的&#xff0c;为什么需要监控呢&#xff1f;应用是跑在服务器上的&#xff0c;应用在运行过程中会发生各自意想不到的问题&#xff0c;像大家熟知的OOM&#xff0c;mysql故障&#xff0c;服务器宕机&#xff…

SpringBoot+Vue实现前后端分离的教务评教系统

文末获取源码 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&#xff1a;JavaScript、Vue.js 、css3 开发工具&#xff1a;IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库&#xff1a;MySQL 5.7/8.0 数据库管理工具&#xff1a;phpstudy/Navicat JD…