简介:


信道编码是通信系统中非常重要的一环,它使我们构建的通信系统在一定条件下拥有检错和纠错的能力。而随着历史的演进,信道编码技术在不断地丰富,诞生了许多值得了解学习的编码技术。

本篇文章将梳理信道编码的整体框架,旨在让读者对信道编码有一个系统性的认识。而每项技术的细节将在专栏的其他文章中展现。

目录

简介:

一、信道编码与信源编码

二、信道编码的一些符号表示

2.1 码字和码元

2.2 符号表示

2.3 码率

三、信道编码的历史

3.1 香农信道编码定理的提出

3.2 汉明码(Hanmming Code)的提出

3.3 CRC(Cyclic Redundancy Check)循环冗余码校验的提出

3.4 卷积码的提出

3.5 Turbo码的提出

3.6 5G下的信道编码展望

四、信道编码技术汇总

4.1 纠错编码与差错控制方式

4.2 线性分组码

4.3 汉明码

4.4 CRC循环校验码

4.5 卷积码和Viterbi译码以及其MATLAB实现



一、信道编码与信源编码


信源编码是高度关系到信源的,不同的信源可能对应完全不同的信源编码方案。信源编码的首要目的如 移动通信原理与系统 一书中所表述的一样: “通常,对于一个数字通信系统而言,信源编码位于从信源到信宿的整个传输链路中的第一个环节,其首要目的就是通过压缩信源产生的冗余信息,降低传递这些不必要信息的开销,从而提高整个传输链路的有效性。”  打个比方,你想要的从你的电脑上发送 Game of Thrones 给你的另一台设备,假设一个字母一个字节(8bits),想想你得传多少个bits。但是我们知道,小说里字母出现的概率是很不一样的,通常来说e出现的次数最多,z出现次数最少,而出现次数最多的e理论上最好用更少的比特数去表示,这样就有可能减少传输的比特数。这就是一个简单的信源编码思想。

信道编码的首要目的是通过设计信号自身具有的数据结构,是信息传输的接收端能够检测或纠正数据在传输中发生的部分错误。打个比方,你要叫你的室友帮你带泡面,你说:“我要一个合味道,只要一个。”,而这个“只要一个”就是一个冗余信息,所以假如刚开始你的室友没听清,以为你要两百个合味道,这时候后面的冗余信息也会提醒他你只要一个。(而添加冗余信息是信道编码的重要手段)

二、信道编码的一些符号表示


2.1 码字和码元

由于我们的数字通信系统一般是二元(也即01),所以一下都假定符号为二元的。假设你现在通过采样量化以及信源编码(可看专栏对应的文章)得到一长串比特流,并想对其进行信道编码。一种方法是将其k个k个比特的分组,然后分别对分得的k个比特添加冗余信息。比如k长的一串比特加入r个冗余比特,组成了n长的比特流。这n长的码就叫码字(codeword),而n长的码字中有k长的信息比特流,r长的冗余比特流。而这n长码字中的每一位比特就是一个码元。这种方式就是分组码。

2.2 符号表示

紧接着上面所说的,我们将这样的码写成C[n,k],注意,这里的C是一个族,通常有个,因为冗余比特是根据信息比特通过某种数学约束关系计算出来的,所以是而不是个。这就是分组码的符号表示。

2.3 码率

分组码的码率就是    

三、信道编码的历史


3.1 香农信道编码定理的提出

在很久远以前,工程师大抵会通过加大发送端天线的功率去抵抗噪声干扰,直到香农提出他的香农第二定理(有噪声信道编码定理):对于一个符号信道容量为C(bit/symbol)的q元传输信道q元是指信源符号是几元的,我们数字通信通常是二元的,存在一种编码效率为的信道编码技术(当符号是二元时,),使得按最大似然译码准则的译码码字差错概率任意小。反之,不满足条件的话,则不存在任何编码技术使码字差错概率任意小。

香农信道编码定理翻译成人话就是:当码率小于信道容量的时候,通过信道编码能使得接收端进行任意小差错的译码。而码率大于信道容量的时候,则不行。

其中AWGN信道容量是:, S是接收端接收到的信号功率,N是接收端的噪声功率,B是信号带宽。

从此工程师们意识到,可以通过信道编码的手段检测或纠正接收端的接收错误。

3.2 汉明码(Hanmming Code)的提出

1940年,汉明在著名的贝尔实验室(Bell Labs)工作,当时由于读卡机时常发生错误导致汉明非常沮丧,因为发生错误就意味着重复一些工作。为了解决这个问题,汉明开始研究编码技术,然后在1950年发表汉明码。这大概是第一个信道编码技术,但是它的码率较低,如(7,4)的Hamming Code,每四个信息比特就要三个冗余比特。随后,Golay为解决Hamming Code的缺点提出了Golay码。紧接其后又有RM码等。

3.3 CRC(Cyclic Redundancy Check)循环冗余码校验的提出

