讲座--Turbo 纠错码的原理性能和应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hale Waihona Puke Baidu
7. 汉明距离(Hamming Distance) 任何两个 m 比特序列之间都有汉明距离,等于不同比特(或符号)的总和。例如,序列 0110100 和 0101010 之间的汉明距离为 4, 实际上等于两个序列异或(0011110)后 1 的个数。 ECC 研究的主要内容就是寻找具有大的最小汉明距离的编码, 以便没有两个输出码字之间的 汉明距离比那个值更靠近。最小距离越大,越容易区分两个码字,也就最有希望得到更好的 编码。 众所周知,只有在大的 S/N 下,编码的最小距离特性才至关重要。Turbo 码把注意力重 新集中在低 S/N 时的性能上,更多地依赖于编码的分布,而非其本身的最小自由距离。 8. 解码算法(Decoding Algorithm) 卷积码有一个好的特性就是可以有多种解码方法, 其中最著名的是维特比算法(Viterbi Algorithm,VA),它是基于码的网格(Trellis)的一种最大似然序列估计(Maximum Likelihood Sequence Estimation,MLSE)算法。对于约束长度为 K=m+1 的卷积码,VA 算法 是一种最佳的概率解码算法。 最大后验解码(Maximum A Posteriori,MAP)是另一种解码算法,在给定 S/N 下,采用 MAP 比采用 MLSE 使误码率(BER)更小。原因在于 MAP 解码是基于比特到比特的处理,而其它 算法是基于序列到序列的处理。 当接收序列中存在误码时, 两种算法通常产生不一样的结果。 即使是最高效的 MAP 解码算法,其计算量也是 VA 算法的两倍左右。因此,VA 算法得到了更 广泛的应用。Turbo 码解码既可以使用 MLSE 算法,也可以使用 MAP 算法。 9. 软输入/软输出解码(Soft-input/Soft-output Decoder) 为了充分利用 Turbo 码的优点,为 Turbo 解码开发了传统MLSE 和 MAP 算法的特殊版 本,称之为软输入/软输出。 假如信道解码器的输入是解调器产生的二元矢量,对于二元调制,例如 BPSK,解调器 判断信号相位属于+1(比特值 1)或者-1(比特值 0)。如果解调器得到如此明确的 0 或 1 二 元判决,称之为硬判决解调,它不能为解码器提供额外的信息。软判决解调则是把解调器的 m 输出量化为 2 个电平,m 一般是 3 或 4。对于 m 比特量化,一个比特用于判决符号,m-1 个 比特用于信号幅度。在符号比特正确时,幅度越大,可信度越高。利用软判决解码,对 S/N 的需求比单独硬判决大约减少 2dB。大于 3 比特的量化,获得的额外好处将越来越少。 传统的 MLSE 和 MAP 解码算法既能接受硬判决, 也能接受软判决, 但是通常输出硬判决。 Turbo 码使用软输入/软输出,原来的硬判决输出变为软判决输出。其关键用途是把第一个 解码器的软输出送给后面的第二个解码器, 作为它的软输入。 最后一个解码器的软输出反馈 为第一个解码器的软输入, 从而提供迭代解码的可能性。 这使 Turbo 码可获得更多的编码增 益。采用迭代解码,系统不需要复杂的支路编码(例如约束长度 K=5),就可逼近香农极限性 能。 10. 级联和乘积码(Concatenated and Product Code) 将一个编码器的输出馈送给另一个编码器, 如此编码组合称之为级联码。 在通信系统中, 长久以来特别青睐于串行级联码。典型的应用是 m 比特的 RS 分组码(外码)后面跟随二进制 卷积码(内码)和可选的交织码。 图 3 示出内码和外码的典型构成, 较简单的码级联获得的性 能要高于更复杂的单一码。 衰弱信道中常常发生突发误码, 可选的交织器能够离散连续的突 发误码。 卷积解码接受软输入, 并提供硬判决输出给 RS 解码器, RS 输出最终的硬判决结果。 当卷积解码器遇到一个误码时, 此误码通常伴随另外几个误码(共约 K 个)。 卷积码输出 的每 M 比特构成一个单一的符号,送给 RS 解码器,由之对一个符号块(一般为 255 个符号) 解码,它能校正其中 N 个符号误码。一般根据信道特性选择 N 值大小。例如,如果有 L 个突
图 1 所示为一个典型的数字通信系统。为了选择合适的组成部分,需要考虑信道类型、 噪声和干扰的影响。在发送端,源编码器对输入的信号进行处理,使传输的数据量最小。 在接收端,解码器把处理的信号恢复为原始信号。在大多数应用中,在接收端为去除传 输过程中产生的误码,需要进行信道编码,它完成纠错功能。纠错方式有很多种。如果接收 端检测到误码,可以通过回传信道发送一个重传请求,称为自动重传请求(ARQ),其优点是, 当前向信道和反向信道可靠时,ARQ 能将用于误码控制的带宽减到最小。但在许多情况下, 反向信道是不可靠的、昂贵的,或者系统不能容忍 ARQ 引入的延时,此时纠错方式只能基于 前向信道。 在发送端,前向纠错(FEC)在码流中添加冗余信息,以便接收端能单方面地检测和校正 传输误码。 最简单的方案是每个比特重复传送 N 次, 接收端通过大数判决准则来判定传输的 每个比特。这看起来有点矛盾,信源编码最大限度地去除冗余信息,而信道编码又使信息冗 余度大大增加, 但两者的冗余度是不相等的。 重复 N 次的方式固然简单, 但编码效率非常低。 当采用更高效的 FEC 后,增加的冗余度能够带来巨大的系统增益。 FEC 技术增加了系统的冗余度,而频谱资源又是有限的,因此,对于带宽受到严格限制 的应用,FEC 只能和更高效的调制一起使用。 二 纠错编码的基本概念
1. 编码码率(Code Rate) 纠错编码的最基本特性是它的编码码率。一个(n, k)编码器接收 k 比特输入数据,对其 进行纠错编码,产生 n 比特输出,则编码码率为 k/n。信道纠错编码的目的是添加足够的冗 余信息,以便校正传输误码,因此编码码率通常小于 1。编码码率一般为整数比,例如 1/4、 1/2、2/3、3/4 和 7/8 等。Turbo 码的编码码率也是如此。 2. 线性分组码(Linear Block Code) 许多纠错编码方案把输入数据分成组(通常称为数据帧), 每个分组独立编码, 相互之间 没有关联。 简单的二进制矩阵运算 y=xG 表示线性分组码操作(x 为二进制输入的信息比特矢 量,G 为二进制生成矩阵,y 为二进制输出矢量)。矩阵运算采用模 2 算术,x、G 和 y 的维 数分别是 1×k、k×n 和 1×n。输入比特 k 和分组长度 n 的典型值是 8~256。 编码通过线性运算(矩阵乘法)把输入的 k 比特数据块变换为输出的 n 比特数据块, 因而 称之为线性分组码。
Turbo 纠错码的原理、性能和应用——第一讲 门爱东 本讲座撰写人门爱东先生,北京邮电大学副教授。
纠错编码基础
1948 年,香农(Claude E Shannon)的论文《通信的数学理论》奠定了现代数字通信的 基础。他论证了要实现可靠的信息传输,每个信道有一个最大的传输容量。在信道容量之内 传输,即使采用“一般”的数据编码,也能够可靠地通信。而超过信道传输容量进行传输, 即使采用“最好”的编码,通信也是不可靠的。但此结论有三个基本条件:(1)采用随机编 解码方式;(2)编译码的码长 L→∞;(3)解码采用最佳的最大后验译码。因此,寻求“更好” 的编码方法是现代数字通信研究的重要方面,并由此诞生了纠错编码技术(ECC)。 1993 年,Claude Berrou 等人在纠错编码研究中取得重大突破,发表了《接近香农极限 的纠错编解码:Turbo Code》。在加性高斯白噪声(AWGN)信道中,Turbo 码距离香农极限在 0.7dB 之内,而其它同等复杂度的纠错编码为 2dB 或更多。虽然 Turbo 码不是 ECC 的终结, 但它拓展了人们的视野,影响了许多应用,特别是那些传统上使用 ECC 技术的应用。 为更好地理解 Turbo 码,我们先回顾一下纠错编码的一些基础知识。 一 通信系统中的误码纠错
分组码有许多种,其中最著名的分组码有汉明(Hamming)、Golay、BCH (Bose-Chaudhuri-Hocquenghem)和里德—所罗门(RS)码。Turbo 码是一种新的线性分组码, 但它更像一个混合体,非常依赖于下述卷积编码。 3. 系统码(Systematic Code) 系统码(SC)是输入矢量 x 无变化地直接输出到输出端, 而校验比特附加在输入信息比特 之后。对于系统分组码,输出矢量 y 首先是来自输入 x 的 k 个比特,随后是(n-k)个校验比 特, 因此 y={x c}, 其中 c 是校验比特行矢量 1×(n-k)。 对于非系统码(Non-Systematic Code, NSC),y 的所有输出比特是比输入比特更复杂的函数。Turbo 码是系统码。 4. 卷积码(Convolutional Code) 不像分组码中校验比特只和当前的分组码有关, 卷积码不仅和当前输入比特有关, 而且 和以前的输入比特有关。当每 k 个输入比特到达时,码率为 k/n 的卷积码编码器就立即产 生 n 个比特输出,不像分组码要等待一个完整的输入比特块。因此,卷积码引入的数据处理 时延要小于分组码。 卷积编码器有三种形式:系统码、非系统码和循环系统码(RSC),如图 2(编码码率为 1/2)。 图中二进制移位寄存器保存输入码流的过去值, 当前输出比特是过去输入比特的线性 组合。因此,常用寄存器多少(m)或约束长度(k=m+1)来描述卷积码。约束长度表示有多少个 输入值影响当前输出值。 SC 码(图 2a)把输入数据直通到输出端,同时利用过去输入值的线性组合生成校验位。 NSC 编码器(图 2b)生成两个线性组合码流。RSC 编码器(图 2c)结合其它两个的特点,它反 馈回两个线性组合之一,并且把反馈码流和输入码流相加。 每种编码器各有其优缺点, 不过 NSC 码通常优于非循环系统码, RSC 码通常和 NSC 一样, 但采用图 2c 中 RSC 的 Turbo 码最好。 图 2 中所有编码器都使用了三个延时单元,因此 m=3、k=4。可以用二进制或八进制符 号描述生成多项式或寄存器抽头。因为增加了另外的前馈计算(图 2b)和反馈计算(图 2c), 因此它们需要两个生成器。 图 2a 和图 2c 中的系统码把输入码流直通给输出, 同时生成校验 码流。两个码流中的每个比特轮流传送,使之复接成一个码流。 虽然卷积码本身不是分组码, 但在某种情况下可以视为分组码。 一般的做法是把编码寄 存器清零(代替输入数据), 从而强迫编码器进入已知状态(全零状态)。 通过这个已知状态和 已知分组长度,解码器就能够知道分组边界。因此,在仍然采用分组结构的同时,发挥了卷 积码的优点。 Turbo 就是如此。 但一个更重要的原因是, 这样便于对每个分组进行迭代解码。 5. 增信删余码(Puncturing) 在一些情况下,需要提高编码码率,但又不致于使解码器太复杂,这是一个增信删余的 过程,称之为增信删余码。增信删余码的基本原理与分组码大致相同,通过简单地删除某些 特定位置的输出值而达到增信删余的目的;在接收端,再用特定的码元在这些位置上填充, 然后输入解码器。Turbo 码常常使用增信删余码。 6. 交织器(Interleaver) 交织器是按照预定的方式改变一个数据序列的顺序。 矩形交织器是最简单的一种, 并且 针对固定长度的数据块工作。输入码流按行写到一个 M×N 的矩形存储阵列中,然后按列从 中读出,就得到扰序码流。当然,可以其它预先定义的方案代替矩形方式,可能获得更好的 交织效果,例如沿着对角线方式、卷积交织方式等。 对于 Turbo 码,伪随机交织器是更好的选择,这样能得到最佳纠错性能,同时增加了交 织深度。伪随机交织器采用固定、随机的图案对数据扰序,有时称之为均匀交织器,因为不 像矩形交织器,它们是均匀地(随机的)把输入数据传送给输出。
相关文档
最新文档