什么是信道编码?信道编码比较

2023-11-06

        消除干扰,让无线信号更干净,这本是信道编码技术的初衷。然而,最近网络上这场“Polar码投票”闹剧,无中生有地添加杂质,与所议论的技术之本质背道而驰,若Polar码也有血肉之躯,此君情何以堪?香农前辈若在世,也会笑话我们吧?         

        2016年11月3GPP会议上,华为及其他55家公司(包括联想和摩托罗拉移动)基于广泛的性能评估和分析比较,联合提出Polar码作为控制信道的编码机制并获得通过,联想及其旗下摩托罗拉移动针对该方案的投票都是赞成票。如同Polar码的本质,消除杂质干扰,还一片明亮干净。我们今天就来聊一聊Turbo、LDPC、Polar等信道编码技术那些事,让我们在一段波澜壮阔的信道编码史中去找回技术的初心。

什么是信道编码?

        当我们拿起手机刷朋友圈时,数据通过无线信号在手机和基站间传送。由于无线信号是敏感而脆弱的,易受干扰、弱覆盖等影响,发送的数据和接收到的数据有时候会不一致,比如手机发送的1 0 0 1 0,而基站接收到的却是1 1 0 1 0,为了纠错,移动通信系统就引入了信道编码技术。

        在上个世纪40年代以前,人们认为只有通过增加发射功率和重传的方式,才能减少这种通信错误。直到1948年香农提出了伟大的香农定理,人们才认识到,可以通过信道编码的方式来实现可靠通信。

        所谓信道编码,也叫差错控制编码,就是在发送端对原数据添加冗余信息,这些冗余信息是和原数据相关的,再在接收端根据这种相关性来检测和纠正传输过程产生的差错,从而对抗传输过程的干扰。

        但是,香农前辈虽然指出了可以通过差错控制码实现可靠通信的理论参考,但却没有给出具体实现的方法。于是,人们开始研究编码方案,不断逼近香农极限。

信道编码简史

        人类在信道编码上的第一次突破发生在1949年。R.Hamming和M.Golay提出了第一个实用的差错控制编码方案——汉明码。

汉明码每4个比特编码就需要3个比特的冗余校验比特,编码效率比较低,且在一个码组中只能纠正单个的比特错误。

随后,M.Golay先生研究了汉明码的缺点,提出了Golay码。

Golay码在1979~1981年间被用于美国国家航空航天局太空探测器Voyager的差错控制系统,将成百张木星和土星的彩色照片带回地球。

Golay码之后是一种的新的分组码——RM码。在1969年到1977年之间,RM码广泛应用于火星探测,同时,其快速的译码算法非常适合于光纤通信系统。

RM码之后人们又提出了循环码的概念,也叫循环冗余校验(CRC)码。循环码也是分组码的一种,其码字具有循环移位特性,这种循环结构大大简化了编译码结构。

不过,以上编码方案都是基于分组码实现,分组码主要有两大缺点:一是在译码过程中必须等待整个码字全部接收到之后才能开始进行译码,二是需要精确的帧同步,从而导致时延较大、增益损失大。

直到卷积码的出现,改善了分组码的缺点。归功于卷积码,在接下来的10年里,无线通信性能得到了跳跃式的发展。

▲Elias于1955年提出卷积码

        卷积码与分组码的不同在于:它充分利用了各个信息块之间的相关性。在卷积码的译码过程中,不仅从本码中提取译码信息,还要充分利用以前和以后时刻收到的码组,从这些码组中提取译码相关信息,而且译码也是连续进行的,这样可以保证卷积码的译码延时相对比较小。

尽管卷积码让通信编码技术腾飞了10年,但终究还是遇到了瓶颈——“计算复杂性”问题。

还好,这个世界有一个神奇的摩尔定律。得益于摩尔定律,编码技术在一定程度上解决了计算复杂性和功耗问题。而随着摩尔定律而来的是,Viterbi于1967年提出的Viterbi译码算法。

Viterbi译码算法提出之后,卷积码在通信系统中得到了极为广泛的应用,如GSM、 IS-95 CDMA、3G、商业卫星通信系统等。

