28
Viterbi 译译 译译译译译译译译译译译译译译译译译译 译译译译译11 10 11 00 11 00 11 译译译译译译译译译 译译译译 译译译译译译 G=[7;5] 译译译译译译 L=5 译译 +m=2tail bits 0 译 0 译译译译

Viterbi 译码

  • Upload
    rusti

  • View
    137

  • Download
    0

Embed Size (px)

DESCRIPTION

Viterbi 译码. 问题: 根据接收序列求解最可能的发送序列 例: 收到序列是: 11 10 11 00 11 00 11 求最可能的发送序列 已知条件: 卷积码的结构 G=[7;5] 信息的长度是 L=5 比特 + m=2tail bits 0 始 0 终的路径. 苯办法. 所有可能的发送结果有 32 种 收端用所有 5 比特组合进行编码,将结果同接收序列比较,纪录汉明距离。 汉明距离最小的就是最可能的发送序列。 如果 L 很大,这种方法根本不能考虑。 计算量指数增长. 思考:地图上的最短路径问题. 从城市 a 到城市 g 的最短距离 = ?. - PowerPoint PPT Presentation

Citation preview

Page 1: Viterbi 译码

Viterbi译码问题:根据接收序列求解最可能的发送序列

例:收到序列是:

11 10 11 00 11 00 11求最可能的发送序列已知条件:

卷积码的结构 G=[7;5]信息的长度是 L=5比特+m=2tail bits0 始 0 终的路径

Page 2: Viterbi 译码

苯办法所有可能的发送结果有 32种收端用所有 5 比特组合进行编码,将结果同接收序列比较,纪录汉明距离。

汉明距离最小的就是最可能的发送序列。如果 L很大,这种方法根本不能考虑。

计算量指数增长

Page 3: Viterbi 译码

思考:地图上的最短路径问题

e

4.5a b

c

df

h5.5

8

4

4

4

6.45

7

6 i

g

2

4

6 2

2

从城市 a到城市 g的最短距离=?

Page 4: Viterbi 译码

搜寻路径从 a到 d 有许多的路,群举搜索不是办法

不过到达 g 的前一站必然通过 h、 e 、 i 。如果知到了到达 h、 e 、 i 的最短路径,则原问题易解。

问题求从 a 出发,到 e 、 h、 i 最短路径和原问题相同,只是地图变小了一些。

再往前推一站,地图更小。

Page 5: Viterbi 译码

每一种发送序列都是格图上的一条路径,它从 0 状态出发,最后到达 0 状态

00 00

10

11

00 00

01

10 10

01

11 11

00 00

01

10 10

01

11

00 00

01

00

11

10

01

10

00

10

01

11 10 00 10 10 00 00

Page 6: Viterbi 译码

发送序列与接收序列的距离就是汉明距离,它等于各支路距离之和

00 00

10

11

00 00

01

10 10

01

11 11

00 00

01

10 10

01

11

00 00

01

00

11

10

01

11

00

10

01

0

0 2 1

0

0 2

总距离是5

11 10 11 00 11 00 11

11 10 00 10 10 00 00

Page 7: Viterbi 译码

为了寻找最短路径,我们从第一站出发

00 00

10

11

00 00

01

10 10

01

11 11

00 00

01

10 10

01

11

00 00

01

00

11

10

01

11

00

10

01

0

2

11 10 11 00 11 00 11

Page 8: Viterbi 译码

第二站

00 00

10

11

00 00

01

10 10

01

11 11

00 00

01

10 10

01

11

00 00

01

10

01

11

00

10

01

0

2

11

00 1

1

0

2

2

3

3

0

累积距离

11 10 11 00 11 00 11

Page 9: Viterbi 译码

第三站

00

10

00 00

01

10 10

01

11

00 00

01

10 10

01

11

00 00

01

10

01

11

10

01

0

2

11

001

1

0

2

2

3

0

2

0

02

5

1

1

1111

1

1 3

4

3

4

00

11 10 11 00 11 00 11

Page 10: Viterbi 译码

第三站:保留到达各状态最短的路径

00

10

00 00

01

10 10

01

11

00 00

01

10 10

01

11

00 00

01

10

01

11

10

01

0

2

11

001

1

0

2

2

31

0

2

0

02

5

1

1

1111

1

1 3

4

3

4

00

11 10 11 00 11 00 11

Page 11: Viterbi 译码

第四站 11 10 11 00 11 00 11

Page 12: Viterbi 译码

第五站 11 10 11 00 11 00 11

Page 13: Viterbi 译码

第六站 11 10 11 00 11 00 11

Page 14: Viterbi 译码

第七站 11 10 11 00 11 00 11

Page 15: Viterbi 译码

最终结果

11 10 11 00 11 00 11

11 10 11 00 11 10 11

Page 16: Viterbi 译码

Viterbi译码算法概要 一些定义

称距离为度量 , 累积距离为累积度量 , 分支的距离为分支度量 称到达每步的累积度量最小的那个路径为幸存路径。 称全局最优路径为最大似然路径

