精华内容
下载资源
问答
  • 什么是信道编码?信道编码比较

    万次阅读 多人点赞 2018-11-23 14:24:20
    消除干扰,让无线信号更干净,这本是信道编码技术的初衷。然而,最近网络上这场“Polar码投票”闹剧,无中生有地添加杂质,与所议论的技术之本质背道而驰,若Polar码也有血肉之躯,此君情何以堪?香农前辈若在世,也...

            消除干扰,让无线信号更干净,这本是信道编码技术的初衷。然而,最近网络上这场“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才会走得更稳。

    展开全文
  • 对几种编码方式的编码增益进行了比较分析,包括线性分组码、卷积码、Turbo码、串行级联码、LPDC码等。
  • 关于信道编码

    千次阅读 2019-03-31 23:25:00
    关于信道编码一个比较好的网站 一个比较好的网站 www.eccpage.com

    关于信道编码

    一个比较好的网站

    www.eccpage.com

    展开全文
  • 5G_NR信道编码研究

    2020-03-10 23:00:35
    信道编码是 5G 的关键技术之一, 描述了 5G 新空口(NR — — New Radio Ac- ... 通过仿真,比较了 5G NR 的信道编码方案与 4G LTE 信道编码方案的性能。 另外,还比较了这2 代信道编码技术的复杂度和 吞吐量。
  • 三种信道编码的性能分析和比较,谭维斌,,本文介绍了通信系统仿真的相关内容,包括通信系统仿真的一般步骤、MATLAB中的一种可视化仿真工具Simulink、 M文件编辑器以及子系统封��
  • 结合联合网络信道编码的思想设计了一种应用于多址接入中继信道环境中的基于Turbo码的联合网络信道编码方案,详细介绍了方案中继节点编码和基站处译码的实现。将该方案与点对点传输方案、异或操作网络编码传输方案进行...
  • 第1章 物理层架构 1.1 物理层内部功能协议栈 1.2物理层编码与处理过程 ...(1)信道编码 ...本文主要探讨NR的信道...以发送为例, 阐述物理层信道编码的过程以及其中涉及到的主要,接收过程与之相反。 (1)TrBloc...

    目录

    第1章 物理层架构

    1.1 物理层内部功能协议栈

    1.2 5G NR下行选项A

    1.3 5G NR下行选项B

    1.4 NR的物理层数据处理过程概述

    第2章 物理层信道编码过程

    2.1 NR物理层信道编码与交织过程

    2.2 信道编码概述

    2.3 物理层编码算法的多样化

    2.4 UCI, DCI的编码策略

    2.5 冗余信息与增益之间的关系

    第4章 常见的检错技术

    4.1 奇偶校验

    4.2 CRC校验

    4.3 MD5完整性校验

    第5章 常见的纠错技术

    5.1 前向纠错码FEC概述

    5.2 海明码

    5.3 Turbo码,Polar码,LDPC编码比较

    第6章 速率匹配

    6.1 为什么需要速率匹配

    6.2 什么是速率匹配

    6.3 如何进行速率匹配

    第7章 交织/加扰

    7.1 无线信道检错纠错的局限

    7.2 无线信道的特征与降低出错率的方法

    7.3 交织的来源和基本思想

    7.4 交织编码的基本原理



    第1章 物理层架构

    对本章节的注解:

    本章节内容的作用在于:从宏观感受物理层信道编码在整个物理层协议栈中的位置和作用,无需深究每个环节。主体内容从第2章节开始。

    1.1 物理层内部功能协议栈

    1.2 5G NR下行选项A

    1.3 5G NR下行选项B

     

    1.4 NR的物理层数据处理过程概述

    (1)信道编码与交织:处于计算机通信领域,这是计算机的底盘和擅长的地方。

    (2)调制解调: 二进制序列到复指数子载波序列的映射过程,这是从计算机领域到数字信号处理DSP领域的跨越! 从计算机通信领域向数字无线通信领域的跨越!从此处开始进入数字信号处理领域!

    (3)多天线技术的层映射

    (4)扩频预编码(仅仅用于上行,可选): 这是数字无线通信领域,在相同的频率资源,由“单一”空间向"码分"空间的跨越。

    (5)多天线MIMO技术的预编码:这是数字无线通信领域中,在相同的频率资源,由“单一”空间向"分层"空间的跨越。

    (6)无线资源映射RE mapping: 这是数字无线通信领域,这是由串行的时间域并行的频率域的跨越。

    (7)数字波束赋形:这是数字无线通信领域中,相同的频率资源,由“全向”空间向“波束局部”空间的跨越。

    (8)OFDM变换(时域到频域的转换):这是各个独立的频域子载波信号到时域信号的转换,这是无线通信领域中,从频域信号时域信号的跨越!

    (9)RF射频调制:这是在无线通信领域中,由数字无线通信领域模拟无线通信领域的跨越!!!

     

    本文主要探讨LTE和NR的信道编码技术

     

    第2章 物理层信道编码过程

    2.1 NR物理层信道编码与交织过程

    物理层信道编码与交织不是单一的编码,而是由一组编码组成。

    以发送为例, 阐述物理层信道编码的过程以及其中涉及到的主要,接收过程与之相反。

    (1)TrBlock:来自MAC层传输信道需要发送的数据块。

    (2)CRC:对传输层数据块尾部添加CRC,这是一种检错技术。

    (3)数据块分段处理,主要考虑MAC层和物理层处理的数据块的大小不同。

    (4)数据块分段数据的CRC校验

    (5)信道编码LDPC码,Polar码,这是一种纠错技术。

    (6)速率匹配(Rate matching)是指传输信道上的比特被重发(repeated)或者被打孔(punctured),以匹配物理信道的承载能力(物理信道的承受能力受信道质量的限制),信道映射时达到传输格式所要求的比特速率。

    (7)比特交织指在传输前,将比特流中的比特重新排列,使差错随机化的过程。

    (8)编码块重组

     

    2.2 信道编码概述

    (1)信道编码的原因与动机

    数字信号在传输中往往由于各种原因,使得在传送的数据流中产生误码,从而使接收端产生图象跳跃、不连续、出现马赛克等现象。所以通过信道编码这一环节,对数码流进行相应的处理,使系统具有一定的纠错能力和抗干扰能力,可极大地避免码流传送中误码的发生。

    由于移动通信存在干扰和衰落,在信号传输过程中将出现差错,故对数字信号必须采用纠、检错技术,即纠、检错编码技术,以增强数据在信道中传输时抵御各种干扰的能力,提高系统的可靠性。

    对要在信道中传送的数字信号进行的纠、检错编码就是信道编码。

    (2)信道编码的理论基础

    信道编码之所以能够检出和校正接收比特流中的差错,是因为加入一些冗余比特,把几个比特上携带的信息扩散到更多的比特上。为此付出的代价是:必须传送比发送信息比特所需要的更多的比特

    提高数据传输效率,降低误码率是信道编码的任务。

    信道编码的本质是增加通信的可靠性。

    但信道编码会使有用的信息数据传输减少,信道编码的过程是在源数据码流中加插一些码元,从而达到在接收端进行判错和纠错的目的,这就是我们常常说的开销。

    这就好象我们运送一批玻璃杯一样,为了保证运送途中不出现打烂玻璃杯的情况,我们通常都用一些泡沫或海棉等物将玻璃杯包装起来,这种包装使玻璃杯所占的容积变大,原来一部车能装5000个玻璃杯的,包装后就只能装4000个了,显然包装的代价使运送玻璃杯的有效个数减少了。

    同样,在带宽固定的信道中,总的传送码率也是固定的,由于信道编码增加了数据量,其结果只能是以降低传送有用信息码率为代价了。

    将有用比特数除以总比特数就等于编码效率了,不同的编码方式,其编码效率有所不同。

    (3)误码处理的方法

    • 检错技术:奇偶校验、CRC校验、MD5完整性校验等。
    • 纠错技术:分组码、卷积码、出错重传、前向纠错等。
    • 交织技术:
    • 线性内插等。

     

    2.3 物理层编码算法的多样化

    长码:物理层业务数据信道采用LDPC编码

    端码:物理层小区广播信道采用Polar编码

     

    2.4 UCI, DCI的编码策略

    不同长度的数据,采用了不同的编码策略。

    短码:只有K>11是才采用Polar码,且长度不同,采用不同的Polar码编码选项。

    超短码:其他编码

     

    2.5 冗余信息与增益之间的关系

    硬判决FEC和软判决FEC的香农限

     

    冗余信息越多,信息正确传输的增益越大,冗余信息的增加与增益的关系并非是线性的,而是log关系。

    校验位长度(n-k)与信息位长度k的比值,称为编码开销。开销越大,FEC方案的理论极限性能越高,但增加并不是线性的,开销越大,开销增加带来的性能提高越小。开销的选择,需要根据具体系统设计的需求来确定。

     

    第4章 常见的检错技术

    所谓检错:就是检查数据是否有数据比特传输出错,等无法确定哪一位出错,也无法纠错的技术。

    本文思维导图

    4.1 奇偶校验

    (1) 奇偶校验概述

    偶校验(Parity Check)是一种校验一组比特传输正确性的方法。

    在数据比特发送时,在数据末位添加一个比特,确保所有传输的比特位中,1的个数是奇数或偶数。

    在数据比特接收时,根据被传输的一组二进制比特的数位中“1”的个数是奇数或偶数来进行校验判断。

    依据数据块中包含奇数个1的判断法则称为奇校验

    依据数据块中包含偶数个1的判断法则称为偶校验

    (2)编码效率

    • 仅需要1个比特的冗余信息

    (3)检错效率

    • 偶校验只能检验处奇数位出错;
    • 奇校验智能检验处偶数位出错。

    (4)应用场合

    • 物理传输信道可预测,且信道稳定,误码率低的场合。如RS232串口通信。
    • 使用与少量比特数据的传输,如7bit的ASCII码的传输。

    (5)优点

    • 软硬件实现简单:奇偶校验位是一个表示给定位数的二进制数中1的个数是奇数或者偶数的二进制数,奇偶校验位是最简单的错误检测码,
    • 编码效率高:仅仅需要增加一个比特的冗余位。

    (6)缺点:

    • 只能检错:如果传输过程中包括校验位在内的奇数个数据位发生改变,那么奇偶校验位将出错表示传输过程有错误发生。因此,奇偶校验位是一种错误检测码,但是由于没有办法确定哪一位出错,所以它不能进行错误校正。发生错误时必须扔掉全部的数据,然后从头开始传输数据。
    • 在噪声很多的媒介上成功传输数据可能要花费很长的时间,甚至根本无法实现。

     

    4.2 CRC校验

    (1)CRC校验概述

    循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术。主要用来检测或校验数据传输或者保存后可能出现的错误。

    它是利用除法及余数的原理来作错误侦测的。其基本思想是将要传送的信息M(X)表示为一个多项式L,用L除以一个预先确定的多项式G(X),得到的余式就是所需的循环冗余校验码。这种校验又称多项式校验。

    “循环”是指:使用传送的信息比特组成的多项式除以特征多项式,循环求余数,直到留下最后的余数。

    “冗余”是指:添加一定比特的冗余比特,这些冗余比特的数值,是相除之后的余数,余数比特序列与待传输的比特序列和特征多项式是相关的。

     

    比如:

    (1)设约定的生成多项式为G(x)=x4+x+1,其二进制表示为10011,共5位,其中k=4。 

    (2)假设要发送数据序列的二进制为101011(即f(x)),共6位。 

    (3)在要发送的数据后面加4个0(生成f(x)*xk),二进制表示为1010110000,共10位。 

    (4)用生成多项式的二进制表示10011去除乘积1010110000,按模2算法求得余数比特序列为0100(注意余数一定是k位的)。 

    (5)将余数添加到要发送的数据后面,得到真正要发送的数据的比特流:1010110100,其中前6位为原始数据,后4位为CRC校验码。 

    (6)接收端在接收到带CRC校验码的数据后,如果数据在传输过程中没有出错,将一定能够被相同的生成多项式G(x)除尽,如果数据在传输中出现错误,生成多项式G(x)去除后得到的结果肯定不为0。

     

     

    (2)编码效率

    • 常见的CRC多项式有CRC16和CRC32, 增加的冗余比特为16bit或32比特。

     

    (3)应用场合

    • 广泛应用大量比特传输的数据通信场合。

    (4)优点

    • 电路实现简单
    • 能够实现大数据比特通信的场合

    (5)缺点

    • 只能发现错误,而不能纠正错误。

     

    4.3 MD5完整性校验

    (1)MD5概述

    MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。

    MD5算法的原理可简要的叙述为:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由4个32位分组组成,将这4个32位分组级联后将生成一个128散列值.

     

     

    (2)编码效率

    • 增加128比特的冗余信息,这128比特的信息反映了原始数据的特征。

     

    (3)应用场合

    • 大量数据比特完整性校验和保护。完整性校验的本质是对数据比特的检错。
    • 数字签名
    • 文件完整性检查
    • 密码保存

     

    (4)特点

    • 压缩性:无论数据长度是多少,计算出来的MD5值长度相同,为128bit (16字节)
    • 容易计算性:由原数据比特序列容易计算出MD5值序列
    • 抗修改性:即便修改一个字节,计算出来的MD5值也会巨大差异,其分散特性极强。
    • 抗碰撞性:知道数据和MD5值,很小概率找到相同MD5值相同的原数据,即很根据MD5的只,反推出原始数据序列。

     

    第5章 常见的纠错技术

    FEC在光通信中的位置

    所谓检错:就是检查数据是否有数据比特传输出错,并且能够确定是哪一位出错,同时能够把出错自的比特纠正为正确的比特。

    为了更好的理解物理层的纠错编码技术,这里会从前向纠错码FEC的概念开始,并且先谈谈LTE的信道编码技术,最后再阐述大名鼎鼎的Polar以及与之对应的LDPC。

    5.1 前向纠错码FEC概述

    前向纠错编码(FEC)并非是某一个具体的编码技术,而是一类纠错编码技术的统称。之所以“前向”纠错,该技术纠错的是已经接收到的比特数据,称之为前向纠错。

    前向纠错编码(FEC)技术通过在传输码列中加入冗余纠错码(不仅仅是检错),在一定条件下,通过解码可以自动纠正传输误码,降低整体的接收数据的误码率(BER)。

    纠错的好处:避免整个数据包中只有部分bits传输出错,而重传整个数据的情形。

    纠错的缺点:需要增加比检错更多的冗余信息,有效数据占比得到很大的降低,数据编码率下降。

    在信道质量良好的情况下,多余的冗余比特就是一种资源的浪费。但在信道质量不好的情形下,纠错功能极大的降低了数据的重传,提升了整体的性能。

    FEC技术是一种广泛应用于通信系统中的编码技术。

    以典型的分组码为例,其基本原理是:在发送端,通过将kbit信息作为一个分组进行编码,加入(n-k)bit的冗余校验信息,组成长度为n bit的码字。码字经过信道到达接收端之后,如果错误在可纠范围之内,通过译码即可检查并纠正错误bit,从而抵抗信道带来的干扰,提高通信系统的可靠性。在光通信系统中,通过FEC的处理,可以以很小的冗余开销代价,有效降低系统的误码率,延长传输距离,实现降低系统成本的目的。

    (1)编码开销:

    假设有效数据长度为k,编码后的数据长度为n,则容易信息为n-k。

    校验位长度(n-k)与信息位长度k的比值,称为编码开销。

    开销越大,FEC方案的理论极限性能越高,但增加并不是线性的,开销越大,开销增加带来的性能提高越小。开销的选择,需要根据具体系统设计的需求来确定。

    硬判决FEC和软判决FEC的香农限

    (2)判决方式:

    FEC的译码方式分为硬判决译码和软判决译码两种。

    硬判决FEC译码器输入为0,1电平,由于其复杂度低,理论成熟,已经广泛应用于多种场景。

    软判决FEC译码器输入为多级量化电平。

    在相同码率下,软判决较硬判决有更高的增益,但译码复杂度会成倍增加。

    微电子技术发展到今天,100G吞吐量的软判决译码已经可以实现。随着传送技术的发展,100G时代快速到来,软判决FEC的研究与应用正日趋成熟,并将在基于相干接收的高速光通信中得到广泛应用。

     

    (3)码字方案:

    当确定开销和判决方式后,设计优异码字方案,使性能更接近香农极限,是FEC的主要研究课题。

    目前,软判决LDPC码,由于其良好的纠错性能,且非常适合高并行度实现,逐步成为高速光通信领域主流FEC的方案。

    后面会继续讨论LDPC码与Polar码的进一步的细节。

     

    5.2 海明码

    (1)为什么要了解海明码?

    海明码是理解更复杂的纠错码的基础,通过对海明码的理解,可以理解纠错码的基本原理,强烈建议在理解LTE Turbo码和NR的Polar码之前,先理解海明码的原理!!!

    海明码是最简单的纠错码,通过理解海明码,可以理解纠错编码工作原理:(1)如何发现错误比特所在的比特位;(2)纠错码是如何纠错的?

    其中发现错误位的位置是根本,而纠错很容易,因为二进制比特只有0和1,如果发现特定的比特出错,只需要取反就实现了纠错的功能。

     

    (2)海明码的基本原理

    发送时:

    • 海明码把待发送的比特先进行分组,
    • 对每个分组在进行奇/偶校验编码,
    • 并把奇/偶校验码的比特信息插入到数据流中。

    接收时:

    • 在数据接收时,先把接收到的比特进行分组,
    • 对每个分组在进行奇/偶校验
    • 如果组内没有比特出错,则校验结果为0
    • 如果组内有比特出错,则校验结果为1,
    • 最后每个组的校验结果组合在一起,得到一个二进制序列,这个二进制序列的值就是出错的位置。
    • 最后进行纠错:指定位置的比特取反。

    优点:

    • 由于汉明编码简单,它们被广泛应用于内存(RAM)。

    缺点:

    • 只能发现一个bit的出错时的位置

     

    需要注意和强调的是:

    • 海明码是一种就纠错码
    • 纠错的冗余信息并不是添加到整个二进制比特块的最后,而是插入到二进制比特的中间。或者说,先把待编码的数据进行分组,冗余纠错码信息是插入到每个分组块的尾部,而不是以整个数据比特块的尾部。因此,纠错码,又称为分组纠错码。

     

    这里有关于海明码的比较详细的、形象的说明,请参考:

    https://blog.csdn.net/Yonggie/article/details/83186280
     

    5.3 Turbo码,Polar码,LDPC编码比较

    (1)Turbo码概述

    Shannon 编码定理指出:如果采用足够长的随机编码,就能逼近Shannon 信道容量。

    但是传统的编码都有规则的代数结构,远远谈不上“随机”;同时,出于译码复杂度的考虑,码长也不可能太长。

    所以传统的信道编码性能与信道容量之间都有较大的差距。事实上,长期以来信道容量仅作为一个理论极限存在,实际的编码方案设计和评估都没有以Shannon限为依据。

    Turbo 码是一种巧妙的编码方式,它巧妙地将两个简单分量码通过伪随机交织器并行级联来构造具有伪随机特性的长码,并通过在两个单出入单输入(SISO)译码器之间进行多次迭代实现了伪随机译码

     

    Turbo的故事:

    https://blog.csdn.net/vblittleboy/article/details/9013835

    https://blog.csdn.net/wo17fang/article/details/44155309

     

    (2)Polar码概述

    极化码(Polar Codes)是一种新型编码方式,也是目前3GPP标准制定中的业务信道的编码技术方案。

    通过对华为极化码试验样机在静止和移动场景下的性能测试,针对短码长和长码长两种场景,在相同信道条件下,相对于Turbo码,可以获得0.3~0.6dB的误包率性能增益,

    同时,华为还测试了极化码与高频段通信相结合,实现了20Gbps以上的数据传输速率,验证了极化码可有效支持ITU所定义的三大应用场景。

     

    (3)LDPC码概述

    LDPC是Low Density Parity Check Code英文缩写,意思是低密度奇偶校验码,

     

    (4)LDPC与Polar的比较

     

    第6章 速率匹配

    6.1 为什么需要速率匹配

    无线信道的质量随时变换的,而不是固定不变或事先确定的。不同的信道质量,调制解调的方式不同,无线信道质量越好,越可以采用高阶调制,且相同的RE时频资源,传输的数据速率越高。

    也就说,分配给用户的业务信道,即使是时频资源都不发生变化,通过其传输的数据速率也是根据业务信道的质量变化实时变化的。

    无线信道的传输速率,决定了单个TTI调度周期内,在该信道上传送的比特的数量。

     

    6.2 什么是速率匹配

    经过物理层信道分组和编码后的二进制比特流,并没有速率信息。

    速率匹配:就是根据物理层信道实时的传输速率,对MAC层数据块分组和编码后的二进制比特流,进行切割,以便符合物理层信道的速率要求,即切割成单个TTI调度周期内能够传送的比特数。而这种切割是每个TTI调度周期内都要进行。

     

    6.3 速率匹配的决定因素有:

    • 信道的质量: CQI
    • 信道的调制方式,BPSK, QPSK, xQAM
    • 子载波的带宽
    • 信道的带宽,即信道占用多少个子载波时频资源

     

    6.4 速率匹配的机制

     

    速率匹配采用的是一种循环缓冲buffer的机制,用于管理速率匹配的数据,同时能够支持数据重传缓存。

     

    第7章 交织/加扰

    7.1 无线信道检错纠错的局限

    在前面的描述中,可以知道,无线信道的检错和纠错能力,与一个因素有极大的关系:就是接收到比特的出错比特数。

    任何一种编码方式,出错比特的检错和纠错的能力是有限制的,当连续出错的比特超过编码能力的时候,就无法实现检错或纠错。

    这种情况下,就只能通过上层的控制逻辑,重新发送整个数据块来实现数据安全传输。

     

    7.2 无线信道的特征与降低出错率的方法

    有没有某种技术,能够降低数据在空口中传输的二进制比特的出错率呢?

    现有的降低比特出错的技术:

    • 比如提高信号的发射功率,提高信噪比。
    • 比如使用低阶的调制方式,增加容错能力,当然这种方式,是通过牺牲数据传输的比特来换取出错的比特的。
    • 降低数据发送的速率。

    这些方案的特点:

    • 确实能够减低二进制比特在空口中传输的出错率
    • 但也牺牲功率资源或牺牲了频谱资源,
    • 上述方案解决的是恒定干扰造成出错率问题。

    然而,无线信道有一种显著的特点,就是干扰有时候属于突发性的干扰:突然有一小段时间,有一个比较大的干扰。

    对于这样的干扰,上述的技术实际上是无法解决的。

    如何解决突发性的干扰呢?

     

    7.3 交织的来源和基本思想

    交织技术正是为了应对突发干扰而出现的。

    它同通过把突发性的、批量出错的二进制比特,分散到不同的数据块的分组中,从而降低分组块内比特出错的比特数,在结合纠错编码,完成对出错信息的纠错。

    该基本思想,有点类似于我军在整体收编国军时采用的策略:

    如果说被收编整个队伍中的每个军人是容易感到干扰的信号或二进制比特,那么为了防止整个收编军队中人员的失控,就需要把收编的人员,进行拆分,分散到我军的各个连队中(我军人员是不容易受到干扰的二进制比特)

    这样,即使是被整个收编的全部人员思想都是容易受干扰的,不坚定的,也会不会导致失控,最终会经过我军的政治思想工作(纠错编码),被纠正过来。

     

    7.4 交织编码的基本原理

    (1)交织矩阵

    发送端:经过物理层信道编码的二进制比特流,按照行行写入内存中,然后在按列读出来,这完成了二进制比特的交织。

    信号传输:交织后的二进制比特,通过突发干扰的信道进行传输。

    接收端:把收到的数据,列的方式写入,然后在按行的方式读出,完成了去交织的过程,发送突发干扰出错的比特块中的出错比特,被分散到接收到的数据流序列的各个地方,而不是连续出错。

    (2)交织示意图

    在上图中,连续出错的4个红色的方框,去交织后,出错的比特被分散到了4个不同的块中,每个块中,只有一个红色的出错方框。

    由于每个块,都经过纠错编码,都有纠错的能力,因此,即使在传输过程中,出现连续的出错比特,接收端也会比纠正过来。

     


    https://blog.csdn.net/qq_45108415/article/details/113809068

    https://blog.csdn.net/wo17fang/article/details/44155309

     

     

    展开全文
  • 香农在其著名的论文《A mathematical theory of communication》中提出了信道编码定理,在传输速率小于信道容量的情况下,可以通过编码非常高效的提高传输的可靠性。我们现在所说的信道编码主要指的是纠错编码,比如...

    481e40148230c933d2c17c9e352c3f25.png

    香农在其著名的论文《A mathematical theory of communication》中提出了信道编码定理,在传输速率小于信道容量的情况下,可以通过编码非常高效的提高传输的可靠性。我们现在所说的信道编码主要指的是纠错编码,比如卷积码,汉明码,Turbo码和LPDC码等等。本文主要研究在这些编码技术中比较常用的一种检验技术,即CRC。

    CRC技术也是通过增加信道的冗余来提高传输的可靠性,不但能够起到校验的作用同时也具备一定的纠错能力。CRC算法的实现是基于循环码的,其数学原理在于通过发射端信息做一个多项式除法,得到余数作为检验位,然后将其加入原始信息的后面。在接收端提取发射端的数据位然后做相同的求余运算,再将计算出的校验位和发送数据带有的检验位相对比,若相同则说明数据是正确的,若不同说明数据是错误的。下图展示了一个简单的CRC结构:

    d597bed354d0311f3b96a5cd27754a53.png

    前面说了CRC的原理是做除法取余数,这里就涉及了一个除法项,我们称之为生成多项式(Generator Polynomial),这个生成多项式是发送机和接收机两端约定好的一个二进制序列,在整个传输过程中保持不变。这个生成多项式同时满足如下几个条件:

    1. 最高位和最低为为1
    2. 当传输信息任何1位发生错误时,被其除后余数不为0
    3. 不同位数发生错误时,余数不同。
    4. 对于余数做除法,应使余数循环。

    这里我们以一个简单的CRC-4为例,来解释生成多项式的作用和CRC校验的原理:

    CRC-4的常用的一个生成多项式为:

    即10011,其求余过程如下图所示:

    513a3a368a78bc84cd0e862cdc593c01.png

    最后的发送数据就为:

    f33a3aa722753843644fb503eb183ec3.png

    其实现的Matlab代码如下:

    InputBits = [1 0 1 1 0 0 1 1 ];
    Poly =[1 0 0 1 1];%Poly多项式
    length_data=size(InputBits,2)      
    length_Poly=size(Poly,2)     
    for i=length_data+1:length_data+length_Poly-1                 
      InputBits(1,i)=0;
    end
    
    for i=1:length_data                 
      OutputBits(1,i)=InputBits(1,i);
    end
    %异或操作
    i=1;
    while(i<=length_data)                   
        for m=1:length_Poly                 
            if InputBits(1,i)==Poly(1,m)
                InputBits(1,i)=0;
            else InputBits(1,i)=1;
            end                            
            i=i+1;m=m+1;
        end
        i=i-1;
        for j=i-(length_Poly-1):i            %定位异或初始位置
            if InputBits(1,j)==0
                j=j+1;
            else break;
            end
        end
        i=j;
    end
    
    CRCout=zeros(1,length_Poly-1);                 
    for i=1:length_Poly-1
        CRCout(1,i)=InputBits(1,length_data+i);      %余数 即CRC码
        OutputBits(1,i+length_data)=CRCout(1,i);      %添加CRC
    end
    disp('output bits are :');
    OutputBits
    disp('CRC are :');
    CRCout           

    最终输出的结果为:

    42ea2e91bf23d8a407135d1f3143ca43.png

    和上面手算的相同。


    软件仿真结束后我们就可以开始使用硬件进行实现了,我个人实现的思路是通过状态机来实现上述matlab代码中的循环运算,首先设定一个数据位宽长度计数器width cont,每当进来一次有效的数据,判断其最高位是否为1,若否则左移一位width cont减1,找到其最高位为1的数据后进入下一个状态进行xor运算,在xor状态中将数据和poly 序列进行xor运算,随后在进入刚才的判断状态,找到最高位为1的位置,直到width cont < poly序列的长度时结束计算,然后保存余数,跳入等待下一个有效数据计算的状态。正当我兴致冲冲打算去码代码的时候,发现了一个神奇的网站可以直接生成CRC校验的代码。。。

    CRC Generation Toolwww.easics.com
    a7efebaa4473055a292dc764bc21584a.png

    只要选择好poly多项式和数据位宽就可以直接生成verilog代码,十分方便:

    8cf5d398835fd402e4d3b18a13386627.png

    生成代码如下:

      // polynomial: x^4 + x^1 + 1
      // data width: 24
      // convention: the first serial bit is D[23]
      function [3:0] nextCRC4_D24;
    
        input [23:0] Data;
        input [3:0] crc;
        reg [23:0] d;
        reg [3:0] c;
        reg [3:0] newcrc;
      begin
        d = Data;
        c = crc;
    
        newcrc[0] = d[23] ^ d[21] ^ d[19] ^ d[18] ^ d[15] ^ d[11] ^ d[10] ^ d[9] ^ d[8] ^ d[6] ^ d[4] ^ d[3] ^ d[0] ^ c[1] ^ c[3];
        newcrc[1] = d[23] ^ d[22] ^ d[21] ^ d[20] ^ d[18] ^ d[16] ^ d[15] ^ d[12] ^ d[8] ^ d[7] ^ d[6] ^ d[5] ^ d[3] ^ d[1] ^ d[0] ^ c[0] ^ c[1] ^ c[2] ^ c[3];
        newcrc[2] = d[23] ^ d[22] ^ d[21] ^ d[19] ^ d[17] ^ d[16] ^ d[13] ^ d[9] ^ d[8] ^ d[7] ^ d[6] ^ d[4] ^ d[2] ^ d[1] ^ c[1] ^ c[2] ^ c[3];
        newcrc[3] = d[23] ^ d[22] ^ d[20] ^ d[18] ^ d[17] ^ d[14] ^ d[10] ^ d[9] ^ d[8] ^ d[7] ^ d[5] ^ d[3] ^ d[2] ^ c[0] ^ c[2] ^ c[3];
        nextCRC4_D24 = newcrc;
      end
      endfunction
    

    这是个函数形式的代码,并且通过并行的形式直接可以计算出CRC的几个余数,效率简洁高效,我暂时还没看懂这个代码是什么原理,懂得大佬可以指点一下。

    随后在发射端只要进行一个简单的CRC编码:

        always @ ( * )
        begin
            crc_cal_data = CRC4_D24(adc_data[27:4],4'b0);
            tx_data  = {adc_data[27:4],crc_cal_data};
        end
    

    接收端校验使用的方法为:

        always @ ( * )
        begin
            crc_test_data = CRC4_D24(tx_data[27:4],4'b0);
            crc_rx_data  = tx_data[3:0];
    
            if ( crc_test_data  != crc_rx_data  )
                ccr_error = 1'b1;
            else
                ccr_error = 1'b0;
        end
    

    具体的仿真结果这里就没有做了,等有空再补上~

    参考文献

    [1] 王栋. 基于CRC的多比特纠错算法研究与实现[D].西安电子科技大学,2013.

    展开全文
  • #信道编码与交织 ##差错控制方式 在数字同通信控制系统中,利用纠错码或检错码进行差错控制的方式有三种:前向纠错、纠错重发、和混合纠错,它们的系统构成如下图所示: ###1、前向纠错控制方式 前向纠错方式(FEC...
  • 冗余,是了,但是始终缺乏定量的分析和严格的证明,越来越晕,一直不愿意看着逻辑性不同的信道编码了。 然后从信息论开始学起,慢慢地对简单信道(DMC)有了比较定量的理解,然后终于或多或少地明确了其中的线索。 ...
  • 3G移动通信的3大主流技术同时采用了卷积码和Turbo码两种纠错编码。在高速率、对译码时要求不高的辅助数据链路中,使用Turbo码以利用其优异的纠错性能。考虑到Turbo码的译码复杂度大...1.在3G的业务信道编码上  ...
  • 利用matlab的communication toolbox实现AWGN信道下采用QPSK调制和卷积码编码,然后接收端采用维特比译码并且采用硬判决的系统最终得到的误码率曲线,并且采用BERtool工具将其与理论值进行比较
  • 仿真未编码和进行(7,4)Hamming码的编码的QPSK调制通过AWGN信道后的误比特性能比较 %仿真未编码和进行(7,4)Hamming码的编码的QPSK调制通过AWGN信道后的误比特性能比较 clear all N = 100000; %信息比特行数 M = 4...
  • 编写程序,采用卷积编码、维特比译码(硬判决),BPSK调制解调,高斯白噪声的条件,仿真得到误码率随着信道信噪比变化的关系,结果如下图所示: 红色曲线为理论值,蓝色曲线为实际值。可以看到,实际的误码率值略...
  • matlab开发-ICI和ADED信道中2x2和4x4bpsk调制系统的比较研究。对于MIMO无线编码系统中的高天线系统,在误码率方面的影响较小
  • 多信道传输的背景 我们知道为了提高移动通信系统的性能可以采用信道均衡和信道编码来改进接收信号质量其中信道均衡用于补偿时分信道中由于多径效应而产生的码间干扰信道编码通过加入冗余的数据位来改 善通信链路的...
  • 详细仿真整个通信系统的过程,其中用到信道编码,交织纠错来对抗衰落信道,得出各种情况的比较图。
  • IEEE802.16标准和DVB-S2标准编码算法和BER性能比较,肖扬,,LDPC码已被IEEE802.16e标准和DVB-S2标准的信道编码所采纳,但是这两个标准采用了不同的编码算法使其在BER性能上有很大差异。DVB-S2标准采用
  • 1. 卷积编码增益性能、BER 信道环境:AWGN 信噪比SNR :0:0.1:6 MATALB仿真架构:源比特 +卷积码 +BPSK +AWGN +Viterbi +BER 说明:卷积编码,不同的R码率。不同的约束长度 2. Turbo增益性能、误码率 ...
  • 用基带等效的方式仿真8-DPSK载波调制信号在AWGN信道下的误码率和误比特率,并与理论值相比较。 代码实现如下: %8DPSK信号在AWGN信道下的传输性能 n = 100000; %每种信噪比下发送的符号数 M = 8; %8PSK信号的空间...
  • 实验三 信道建设

    2018-06-11 16:44:12
    实验的目的和要求了解信道的含义、信源编码的流程,熟练掌握整数、小数的十进制和二进制的互换机制,并能编程实现。考核要求熟悉并掌握十进制与二进制小数的互转机制,并分析算法产生的误差 实验内容:1、编写程序...
  • 1. 卷积码增益性能、误码率  信道环境:AWGN  信噪比SNR :0:0.1:6 ... 说明:卷积编码,不同的R码率,不同的约束长度 2. Turbo增益性能、误码率  信道环境:AWGN  信噪比SNR :-1:0.1:2  MATALB
  • 针对通信系统时变信道采用蒙特卡罗算法进行盲信道跟踪,并将该盲跟踪算法用于多天线信道及空时分组编码的情况,在相同的系统条件下与卡尔曼滤波跟踪算法进行了性能比较,并讨论了系统存在载波频偏情况下的跟踪性能。...
  • 针对MIMO系统信道的联合稀疏特性,提出一种基于分布式压缩感知(DCS)的MIMO-OFDM...将该算法与基于压缩感知理论的CoSAMP算法做比较,仿真结果表明,基于DCS算法的信道估计不仅性能更优,而且可以实现更低的时间复杂度。
  • 一次一密经典通信方式存在密钥丢失...在传输的过程中将待传输的信息0和1分别编码为计算基矢态|0>和|1>,这样在保证安全性的基础上可以不停地生成密钥,适用于大数据通信,同时此方案只需区分两种Bell态,实现起来比较容易。
  • 在IEEE 802.15.3a工作组提出的UWB信道模型下,研究了基于极性编码的基于IDMA OFDM的UWB系统的性能,并与基于BER的低密度奇偶校验(LDPC)编码的基于IDMA OFDM的UWB系统进行了比较。噪声模型下的性能和复杂性。 仿真...
  • 在密钥提取的过程中,通过引入哥德尔编码,减少了密钥序列的比较次数;在计算保密增强后的密钥长度时,考虑了水下噪声的不确定性,具有更强的实际意义。实验结果表明,在满足协议安全性的条件下,传输的总比特数为...
  • ldpc编码性能分析

    2011-12-07 16:10:53
    关于LDPC编码性能的分析,包括AWGN信道等多信道的仿真以及其结果比较

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 208
精华内容 83
关键字:

信道编码比较