但是,随着通信技术的飞速发展,“计算复杂性”依然是一道迈不过的墙,专家们苦苦思索,试图在可接受的计算复杂性条件下设计编码和算法,以提高效率,但其增益与香农理论极限始终都存在2~3dB的差距。

正在专家们一筹莫展之时,奇迹出现了。

1993年,两位当时名不见经传的法国电机工程师C.Berrou和A.Glavieux声称他们发明了一种编码方法——Turbo码,可以使信道编码效率接近香农极限。

C.Berrou

一开始,大家都是持怀疑态度的,甚至懒得去理睬这两个小角色,这么多数学家都没能突破,你两个小小的机电工程师也敢宣称接近香农极限?忽悠吧?

但是,这两位法国工程师正是绕过数学理论,凭借其丰富的实际经验,通过迭代译码的办法解决了计算复杂性问题。 

▲Turbo码的译码器有两个分量码译码器,译码在两个分量译码器之间进行迭代译码,故整个译码过程类似涡轮(turbo)工作,所以又形象的称为Turbo码。

Turbo码的发明又一次开创了通信编码史的革命性时代。

随后,全世界各大公司开始聚焦于Turbo码研究。Turbo码也成为了3G/4G移动通信技术所采用的编码技术,直到今天4.5G,我们依然在采用。

但是,由于Turbo码采用迭代解码,必然会产生时延,所以对于实时性要求很高的场合,对于即将到来的超高速率、超低时延的5G需求,Turbo码又遇到瓶颈,因此,在5G时代就出现了Polar码和LDPC码之争。

5G:LDPC和Polar码闪亮登场

先来看看5G KPI

如上图,5G与4G至少有三大不同:

①4G面向单一的MBB场景,即手机的移动宽带业务;而5G面向eMBB、eMTC和URLLC三大场景,即5G面向万物互联,要应对AR、VR、车联网、工业4.0、智慧城市等各种应用,较之3/4G只有语音和数据业务,5G繁忙多了。

②4G的峰值速率为1Gbps,而5G的峰值速率高达20Gbps。

③4G的用户面时延为5ms,而5G的用户面时延要低至0.5ms(URLLC)。

经过这么一对比,问题就来了。5G的峰值速率是LTE的20倍,时延是LTE的1/10,这就意味着5G编码技术需在有限的时延内支持更快的处理速度,比如20Gbps就相当于译码器每秒钟要处理几十亿bit数据,即译码器数据吞吐率比4G高得多。

越高的译码器数据吞吐率就意味着硬件实现复杂度越高,处理功耗越大,而译码器是手机基带处理的重要组成部分,占据了近72%的基带处理硬件资源和功耗,因此,要实现5G应用落地,选择高效的信道编码技术非常重要。

3GPP必须对编码技术的选择反复讨论,严谨把关,绝非像一些文章中所透露的那般拉选票似的顺便。

同时,由于5G面向更多应用场景,对编码的灵活性要求更高,需支持更广泛的码块长度和更多的编码率。比如,短码块应用于物联网,长码块应用于高清视频,低编码率应用于基站分布稀疏的农村站点,高编码率应用于密集城区。如果大家都用同样的编码率,这就会造成数据比特浪费,进而浪费频谱资源。

于是乎,两大新的优秀的编码技术进入5G编码标准的法眼:LDPC和Polar码,都是逼近香农极限的信道编码。

LDPC码是由MIT的教授 Robert Gallager在1962年提出,这是最早提出的逼近香农极限的信道编码,不过,受限于当时环境,难以克服计算复杂性,随后被人遗忘。直到1996年才引起通信领域的关注。后来,LDPC码被WiFi标准采纳。

LDPC有啥优势呢?LDPC基于高效的并行译码构架实现,其译码器在硬件实现复杂度和功耗方面均优于Turbo码。

▲Turbo码和LDPC码功耗比较,来源5G Forum

Polar码是由土耳其比尔肯大学教授E. Arikan在2007年提出,2009年开始引起通信领域的关注。尽管Polar提出较晚,但作为已经被理论证明可达到香农极限的编码方案,自发明以来,业内已在译码算法、速率兼容编码方案和硬件实现上做了大量的研发工作。

Polar码有啥优势呢?Polar码兼具较低的编码和译码复杂度,不存在错误平层(error floor)现象,误帧率(FER)比Turbo低得多,Polar码还支持灵活的编码长度和编码速率,各方面证明比Turbo码具备更优的性能。

