1.Turbo码:

信道编码的初期:分组码实现编码,缺点有二:只有当码字全部接收才可以开始译码,需要精确的帧同步时延大,增益损失多

解决方案:卷积码:充分利用前一时刻和后一时刻的码组,延时小,缺点:计算复杂度高

Turbo码,依靠迭代译码解决计算复杂性问题,通过在编译码器中交织器和解交织器的使用,有效地实现随机性编译码的思想,通过短码的有效结合实现长码,达到了接近Shannon理论极限的性能(在两个分量译码器之间迭代译码)

缺点:时延问题。

百科结论:Turbo码采用反馈卷积码是为了获得更大的交织增益;Turbo码的性能主要取决于它的有效自由距离;Turbo码在低信噪比下具有近Shannon界纠错能力的原因;自由距离较低引起Turbo码在中信噪比下出现纠错平台现象等等。

在信噪比较低的高噪声环境下性能优越(信道条件差的移动通信系统中有很大的应用潜力),而且具有很强的抗衰落、抗干扰能力

Turbo码引起超乎寻常的优异译码性能,可以纠正高速率数据传输时发生的误码。在直扩(CDMA) 系统中采用Turbo 码技术可以进一步提高系统的容量。

在短帧情况下的仿真结果表明短交织Turbo码在AWGN信道和Rayleigh衰落下仍然具有接近信道容量的纠错能力

提出背景:在加性白高斯噪声的环境下, 采用编码效率R=1/2、交织长度为 65536的Turbo码,经过18次迭代译码后,在 Eb/N0=0.7dB时, 其误码率到达10-5,与香农极限只相差0.5dB。

2.Turbo码理解:

将两个简单分量码通过伪随机交织器并行级联来构造具有伪随机特性的长码,并通过在两个软入/软出(SISO)译码器之间进行多次迭代实现了伪随机译码。

交织:在实际应用中,比特差错经常成串发生,这是由于持续时间较长的衰落谷点会影响到几个连续的比特,而信道编码仅在检测和校正单个差错和不太长的差错串时才最有效(如RS只能纠正8个字节的错误)。

为了纠正这些成串发生的比特差错及一些突发错误,可以运用交织技术来分散这些误差,使长串的比特差错变成短串差错,从而可以用前向码对其纠错。

伪随机特性:频谱会因数据出现连“1”和连“0”而包含大的低频成分,不适应信道的传输特性,也不利于从中提取出时钟信息。解决办法之一是采用扰码技术,使信号受到随机化处理,变为伪随机序列

扰码不但能改善位定时的恢复质量,还可以使信号频谱平滑,使帧同步和自适应同步和自适应时域均衡等系统的性能得到改善。

3.Turbo码的编码结构:

三种:并行级联卷积码PCCC,串行级联卷积码SCCC,混合级联卷积码结构HCCC。

3.1并行级联卷积码结构:

是由两个反馈的系统卷积编码器通过一个交织器并行连接而成,编码后的校验位经过删余阵,从而产生不同的码率的码字。

分量编码器:分量码的最佳选择是递归系统卷积码:

Turbo码编码器一般包括两个结构相同的递归系统卷积编码器和一个随机交织器。长度为N的信息序列u一方面直接进入第1个分量编码器RSC1,另一方面经过随机交织器处理后送入第2个分量编码器RSC2。随机交织器的处理是输入序号至输出序号的一映射,它的输出为长度相同,但比特位置经随机排列的交织序列。两个分量编码器RSC1和RSC2分别产生两个不同的校验比特序列xx。为了提高Turbo码的码率,除可以选用高码率的分量码外,还可以采用打孔(Puncturing)技术从这两个校验序列中删除一些校验位,然后再与信息序列x复用在一起输出。

递归系统卷积码:BER性能在高信噪比好,高码率(R≥2/3)的情况下,对任何信噪比,它的性能均比等效的高码率(R≥2/3)的情况下,对任何信噪比它的性能均比等效的非系统卷积码NSC要好,

递归系统卷积码(RSC)不同于一般的卷积码器在于其结构中不仅有向前结构,还有向后反馈结构:

RSC 编码器一般有2-5 级移位寄存器

Turbo 码在高信噪比下的性能主要由它的自由距离所决定。因为Turbo码的自由距离主要由重量为2的输入信息序列所产生的码字间的最小距离所决定,用本原多项式作为反馈连接多项式的分量编码器所产生的码字的最小重量为最大,因此当Turbo码交织器的大小给定后,如果分量码的反馈连接多项式采用本原多项式,则Turbo码的自由距离会增加,从而Turbo码在高斯信噪比情况下的“错误平层(errorfloor)”会降低。错误平层效应指的是在中高信噪比情况下,误码曲线变平。