随着历史演进,CRC校验码出现,其凭借着简单实现的系统和检验的高效性快捷性,创下分组码的黄金时期。CRC校验码可以高比例的纠正信息传输过程中的错误,可以在极短的时间内完成数据校验码的计算,并迅速完成纠错过程,通过数据包自动重发的方式使得计算机的通信速度大幅提高。因此,CRC验码大量用于工业界。

3.4 卷积码的提出

由于以上的信道编码方式都是以分组码的方式,所以接收端都要等一组一组的码到缓冲器里时才开始译码,并不能做到更快的速度。但是Elias于1955提出的卷积码解决了这一问题,卷积码能够克服分组码的缺点,在复杂性较为低的卷积编码中,每两个接收比特就能进行一次译码,不要求大的缓存器。这为无线通信带来了极大的发展。

对应卷积码,1967年,Viterbi提出了Viterbi译码,使得卷积码的译码过程更加高效。

3.5 Turbo码的提出

卷积码提出后,虽然无线通信高速发展,但是当时大部分的卷积码技术都没法使传输一个信息比特所需的最小(功率)信噪比达到香农限。直到1993年,两个名气不是很高的法国工程师提出了逼近香农限的Turbo码。有意思的是,他们并不是依据数学理论推导得出的Turbo码(似乎至今没有合理的数学解释),而是通过工程实践实验出这个Turbo码的系统。有了Turbo码之后,移动通信进一步高速发展,直到4G都采用这Turbo码的编码系统。

3.6 5G下的信道编码展望

由于Turbo码采用迭代解码,时延会稍微比较大,对于超高速率、超低时延的5G需求,Turbo码又遇到瓶颈。这时候就到了LDPC码和Polar码施展拳脚的时候了!(LDPC码的提出者Robert Gallager有MIT的公开网课,b站上也有转载哦)

四、信道编码技术汇总


我将在专栏分享上述历史中比较有学习价值的信道编码技术的细节。希望上面的叙述已经让读者拥有一个较为系统的信道编码技术框架。我推荐的阅读顺序是:

4.1 纠错编码与差错控制方式

【信道编码/Channel Coding】纠错编码与差错控制_Tomatomatodo的博客-CSDN博客这是本专栏信道编码/Channel Coding的第一站,想对信道编码有一个系统性的认识可以看本专栏的信道编码的整体框架一文。而在本篇文章中,将介绍如何看一族码字的检错能力以及纠错能力,以及整个传输系统中,我们有什么进行差错控制的方式,这是踏入信道编码的第一步。https://blog.csdn.net/Tomatomatodo/article/details/121903825?spm=1001.2014.3001.5501

4.2 线性分组码

【信道编码/Channel Coding】线性分组码_Tomatomatodo的博客-CSDN博客简介:这是本专栏信道编码/Channel Coding的第二站,想对信道编码有一个系统性的认识可以看本专栏的信道编码的整体框架一文。而在本篇文章中,将介绍线性分组码的基本原理。一、线性分组码的性质1.1 什么是线性在本专栏的信道编码的整体框架一文中已经介绍了分组码的数学符号表示了,那么什么是线性分组码呢? 用最简单的说法解释就是,所有将k个信息比特映射成n个信息比特的约束关系都是线性的,那么什么是线性的约束关系呢?在二进制的逻辑运算中,异或运算(模二加减)是线性的,但是取反运算是非...https://blog.csdn.net/Tomatomatodo/article/details/121905969?spm=1001.2014.3001.5501

4.3 汉明码

【信道编码/Channel Coding】汉明码Hamming Code_Tomatomatodo的博客-CSDN博客这是本专栏信道编码/Channel Coding的第三站,想对信道编码有一个系统性的认识可以看本专栏的信道编码的整体框架一文。而在本篇文章中,将介绍汉明码(Hamming Code)的构成,而且会着重讲解汉明码的线性分组码形式,因为这是我学习过程中最大的疑惑。https://blog.csdn.net/Tomatomatodo/article/details/121911232?spm=1001.2014.3001.5501

4.4 CRC循环校验码

【信道编码/Channel Coding】CRC校验码_Tomatomatodo的博客-CSDN博客这是本专栏信道编码/Channel Coding的第四站,想对信道编码有一个系统性的认识可以看本专栏的信道编码的整体框架一文。而在本篇文章中,将介绍CRC校验码的基本原理。https://blog.csdn.net/Tomatomatodo/article/details/121911327?spm=1001.2014.3001.5501

4.5 卷积码和Viterbi译码以及其MATLAB实现