▲Turbo码和Polar码FER比较,来源5G Forum

因此,最后3GPP在5G时代抛弃了Turbo码,选择了LDPC为数据信道编码方案,Polar为广播和控制信道编码方案。

那么,为何3GPP同时选择了LDPC码和Polar码呢?这背后有“不把鸡蛋放在同一个篮子”的因素,也有“One code does not fit all”的因素。

首先,华为不会孤注一掷投入Polar码,高通也不会孤注一掷投入LDPC码,各家公司都会在不同的候选技术上投入,不会把鸡蛋放在同一个篮子里。其次,各种编码方案的优缺点不同,需对其硬件实现复杂度、功耗、灵活性、成熟度等进行综合考量,One code does not fit all,没有“一刀切”的处方。

让技术回归技术,少一点杂音,我们的5G才会走得更稳。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是信道编码?信道编码比较 的相关文章

  • 【element】之el-popconfirm:弹出组件确认按钮绑定

    element之el popconfirm 弹出组件确认按钮绑定 一 element官网说明 element中el popconfirm实例 element提供的接口 二 实际代码说明 无用代码 正确代码 一 element官网说明 ele
  • 通过bilibili_api获取bilibili弹幕+绘制词云的方法!

    由于自己学艺不精 后续词云的简略代码没怎么看懂 梳理了一遍把整个的学习内容记录下来 主要参考的为bilibili api的教程和词云的生成教程 https blog csdn net itanders article details 888
  • 华为b6手环能升级鸿蒙吗,华为手环B6全新发布:跨界形态再升级 强劲性能革新穿戴体验...

    2020年7月30日 北京 今日 华为正式推出了融合耳机和手环形态的跨界穿戴智能手环华为手环B6 它采用1 53英寸高清3D弧面柔性屏 外观时尚 操控自如 独创的分离式设计 让这款产品兼具蓝牙耳机的舒适佩戴和华为智能手环的专业运动健康功能
  • [Ubuntu] [Qt] Ubuntu18.04.6安装Qt后打不开

    1 安装完Qt5 15 2后点击图标没反应 2 通过指令打开Qt 可以看到失败的原因是因为glibc 2 28没找到 Qt Tools QtCreator bin qtcreator software Qt Tools QtCreator
  • labelimg 修正模型错误标注遇到的问题

    场景介绍 使用了 模型 如YOLOv5 v7 detec py 保存的 YOLO 格式的结果 包括测试的图像和对应的 txt 文件 模型跑出来的结果可能不够准确 需要手工修正下 因此我需要使用 labelimg 来可视化图像 并且修改其标注
  • Tomcat安装版和解压版

    在eclipse中开发web项目经常需要在eclipse中添加tomcat服务器 之前下载了目前最新版本tomcat9的zip版 由于目前的eclipse只支持到tomcat8 原本准备就这样安装了 在浏览器输入了n次http localh
  • redis持久化操作RDB和AOF详解与操作(docker)

    redis持久化 Redis 提供了两种不同的持久化方法来将数据存储到硬盘里面 一种方法叫快照 snapshotting RDB 它可以将存在于某一时刻的所有数据都写入硬盘里面 另一种方法叫只追加文件 append only file AO
  • SVR4/4.3BSD与Linux对待伪终端的不同方式

    打开伪终端意味着打开了一个 终端对 这个终端对的其中一个是主终端 另一个是从终端 简单说主终端和类似sshd telnetd等用户空间的远程协议处理进程连接 而从终端则和shell之类的实际进程连接 在处理远程登录的时候 一般都是由远程协议
  • uniapp uview2 使用笔记

    创建项目安装组件 npm install uview ui 配置 引入uView主JS库 在项目src目录中的main js中 引入并使用uView的JS库 注意这两行要放在import Vue之后 main js import uView
  • 毕业设计-基于深度学习的肺炎医学 CT 图像分类算法研究

    目录 前言 课题背景和意义 实现技术思路 一 数据集及数据预处理 二 卷积神经网络 CNN 网络技术 三 分类模型结构与方法 三 基于改进的 Inception ResNet 的分类网络 实现效果图样例 最后 前言 大四是整个大学期间最忙碌
  • 解析网页-selenium-非常实用-python爬虫知识点7

    selenium 一 引入 二 配置Selenium chromdriver 三 Selenium的基本操作 一 设置驱动 退出驱动 driver webdriver Chrome 路径 driver quit 二 网页打开 关闭等基本操作
  • Spring Boot中优雅的判断请求来源设备并跳转对应的页面-Site preference

    在Spring Boot中优雅的判断请求来源设备并跳转对应的页面 Device detection这篇文章中已经对Spring Mobile有过简单的介绍 这里介绍的是Spring Mobile的另一种类似的方法 Site preferen
  • 结合ChatGPT制作PPT

    今天看到圈友的一个AI分享 然后自己本身需要做一个分享的PPT 刚好那着帖子实战一下 先说下整体感受 优点 制作成本确实会比较低 很熟练的话大概就是1分钟一个都有可能 整体流程是先找个第三方PPT制作网站 看下支不支持文本转PPT功能 有这
  • ASP.NET导出Excel文件

    将页面显示的订单表导出Excel文件 步骤 定义导出Excel文件的方法 private void Export string FileType string FileName Response Charset GB2312 Respons
  • Mysql_常用函数

    Mysql 常用函数 Mysql 常用字符串函数 函数 功能 concat s1 s2 sn 连接s1 s2 sn为一个字符串 insert str x y instr 将字符串str从第x位置开始 y个字符长的字串替换为字符串instr
  • 分布式发展过程

    目录 1 分布式的演变过程 1 分布式的演变过程 框架的演变过程 友情链接 分布式的演变过程 友情链接 2 分布式架构的演进 初始阶段架构 初始阶段 的小型系统 应用程序 数据库 文件等所有的资源都在一台服务器上通俗称为LAMP 特征 应用
  • opencv基础-环境配置&官方文档&源码编译

    opencv环境配置 官方文档 源码编译 前言 一 官方下载网址 二 官方文档地址 三 安装教程 1 包下载 2 环境配置 1 为什么要配置环境 2 环境变量 3 系统环境 四 配置vs工程环境 vs2019 opencv4 6 0 1 v
  • Kubernetes学习笔记之Deployment篇(六)

    Deployment概念 Kubernetes Deployment是Kubernetes中的一个控制器对象 用于管理应用程序的部署 它管理和自动更新应用程序的ReplicaSets 并确保应用程序在任何时候都有一定数量的可用实例 Depl

