HARQ发展_harq技术

HARQ发展_harq技术自动重发请求含义,以及混合自动重发请求(包括Type-I,和CC-HARQ,IR-HARQ)的编译码方式。包括在传统HARQ的基础上衍生出来的时分复用,码分复用,功率域复用的HARQ

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

HARQ(Hybrid Automatic repeat request)混合自动重发请求

先介绍几个要素:

  1. Forward error correction (FEC)前向纠错:通过增加冗余信息进行错误检测;
  2. Automatic repeat request (ARQ)自动重发请求:
    (1)与TCP行为的数据包兼容;
    (2) 利用循环冗余校验(cyclic redundancy check,CRC)进行错误检测
    (3)接收端通过检测,如果解码成功,则返回ACK(positive acknowledgement),如果解码失败,则返回NACK(negative acknowledgement)
  3. HARQ
    (1) FEC + ARQ
    (2) FEC: 纠正一部分错误
    (3) ARQ: 仍然进行错误检测

ARQ的编码特点:
ARQ
这里TX是发射端,RX是接收端,可以看得出来,从TX发送包S1,但RX解码失败,然后把接收到的包丢弃,反馈NACK给TX,接着TX继续发送包S1,第二次RX解码成功,然后反馈ACK给TX,TX接收到反馈后开始发送新的包S2.

HARQ的编码特点

  1. Type-I HARQ: 也即传统的HARQ,相对于ARQ而言,加入了前向纠错。由于ARQ只是单纯的检查错误,如果有错误,则直接丢弃,而Type-I HARQ 不仅检查错误,当检查出错误之后,没有直接丢弃,二十尝试纠正错误,如果无法纠正错误,则丢弃该包,反馈NACK给发送端,发送端收到NACK,则重新发送与之前一样的包;
  2. Type-II HARQ: 在接收端考虑内存,根据编译码不同还分为IR-HARQ和CC-HARQ
    编码特点:
    HARQ
    在这里,在RX中考虑内存,即绿色框框代表的部分,除此之外,在TX端发送的数据包也被分为了几部分,如S1(1),S1(2),这个的不同具体和是IR还是CC有关。

IR-CC
追加合并HARQ(chase combining, CC): 发射端发送数据包S1,接收端接收到数据包,先对其检错(CRC),如果有错,然后尝试纠错(FEC),若还是不能成功解码,则将该包缓存,反馈NACK给发射端,发射端接收到NACK,然后再重传相同的包,接收端收到新的包,然后与之前的包叠加合并进行解码,直到解码成功或者达到最大重传次数。
增量冗余HARQ(Incremental redundancy, IR): 首先将信息经过编码后按照一定的周期打孔(在该图,就可以看到S1编码后,打孔为S1(1)和S1(2)),根据码率兼容原则发送给接收端,发送端进行译码,译码错误,反馈NACK给发射端,发射端重传S1(2),这不是简单的对前面包的复制,而是还加入了冗余信息,每一次重传的冗余信息量都是不同的,接收端然后进行组合译码,将之前接收的所有比特组合形成更低码率的码字,从而获得更大的编码增益,达到递增冗余的目的。

总结:
在这里插入图片描述

关于HARQ设计的自由度

  1. 功率自适应(power adaptation)
    在这里插入图片描述
    发送端在每一轮中都改变子码字的功率,每次发射功率都是根据反馈信息而进行改变,但是每一次发送,子码字的长度都是相同的。
  2. 长度自适应(length adaptation)
    在这里插入图片描述
    发送端在每次传输都改变带宽,传输功率是常数,带宽每次根据额外的反馈进行改变。
  3. 速率适应(rate adaptation)
    (1)时域复用
    在这里插入图片描述
    (2)码域复用

Cross-packet coding HARQ(叉包HARQ)[1]

在这里插入图片描述
叉包HARQ,在第一次解码失败后,发送端发送的数据包是旧的数据包和新的数据包叠加形成的数据包,并且以速率R2发送这个叠加后的数据包,接收端收到数据包,联合之前接收的数据包一起解码。
在这里插入图片描述