【信道编码/Channel Coding】卷积码和Viterbi译码及其MATLAB实现_Tomatomatodo的博客-CSDN博客简介:这是本专栏信道编码/Channel Coding的最后一站,想对信道编码有一个系统性的认识可以看本专栏的信道编码的整体框架一文。而在本篇文章中,将介绍卷积码的基本原理和Viterbi译码的过程,以及其MATLAB实现。为什么是最后一站呢,明明还有Turbo码,LDPC码和Polar码,这是因为这是我本科的总结,那些码由于实现起来需要很多细节,有很多研究价值,我希望在我的研究生生涯能够完善。一、卷积码的原理1.1 卷积码的符号表示和分组码稍有不同,卷积码的符号表示有三个维度,(n..https://blog.csdn.net/Tomatomatodo/article/details/121917054?spm=1001.2014.3001.5501

[信道编码/Channel Coding】信道编码的整体框架相关推荐

  1. 【信道编码/Channel Coding】汉明码Hamming Code

    简介: 这是本专栏信道编码/Channel Coding的第三站,想对信道编码有一个系统性的认识可以看本专栏的 信道编码的整体框架 一文.而在本篇文章中,将介绍汉明码(Hamming Code)的构成 ...

  2. 【信道编码/Channel Coding】CRC校验码

    简介: 这是本专栏信道编码/Channel Coding的第四站,想对信道编码有一个系统性的认识可以看本专栏的 信道编码的整体框架 一文.而在本篇文章中,将介绍CRC校验码的基本原理. 目录 简介: ...

  3. 信源编码与信道编码-Source coding Channel coding

    信源编码与信道编码-Source coding Channel coding 概述 信源编码 信道编码 概述 当我们衡量通信系统性能时,通常有两个重要的性能指标--有效性和可靠性. 通俗来讲,有效性就 ...

  4. 【Codecs系列】SVAC1.0标准解读-----整体框架分析

    Date: 2017/9/11 目录 一.SVAC1.0标准介绍 二.SVAC1.0解码整体框架分析 三.SVAC1.0解码器架构分析 四.标准PDF下载地址 一.SVAC1.0标准介绍 SVAC(S ...

  5. 【推荐系统】推荐系统整体框架概览

    感谢博文作者 Kevin_Duan 原文链接:https://blog.csdn.net/chunyun0716/article/details/83152037 推荐系统整体架构 先说点题外话,最近 ...

  6. 通俗易懂SpringMVC整体框架理解

    最近又重新温习了一下前台SpringMVC框架,能够从整体上对SpringMVC有一个全局的认识.在这里也总结一下,为那些即将学习SpringMVC的亲们,做一个很好的开端吧! 1. SpringMV ...

  7. V4L2 driver(一). 整体框架

    1.1 从字符设备说起 熟悉v4l2用户空间编程的都知道, v4l2编程主要是调用一系列的ioctl函数去对v4l2设备进行打开, 关闭, 查询, 设置等操作. v4l2设备是一个字符设备, 而且其驱 ...

  8. 推荐系统整体框架概览

    推荐系统整体框架概览 推荐系统整体架构 推荐系统的核心组成部分 离线 核心节点 服务 UI 总结 推荐系统整体架构 先说点题外话,最近在看的书中讲到了怎么进行自学的方法,分了十个层级.第一个便是要了解 ...

  9. 浅谈opencl之整体框架

    结合四大模型,以CPU和GPU平台为例子,opencl整体框架如下: CPU为host端, GPU为device端, host和device端的交互是以context为主.context贯穿到整个op ...

  10. jQuery源码分析 整体框架部分及部分常用方法

    最近尝试看看jQuery的源码. 版本 version = "1.11.1" 相对于看一本jQuery如何使用的书,看jQuery源码对它可以有更深层次的理解.jQuery中大量使 ...

最新文章

  1. Leetcode 62. Unique Paths
  2. 变频器输出功率_变频器的输出功率该如何选择?
  3. 数据中心冷却塔结冰应急演练
  4. 【机器视觉】 assign_at算子
  5. php把数字倒着展示,jQuery+PHP实现动态数字展示特效
  6. kali BEEF-XSS启动报错解决
  7. Scrapy 爬虫去重效率优化之 Bloom Filter的算法的对接
  8. 第四单元作业——UML分析总结学期总结
  9. PSIM软件学习---03 电路的创建与仿真
  10. 计算机应用基础试题号2007,2006-2007计算机应用基础期末试题(A卷).pdf
  11. 浏览器判断及客户端跳转,绕开微信对某宝限制
  12. 蔡先生论道大数据之八: 让他在看小说的时候, 看到喜欢的汽车
  13. git 改local branch名字_最好的Git分支管理教程
  14. 【js高级程序设计】迭代器
  15. 智能指针auto_ptr源码
  16. 基于Bootstrap的后台通用模板
  17. 趋势防毒墙网络版的安装部署(officescan)
  18. 识别图片验证码内容 -- ddddocr识别
  19. 经典ASP.NET视频教程
  20. 海尔希望小学:同一片蓝天下梦想启航

热门文章

  1. 新一配:iTunes的历史版本【转载】
  2. demo VelocityTracker
  3. JSP户外旅游网站系统myeclipse开发mysql数据库web结构计算机java编程
  4. android剪贴板清空,如何访问和清除Android手机上的剪贴板
  5. VS2010 中文版MSDN下载
  6. python视频教程唐学韬-python
  7. 使用IE7登陆工商银行的个人网上银行
  8. 启天m7300微型计算机,启天M7300
  9. resin服务器中间件
  10. 阿里巴巴Java开发规范手册(详尽版)——免费下载