随机推荐

  • IP3 三阶交调截取点测试(转帖)

    放大器 混频器和振荡器的通用规范 本文介绍并定义了在混频器 放大器和振荡器的数据资料中用到的RF术语 包括增益 变频增益 相位噪声 三阶截取点 P1dB 插入损耗 输出功率 调谐增益和调谐范围 另外还给出了图形和图像以阐明关键的概念 这些在
  • Grouped Query Attention论文阅读

    论文 GQA Training Generalized Multi Query Transformer Models from Multi Head Checkpoints 1 背景介绍 Google在2023年发表的一篇关于Transfo
  • MATLAB求解矩阵特征值的六种方法

    MATLAB求解矩阵特征值的六种方法 关于这个特征值的求解一共六种方法 幂法 反幂法 QR方法 对称QR方法 jacobi方法 二分法 接下来就着重讲解这些算法的是如何使用的 幂法 算法如下 输入 矩阵A 非零矢量x0 maxit 2000
  • openGL之API学习(二十七)glEnable

    开启服务器端的opengl功能 void glEnable GLenum cap GL BLEND If enabled blend the computed fragment color values with the values in
  • LeetCode416-分割等和子集(经典01背包问题—动态规划)

    目录 思路 什么是01背包问题 01背包问题空间复杂度优化 滚动数组 本题代码 本题空间复杂度优化 滚动数组 给你一个 只包含正整数 的 非空 数组 nums 请你判断是否可以将这个数组分割成两个子集 使得两个子集的元素和相等 示例 1 输
  • RPC 设计与实现

    RPC 设计与实现 互联网架构演变 微观 单一架构 以实现功能为目的 扩展性差 数据访问层问题 垂直架构 业务拆分 各司其职 控制层 M V解耦 分布式服务 服务间的相互调度 RPCremote process call 流动式计算 伸缩性
  • 如何判断用户有没有关注订阅号

    收集整理的方法如下 微信用户访问微信公众号 订阅号 的网页时判断用户有没有关注公众号 订阅号 1 前提 微信公众号分为服务号和订阅号 它们的接口权限各不相同 服务号可以通过网页授权接口 用户授权后获取用户的openid 通过用户的openi
  • 如何解决过拟合与欠拟合

    如何解决过拟合与欠拟合 根据不同的坐标方式 欠拟合与过拟合图解不同 1 横轴为训练样本数量 纵轴为误差 如上图所示 我们可以直观看出欠拟合和过拟合的区别 模型欠拟合 在训练集以及测试集上同时具有较高的误差 此时模型的偏差较大 模型过拟合 在
  • GLSL 数据精度

    1 默认精度 顶点着色器中默认精度 precision highp float precision highp int precision lowp sampler2D precision lowp samplerCube 像素着色器中默认
  • 【待完善另一种情况】tensorflow 使用CPU而不使用GPU的问题解决

    文章目录 1 问题 2 Solution 3 other 4 更新 5 参考 1 问题 今天运行代码时发现一个怪现象 在使用TensorFlow时 通过os environ CUDA VISIBLE DEVICES 0 指定使用GPU 0
  • TLB的作用与机制

    TLB Translation Lookaside Buffer 转换检测缓冲区 是用来帮助CPU中的MMU进行地址转换的 在可分页系统中 每个进程都有自己虚拟地址空间和虚拟页面 当CPU执行进程代码读到虚拟地址时 不是直接将该虚拟地址送到
  • 泰勒图(Taylor diagram)绘制方法大汇总

    泰勒图 Taylor diagram 的基本介绍 R 绘制泰勒图 Taylor diagram Python 绘制泰勒图 Taylor diagram 泰勒图 Taylor diagram 的基本介绍 泰勒图 Taylor diagram
  • GEO2R数据下载速度慢、基因注释、差异分析、火山图、热图及后续处理

    GEO2R数据分析 首先感谢生信技能树大神jmzeng1314提供的github包 由于我这边访问github比较困难 因此我已经导入到我的 gitee 托管平台 https gitee com swcyo 特别声明 正版托管地址是http
  • java 工具类实现驼峰和下划线的互相转换

    下划线转驼峰 如果是下划线转驼峰 那么ch就是 public static String toCamel String str String ch if str indexOf ch 1 return str String strings
  • Git下载安装及常用命令

    背景 Git是一个开源的分布式版本控制系统 可以有效 高速的处理从很小到非常大的项目版本管理 安装 在你开始使用 Git 前 需要将它安装在你的计算机上 即便已经安装 最好将它升级到最新的版本 你可以通过软件包或者其它安装程序来安装 或者下
  • shu_1241 邮局位置问题

    http 202 121 199 212 JudgeOnline problem php cid 1078 pid 5 分析 由于题目中的距离是折线距离 所以能够分别考虑两个方向 又x方向与y方向实质是一样的 所以以下 用x方向来分析 如图
  • Linux系统vi命令快捷键汇总

    vi的基本概念 基本上vi可以分为三种状态 分别是命令模式 command mode 插入模式 Insert mode 和底行模式 last line mode 各模式的功能区分如下 命令行模式command mode 控制屏幕光标的移动
  • Linux系统网络启动失败

    nm object get property Error getting State for org freedesktop NetworkManager ActiveConnection Linux系统网络启动失败 出错原因 用图形用户界
  • Java期末作业-社区医疗信息管理系统(源码+数据库文件+设计报告·附下载链接)

    Java期末大作业 社区医疗信息管理系统介绍 比较简单 点我下载项目源码 数据库文件 设计报告文档 介绍 这个小项目没有用到任何框架也没有用到Javaweb的技术 知识使用了Java写代码 使用MySQL创建数据库 然后用JDBC进行连接
  • 什么是信道编码?信道编码比较

    消除干扰 让无线信号更干净 这本是信道编码技术的初衷 然而 最近网络上这场 Polar码投票 闹剧 无中生有地添加杂质 与所议论的技术之本质背道而驰 若Polar码也有血肉之躯 此君情何以堪 香农前辈若在世 也会笑话我们吧 2016年11月