Layer-coded HARQ(L-HARQ)[2]

XP-HARQ的实际实施

在这里插入图片描述
在这里插入图片描述
参考文献:
[1] M. Jabi, E. Pierre-Doray, L. Szczecinski, and M. Benjillali, ”How to Boost the Throughput of HARQ with Off-the- Shelf Codes,” IEEE Trans. Commun., vol. 65, no. 6, pp. 2319-2331, June 2017.
[2] R. Sassioui, M. Jabi, L. Szczecinski, L. B. Le, M. Benjillali, and B. Pelletier, ”HARQ and AMC: Friends or Foes ?,” IEEE Trans. Commun., vol. 65, no. 2, pp. 635-650, Feb. 2017
[3] Jabi, M., Benyouss, A., Le Treust, M., Pierre-Doray, E., & Szczecinski, L. (2017). Adaptive cross-packet HARQ. IEEE Transactions on Communications, 65(5), 2022-2035.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219282.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python open函数打开文件路径「建议收藏」

    Python open函数打开文件路径「建议收藏」要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符,标示符’r’表示读。 >>>f=open(‘D:/test.txt’,’r’) 注意了,对初学python的同学而言,open()函数着实存在一个不大不小的坑,而且十分不容易发现。错误演示:   >>>f=open(‘…

    2022年5月9日
    218
  • maven配置以及设置国内镜像

    maven配置以及设置国内镜像下载好maven时,将maven包放进D盘,创建maven文件夹,进行解压。然后进行配置右键“计算机”,选择“属性”,之后点击“高级系统设置”,点击“环境变量”,来设置环境变量,有以下系统变量需要配置:新建系统变量MAVEN_HOME变量值:D:\maven\apache-maven-3.5.4编辑系统变量Path添加变量值:;%MAVEN_HOM…

    2022年5月8日
    53
  • android浏览器开发小技巧集锦

    android浏览器开发小技巧集锦本人和朋友们做了一段时间浏览器,将一些小技巧分享出来,先写一部分,慢慢写,同时也为我们的浏览器打打广告我们的浏览器将要上线,名叫沙发浏览1.网页内的右键菜单publicbooleanonLongClick(Viewview){ //获取点击的元素 HitTestResultmResult=mWebView.getHitTestResult(); fin

    2022年5月15日
    34
  • 大篆汉字对照表_甲骨文汉字对照表大全_甲骨文数字象形字对照图

    几个汉字演变过程(从甲骨文到行书)甲骨文:出现于商代,刻写在龟甲骨上的文字,主要用于占卜,也用于记事。甲骨文被认为是“汉字”的第一种形式,它既是象形字又是表音字,至今汉字中仍有一些和图画一样的象形文字。金文:始于夏商,古代刻在青铜的钟鼎和石鼓上的文字,是商代书写使用的正体,与甲骨文并行使用,具有正体多繁,俗体趋简的特点。大篆:到了西周后期,汉字发展演变为大篆。大篆有两个特点:线条化和规范化,粗细不…

    2022年4月6日
    339
  • centos7.4安装docker_centos安装python3.6

    centos7.4安装docker_centos安装python3.6前言当我们在一台电脑上搭建了python3.6的环境,下次换台电脑,又得重新搭建一次,设置环境变量等操作。好不容易安装好,一会提示pip不是内部或外部命令,一会又提示pip:commandno

    2022年7月28日
    13
  • arduino概述_arduino serial

    arduino概述_arduino serial[实践笔记]ArduinoのSerial.println()主要内容Arduino与其他元器件常用串口通信,本文章在主要通过实践方式介绍Serial.println()的同时,牵扯到一些常用的串口操作函数,一下会带领想入门Arduino的同学层层深入,如有错误还请不吝赐教。正文Serial.available()>0Serial.available()的意思是:返回串口缓冲区中当前剩余的字符个数。一般用这个函数来判断串口的缓冲区有无数据,当Serial.available()>0

    2022年10月2日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号