算法: 每一步:用前一状态的幸存路径和本步的分支度量计算出达到每个状态的累积度量,保留幸存路径。

从第一步开始执行此过程,到最后一步得到最优路径。 复杂度

每步需要比较 8 条路(每状态两条),计算量与步数成正比 苯搜的办法,计算量和步数成指数关系

Page 17: Viterbi 译码

截短译码 全部译完需要 L+m个时钟周期,如果 L很大,延迟可能受不了。

注意到译到一定步数时,前面的路已经聚合了,故此可以输出其结果。 如果前面已经聚合,ML路径必然也经过聚合部分

如果没有聚合则以当前看上去最可能的路径(当前累积度量最小的幸存路径),输出前面的比特。 当前看上去最佳的未必全局最优,因此会有少许性能损失

这种方法叫截短译码,它能加快译码速度,并能节约内存。

Page 18: Viterbi 译码

关于 Viterbi译码就是最大似然译码 首先,上述过程表明 Viterbi算法得到的是所有可能路径中离接收序列汉明距离最近的。

无论是否为卷积码,对于二进制编码及 BSC信道,可以确定,汉明距离最近的就是ML解。

发送码字 c=[c1c2c3…cN],经过误码率为 p 的 BSC信道成为 y=[y1y2…yN],似然概率是

1 2 1 2

1

| |

| 1

11

N N

NN dd

i ii

dN

P P y y y c c c

P y c p p

pp

p

y c

d 越小,似然概率越大

Page 19: Viterbi 译码

软判决译码 无论是否为卷积码,将汉明距改为欧氏距就是软译码 例如偶校验码,发送信息 000,编码为

0000 , BSPK调制后为x

叠叠叠叠叠叠y=[

叠叠叠叠叠叠

叠 叠叠叠叠叠叠叠叠叠叠 叠叠叠叠叠叠叠叠叠叠叠 y 叠叠叠叠叠叠叠叠叠叠叠叠叠叠叠叠叠叠叠

Page 20: Viterbi 译码

自由距 所有 0 始 0 终的非全 0 路径中,最小的码重称为自由距,记为 df。该路径称为自由路径。

自由距表示:从任何一个节点岔开时,所形成的两条路至少差多少距离。

自由距本质上代表卷积码的最小码距。但严格说是不相同的。 码距是对两个等长的码字定义的 卷积码的长度可以任意 任意截取一段有可能截在自由路径中间。

如同分组码的 dmin,卷积码的设计应该使 df尽可能大。

Page 21: Viterbi 译码

交织 交织就是打散次序,例如

原序列: a1a2a3a4a5a6a7a8交织后: a7a1a3a6a2a5a4a8

交织的用途之一是打散突发错(先前所学的编码大部分对突发错无能为力) 发端把多个码字交织后发送 在信道中遇到突发错 收端反交织为多个码字

效果是:发端没有采用交织,但信道错误的次序被打乱了

Page 22: Viterbi 译码

常用的交织器:分组交织(块交织)

a1 a2 a3 a4 a5a6 a7 a8 a9 a10a11 a12 a13 a14 a15a16 a17 a18 a19 a20a21 a22 a23 a24 a25

按行写入,按列读出

Page 23: Viterbi 译码

编码调制( coded modulation) 编码能降低错误率,但增加的冗余使频带利用率降低 高阶调制使频谱效率变高,但误码率下降 编码调制是二者的有机结合,其目的是

高频频谱效率(相对于 BPSK) 低误码率(相对于单纯的高阶调制)

思路(以 8PSK为例) 8PSK的每个比特把 8 个星座点分成不同集合。第 1 个比特分为 4+4,第 2 个比特在 4 中分为 2+2,第 3 个比特在 2 中选一个

适当设计分割方法,则不同比特的引起的欧氏距里不同 对不同欧氏距离的比特使用不同冗余的编码

根本:在于星座冗余

Page 24: Viterbi 译码

8PSK的子集划分:第一个比特分出两个 QPSK

Page 25: Viterbi 译码

第二个比特把 QPSK分成两个 BPSK

Page 26: Viterbi 译码

第 3 个比特:从 BPSK中选出一个点

Page 27: Viterbi 译码

码的改造 出于各种原因(码率、码长等)需要对原设计的码进行简单改造。

缩短 固定某些输入的信息比特,系统码编码结果的部分比特也将固定。对收端已知的内容不用发,因此码就变短了。

加长 级联将使码变长。比如 (7,4)的结果再进行偶校验编码成

为 (8,4) Pucture

打掉某些编码比特,则码率变高。

Page 28: Viterbi 译码

其它 级联码

只要码足够长,任意的设计几乎都是好码。但译码复杂度太高。

解决方法是用可译的短码以串联或者并联等方式构成级联码。一个短码单独译码,译码结果给另一个再译

Turbo码 Turbo码是两个卷积码的并行级联,其译码以反复迭代的方式进行。

LDPC码 LDPC码可以看成是重复码和偶校验码的级联,再把重复的系统位 puncture掉。译码也是迭代译码。

Turbo码、 LDPC码的译码本质上都是在计算概率。