3.2交织器的设计

作用:可以使得Turbo码的距离谱细化,即码重分布更为集中。

交织器实际上是一个一一映射函数,作用是将输入信息序列中的比特位置进行重置,以减小分量编码器输出校验序列的相关性和提高码重。通常在输入信息序列较长时可以采用近似随机的映射方式,相应的交织器称为伪随机交织器。

交织:交织是对信息序列加以重新排列的一个过程。如果定义一个集合A , A={1,2,…,N}。则交织器可以定义为一个一一对应的映射函数π(A-->A):J=π(i),(i,j属于A) 这里的i ,j 分别是未交织序列C 和交织序列C' 中的元素标号。映射函数可以表示为πN = (π⑴,π⑵,π⑶,…,π(N))。

有三原则:

最大程度的置乱原来的数据排列顺序,避免置换前相距较近的数据在置换后仍然相距较近,特别是要避免相邻的数据在置换后仍然相邻

尽量提高最小码重码字的重量和减小低码重码字的数量;尽可能避免与同一信息位直接相关的两个分量编码器中的校验位均被删除

对于不归零的编码器,交织器设计时要避兔出现"尾效应" 图案。

交织器和分量码的结合可以确保Turbo码编码输出码字都具有较高的汉明重量。在Turbo编码器中交织器的作用是将信息序列中的比特顺序重置。当信息序列经过第一个分量编码器后输出的码字重量较低时,交织器可以使交织后的信息序列经过第二个分量编码器编码后以很大的概率输出较高重码字,从而提高码字的汉明重量:同时好的交织器还可以奇效地降低校验序列间的相关性

内置交织器:

Turbo码内置的交织器是在第2个分量编码器RSC2编码处理之前将信息序列的N个比特的位置进行随机排列,它起着关键的作用,很大程度上影响着Turbo码的性能。通过随机交织,使得编码由简单的短码得到了近似长码。当交织器充分大时,Turbo码就具有近似于随机长码的特性。

4.迭代译码

Turbo码译码器采用迭代译码方法,其中使用两个分量译码器,并在第一分量译码器与第二分量译码器之间传递软译码信息,如图3-35所示。无冲突交织器支持并行译码的主要原理是:在进行迭代译码时,第一分量译码器将信息序列进行分段,每个分段使用单独的一个专用的译码处理单元独立地进行译码,各分段译码过程可以并行进行,提高译码速度。但是第二分量译码器也需要采用相同的、并行的分段译码方法,这就要求第二分量译码器的每个独立专用的译码处理单元同一时刻访问不同的分段,这样才能避免信息序列分段地访问冲突,从而实现第二分量译码器的并行分段译码,提高整个迭代译码的速度。

图3-36所示为无冲突交织器的示意图,4个窗口(Windows)A、B、C、D分别代表独立的分段译码,它们需要通过交织器获取各自的原始数据,此时4个窗口A、B、C、D在读取原始数据时,不会出现在同一时刻访问同一分段,不会发生资源访问冲突的问题,这样保证了4个窗口A、B、C、D可以并行地分段译码。

5.译码原理

Turbo码的译码算法采用了最大后验概率算法:译码时首先对接收信息进行处理,两个成员译码器之间外部信息的传递就形成了一个循环迭代的结构。由于外部信息的作用,一定信噪比下的误比特率将随着循环次数的增加而降低。但同时外部信息与接受序列间的相关性也随着译码次数的增加而逐渐增加,外部信息所提供的纠错能力也随之减弱,在一定的循环次数之后,译码性能将不再提高。

在译码的结构上又做了改进,再次引入反馈的概念,取得了性能和复杂度之间的折衷。

译码算法:MAP-Log-MAP算法、Max-Log-MAP以及软输入软输出(SOVA)算法。

特点:串行级联、迭代译码、在迭代译码过程中交换的是外部信息

5.1译码算法

软输入软输出的译码算法。软输出译码器的输出不仅应包含硬判决值

标准MAP算法

是对bahl软输出算法做一定修正后,通过除以先验分布来消除正反馈的算法。对于约束长度为M 1的卷积码,其运算量为每比特6x3^M次乘法和5x2^M次加法。由于乘法运算量大,限制了
译码的规模和速度

Log-MAP算法

实际上就是对标准MAP算法中的似然全部用对数似然度来表示,这样,乘法运算变成了加法运算。总的运算量成为6x2^M次加法,5x2^M次求最大运算和5x2^M次查表。

Max-Log-MAP算法

