Viterbi译码 问题:根据接收序列求解最可能的发送序列 11 10 11 00 11 00 11 例: 收到序列是: 求最可能的发送序列 已知条件: 卷积码的结构G=[7;5] 信息的长度是L=5比特+m=2tail bits 0始0终的路径
收端用所有5比特组合进行编码,将结 果同接收序列比较,纪录汉明距离。 汉明距离最小的就是最可能的发送序列。 苯办法 所有可能的发送结果有32种 收端用所有5比特组合进行编码,将结 果同接收序列比较,纪录汉明距离。 汉明距离最小的就是最可能的发送序列。 如果L很大,这种方法根本不能考虑。 计算量指数增长
思考:地图上的最短路径问题 从城市a到城市g的最短距离=?
从a到d有许多的路,群举搜索不是办法 不过 搜寻路径 到达g的前一站必然通过h、e、i。 问题求从a出发,到e、h、i最短路径和原 问题相同,只是地图变小了一些。 再往前推一站,地图更小。
每一种发送序列都是格图上的一条路径,它从0状态出发,最后到达0状态 11 10 00 10 10 00 00
发送序列与接收序列的距离就是汉明距离,它等于各支路距离之和 11 10 00 10 10 00 00 11 10 11 00 11 00 11
为了寻找最短路径,我们从第一站出发 11 10 11 00 11 00 11
第二站 11 10 11 00 11 00 11
第三站 11 10 11 00 11 00 11
第三站:保留到达各状态最短的路径 11 10 11 00 11 00 11
第四站 11 10 11 00 11 00 11
第五站 11 10 11 00 11 00 11
第六站 11 10 11 00 11 00 11
第七站 11 10 11 00 11 00 11
最终结果 11 10 11 00 11 00 11 11 10 11 00 11 10 11
Viterbi译码算法概要 一些定义 算法: 复杂度 称距离为度量,累积距离为累积度量,分支的距离为分支度量 称到达每步的累积度量最小的那个路径为幸存路径。 称全局最优路径为最大似然路径 算法: 每一步:用前一状态的幸存路径和本步的分支度量计算出 达到每个状态的累积度量,保留幸存路径。 从第一步开始执行此过程,到最后一步得到最优路径。 复杂度 每步需要比较8条路(每状态两条),计算量与步数成正比 苯搜的办法,计算量和步数成指数关系
截短译码 全部译完需要L+m个时钟周期,如果L很大,延迟可能 受不了。 注意到译到一定步数时,前面的路已经聚合了,故此 可以输出其结果。 如果没有聚合则以当前看上去最可能的路径(当前累 积度量最小的幸存路径),输出前面的比特。 当前看上去最佳的未必全局最优,因此会有少许性能损失 这种方法叫截短译码,它能加快译码速度,并能节约 内存。
关于Viterbi译码就是最大似然译码 首先,上述过程表明Viterbi算法得到的是所有可能路 径中离接收序列汉明距离最近的。 无论是否为卷积码,对于二进制编码及BSC信道,可 以确定,汉明距离最近的就是ML解。 发送码字c=[c1c2c3…cN],经过误码率为p的BSC信道成 为y=[y1y2…yN],似然概率是 d越小,似然概率越大
软判决译码 无论是否为卷积码,将汉明距改为欧氏距就是软译码 例如偶校验码,发送信息000,编码为0000,BSPK调 制后为 x=[-1,-1,-1,-1] 叠加噪声收到 y=[-1.3 -2.3 -0.2 +0.2] 硬判决结果为 0 0 0 1 不能断定发送的是什么 但如果观察判决前的软值y,则通过比较欧氏距离就能 断定发送的是0000。
自由距 所有0始0终的非全0路径中,最小的码重称为自由距, 记为df。该路径称为自由路径。 自由距表示:从任何一个节点岔开时,所形成的两条 路至少差多少距离。 自由距本质上代表卷积码的最小码距。但严格说是不 相同的。 码距是对两个等长的码字定义的 卷积码的长度可以任意 任意截取一段有可能截在自由路径中间。 如同分组码的dmin,卷积码的设计应该使df尽可能大。
交织 交织就是打散次序,例如 原序列:a1a2a3a4a5a6a7a8 交织后: a7a1a3a6a2a5a4a8 交织的用途之一是打散突发错(先前所学的编码大部 分对突发错无能为力) 发端把多个码字交织后发送 在信道中遇到突发错 收端反交织为多个码字 效果是:发端没有采用交织,但信道错误的次序被打乱了
a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 常用的交织器:分组交织(块交织) 按行写入,按列读出 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21 a22 a23 a24 a25
编码调制(coded modulation) 编码能降低错误率,但增加的冗余使频带利用率降低 高阶调制使频谱效率变高,但误码率下降 编码调制是二者的有机结合,其目的是 高频频谱效率(相对于BPSK) 低误码率(相对于单纯的高阶调制) 思路(以8PSK为例) 8PSK的每个比特把8个星座点分成不同集合。第1个比特分 为4+4,第2个比特在4中分为2+2,第3个比特在2中选一个 适当设计分割方法,则不同比特的引起的欧氏距里不同 对不同欧氏距离的比特使用不同冗余的编码 根本:在于星座冗余
8PSK的子集划分:第一个比特分出两个QPSK
第二个比特把QPSK分成两个BPSK
第3个比特:从BPSK中选出一个点
码的改造 出于各种原因(码率、码长等)需要对原设计的码进 行简单改造。 缩短 加长 Pucture 固定某些输入的信息比特,系统码编码结果的部分比特也 将固定。对收端已知的内容不用发,因此码就变短了。 加长 级联将使码变长。比如(7,4)的结果再进行偶校验编码成为 (8,4) Pucture 打掉某些编码比特,则码率变高。
其它 级联码 Turbo码 LDPC码 Turbo码、LDPC码的译码本质上都是在计算概率。 只要码足够长,任意的设计几乎都是好码。但译码复杂度 太高。 解决方法是用可译的短码以串联或者并联等方式构成级联 码。一个短码单独译码,译码结果给另一个再译 Turbo码 Turbo码是两个卷积码的并行级联,其译码以反复迭代的方 式进行。 LDPC码 LDPC码可以看成是重复码和偶校验码的级联,再把重复的 系统位puncture掉。译码也是迭代译码。 Turbo码、LDPC码的译码本质上都是在计算概率。