是在上述对数域的算法中,将似然值加法表示式中的对数分量忽略,是似然加法完全变成求最大值运算,这样除了省去大部分的加法运算外,最大的好处是省去了对信噪比的估计,使得算法更稳健

信息论-Turbo码学习的更多相关文章

  1. Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结

    2017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash--系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度.唯品会.58同城.新浪微博.趣分 ...

  2. jQuery源码学习感想

    还记得去年(2015)九月份的时候,作为一个大四的学生去参加美团霸面,结果被美团技术总监教育了一番,那次问了我很多jQuery源码的知识点,以前虽然喜欢研究框架,但水平还不足够来研究jQuery源码, ...

  3. MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)

    前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...

  4. MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)

    前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...

  5. MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)

    前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...

  6. MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)

    前言:最近一段时间在学习MVC源码,说实话,研读源码真是一个痛苦的过程,好多晦涩的语法搞得人晕晕乎乎.这两天算是理解了一小部分,这里先记录下来,也给需要的园友一个参考,奈何博主技术有限,如有理解不妥之 ...

  7. 我的angularjs源码学习之旅2——依赖注入

    依赖注入起源于实现控制反转的典型框架Spring框架,用来削减计算机程序的耦合问题.简单来说,在定义方法的时候,方法所依赖的对象就被隐性的注入到该方法中,在方法中可以直接使用,而不需要在执行该函数的时 ...

  8. ddms(基于 Express 的表单管理系统)源码学习

    ddms是基于express的一个表单管理系统,今天抽时间看了下它的代码,其实算不上源码学习,只是对它其中一些小的开发技巧做一些记录,希望以后在项目开发中能够实践下. 数据层封装 模块只对外暴露mod ...

  9. leveldb源码学习系列

    楼主从2014年7月份开始学习<>,由于书籍比较抽象,为了加深思考,同时开始了Google leveldb的源码学习,主要是想学习leveldb的设计思想和Google的C++编程规范.目 ...

  10. 【iScroll源码学习04】分离IScroll核心

    前言 最近几天我们前前后后基本将iScroll源码学的七七八八了,文章中未涉及的各位就要自己去看了 1. [iScroll源码学习03]iScroll事件机制与滚动条的实现 2. [iScroll源码 ...

随机推荐

  1. Java中接口的实现问题

    1.Java 接口的访问权限 interface A{}//接口A包访问权限 public interface A{}//接口A公有访问 interface A{ void function1(): ...

  2. Apizza可以进行本地调试,也可以进行跨域调试,但是需要chrome插件

    装Apizza Chrome插件   1 1. 进入Apizza官方网站.注册账号,进入控制台,可以看到提示安装chrome插件 2. 进入google app商店,搜索apiano 找到对于插件安装 ...

  3. Web服务器异常问题记录

    1.使用命令,出现"-bash: 命令: Input/output error" 重启服务器后正常,网上查了下是说硬盘写入读取异常,经过和服务器厂商沟通后,确认是硬件问题导致(硬盘 ...

  4. HDU 4122

    Alice's mooncake shop Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  5. awk与cut在以空格为分割域时的区别

    awk默认以空格为分割域,比如我想获得某进程pid:[root@SHCTC-GAME12-44 ~]# ps -ef|grep "sshd -f"|grep -v greproot ...

  6. JVM学习(一)

    一.gc日志查看与分析 在sever端的run.xml中run和debug中加入如下参数: <jvmarg value="-XX:+PrintGCDateStamps"/&g ...

  7. 如何解决jQuery easyui中locale文件下easyui-lang-zh_CN中文乱码问题

    1.在保存eclipse项目的目录下找到引入easyui-lang-zh_CN.js 2.用记事本打开该js文件,若打开后的中文正常,直接复制,粘贴到项目中的该js文件中,保存 3.若打开后中文出现乱 ...

  8. 学习Javascript数据结构与算法(第2版)笔记(1)

    第 1 章 JavaScript简介 使用 Node.js 搭建 Web 服务器 npm install http-server -g http-server JavaScript 的类型有数字.字符 ...

  9. 全球排名第一的免费开源ERP Odoo 12产品上海发布会报名开始

    Odoo V12 产品上海发布会暨企业数字化转型论坛 点击进入活动报名通道 高成本的软件开发,耗时的系统安装,繁琐的操作培训… 这一系列问题都是企业数字化管理的痛点, "软件"成为 ...

  10. [20180403]访问dba_autotask_task无输出问题.txt

    [20180403]访问dba_autotask_task无输出问题.txt --//链接http://www.itpub.net/thread-1911421-1-1.html的讨论,还没注意原先的 ...