当前位置:文档之家› 卷积码(2,1,3)编译码课程设计

卷积码(2,1,3)编译码课程设计

译码总体上是先通过加——比——选来得到最优路径,然后根据状态转移图来得到解码后的码字。
在整个过程中需要记录的是到达各个状态的累计最小汉明距离及路径。用D(i)= hamming_distance(W(i,:),word(1:chip*2))实现与出错码字对比得到汉明距,用[val,index] = sort(D)来实现val中存汉明距从小到大排列,index中存对应val数据所在位置。首先初始化选前n时刻来比较汉明距,选出最小的4~8条路径,而后每条被选出的路径每次加一时刻进行迭代运算,选出新的汉明距最小的4~8条路径,依次循环,直至迭代至码组结束。最后选出4~8条路径中最小的一条来进行译码。
到 的转移过程称为一个转移分支,记为( )或( ),并标记转移过程为v(l)/u(l)或v/u。以状态 为结点,转移分支为有向边描述卷积码的所有不同状态转移的有向图,称为卷积码的状态转移图。
3.3
图(一)
由此图可知,卷积码电路中含有一个输入端,两个输出端和三个移位寄存器,即每段1比特输入,产生一段2比特输出。
msg_1 = decode_conv213(word1)
msg-msg_1
6.2
function[output,nextState] = state_machine(input,current_state)
output(1) = mod(current_state(1)+current_state(3),2);
图(二)
(a)闭合型
(b)开放型
4
卷积码的译码通常有如下几个比较流行的译码算法:
由Wozencraft和Reiffen在1961年提出,Fano和Jelinek分别在1963年和1969年进行改进了的序贯译码算法。该算法是基于码字树图结构的一种次最优概率译码算法。
由Massey在1963年提出的门限译码算法。这个算法利用码字的代数结构进行代数译码。
(2)通常称K为约束长度(一般来说,约束长度越大,则码字纠错性能越好)。
(3)码的效率:k/n
(4)编码前,k(K-1)个寄存器单元全部复位清零。
(5)由于一段消息不仅影响当前段的编码输出,还影响其后m段的编码输出,所以称参量 为卷积吗的约束比特长度为 。
注意进入卷积编码器的最后m段消息仍是要编码输出的消息,对这最后m段消息的编码处理,称作卷积编码的结尾处理。一种常见的结尾处理方法是额外输入m段无效的0数据比特,一方面将存储的m段消息编码全部推出,另一方面保证编码器回到全0的初态。
1
本文一开始给出了信道编码的发展历史及研究状况,然后详细讨论了(2,1,3)卷积码的编码过程和译码过程,通过状态转移方程和输出方程得出状态转移表和状态转移图,继而得到了编码程序;然后通过维特比译码器研究,总结出了维特比译码算法,最后编译出了译码程序,而且此编码程序和译码程序都在MATLAB中调试,验证了其正确性。
下面利用图解的方法来说明维特比解码的方法和运作过程。设输入编码器的信息序列为(1 1 0 1 1 0 0 0 ),则由编码器输出的序列 Y=(1 1 0 1 0 1 0 0 0 1 0 1 1 1 0 0 ),编码器的状态转移路线为 abcdbdca。若收到的序列R=(0 1 0 1 0 1 1 0 0 1 0 1 1 1 0 0 ),对照网格图来说明维特比译码的方法。
3.4
3.5
表(一)
u
S (000)
S (001)
S (010)
S (011)
(0)
(000) (00)
(010) (11)
(100) (01)
(110 ) (11)
(1)
(001) (01)
(011) (11)
(101) (00)
(111) (10)
u
S (100)
S (101)
S (110)
S (111)
Shannon指出了可以通过差错控制码在信息传输速率不大于信道容量的前提下实现可靠通信,但却没有给出具体实现差错控制编码的方法。
20世纪40年代,R.Hamming和M.Golay提出了第一个实用的差错控制编码方案,使编码理论这个应用数学分支的发展得到了极大的推动。通常认为是R.Hamming提出了第一个差错控制码。当时他作为一个数学家受雇于贝尔实验室,主要从事弹性理论的研究。他发现计算机经常在计算过程中出现错误,而一旦有错误发生,程序就会停止运行。这个问题促使他编制了使计算机具有检测错误能力的程序,通过对输入数据编码,使计算机能够纠正这些错误并继续运行。Hamming所采用的方法就是将输入数据每4个比特分为一组,然后通过计算这些信息比特的线性组合来得到3个校验比特,然后将得到的7个比特送入计算机。计算机按照一定的原则读取这些码字,通过采用一定的算法,不仅能够检测到是否有错误发生,同时还可以找到发生单个比特错误的比特的位置,该码可以纠正7个比特中所发生的单个比特错误。这个编码方法就是分组码的基本思想,Hamming提出的编出v(l)不仅与当前输入消息u(l)相关,还与此去前输入的m个消息u(l-1),…,u(l-m)相关,即v(l)=f(u(l),u(l-1),…,u(l-m)), l=0,1,2…
卷积编码电路中移位寄存器初态可设定为全0,电路为按段工作方式,即对每段k比特输出入,产生一段n比特输出。任意一输入段u(l-h)与输出v(l)的关系都是一个特殊的(n,k)线性分组码的编码关系,即存在k n的二元矩阵G ,使得
6
6.1
clear;clc;
msg = randint(1,20,[0,1])
word = encode_conv213(msg)
word(1) =~word(1);%信道中存在污染,人为的模拟传输过word(10) =~word(10);%程中的出错码字
word(15) =~word(15);
word1=word
图4(a)
图4(b)
图4(c)
Viterbi译码的缺点是随着约束长度的增加算法的复杂度增加很快。约束长度N为7时要比较的路径就有64条,为8时路径变为128条。 (2<<(N-1))。所以Viterbi译码一般应用在约束长度小于10的场合中。
4.2
5
整体思路如图所示,其中输入序列使用randint函数来产生。
分组码所存在的固有缺点可以通过采用其他的编码方法来改善。这种编码方法就是卷积码。卷积码是Elias等人在1955年提出的。卷积码与分组码的不同在于:它充分利用了各个信息块之间的相关性。通常卷积码记为(n,k,N)码。卷积码的编码过程是连续进行的,依次连续将每k个信息元输入编码器,得到n个码元,得到的码元中的检验元不仅与本码的信息元有关,还与以前时刻输入到编码器的信息元(反映在编码寄存器的内容上)有关。同样,在卷积码的译码过程中,不仅要从本码中提取译码信息,还要充分利用以前和以后时刻收到的码组.从这些码组中提取译码相关信息,而且译码也是可以连续进行的,这样可以保证卷积码的译码延时相对比较小。通常,在系统条件相同的条件下,在达到相同译码性能时,卷积码的信息块长度和码字长度都要比分组码的信息块长度和码字长度小,相应译码复杂性也小一些。
output(2) = mod(input+current_state(2)+current_state(1),2);
nextState(1) = current_state(2);
nextState(2) = current_state(3);
由于该卷积码的约束长度为 3位,因此先选择接收序列的前 6 位序列R1 =(0 1 0 1 0 1),同到达第 3时刻可能的 8 个码序列(即 8 条路径)进行比较,并计算出码距。该例中到达第3 时刻a点的路径序列是(0 0 0 0 0 0)和(1 1 1 0 1 1 ) ,它们与R1的距离分别是 3 和4;到达第 3 时刻b点的路径序列是(0 0 0 0 1 1)和(1 1 1 0 0 0) ,它们与R1的距离分别是 3 和4,到达第 3 时刻c点的路径序列是(0 0 1 1 1 0)和(1 1 0 1 1 0) ,与 R1 的距离分别是 4 和1;到达第 3 时刻d 点的路径序列是(0 0 1 1 0 1)和(1 1 0 1 1 0) ,与 R1的距离分别是 2 和3。上述每个节点都保留码距较小的路径为幸存路径,所以幸存路径码序列是(0 0 0 0 0 0) 、 (0 0 0 0 1 1) 、 (1 1 0 1 0 1)和(00 1 1 0 1) ,如图4(a)所示。用与上面类同的方法可以得到第 4、5、6、7 时刻的幸存路径。需指出对于某一个节点而言比较两条路径与接收序列的累计码距时,若发生两个码距值相等,则可以任选一路径作为幸存路径,此时不会影响最终的译码结果。图 4(b)给出了第 5 时刻的幸存路径,在码的终了时刻a状态,得到一根幸存路径,如图 4(c)所示。由此看到译码器输出是R’=(1 1 0 1 0 1 0 0 0 1 0 1 1 1 0 0) ,即可变换成序列(1 1 0 1 1 0 0 0) ,恢复了发端原始信息。比较 R’和R序列,可以看到在译码过程中己纠正了在码序列第 1 和第7位上的差错。当然,差错出现太频繁,以至超出卷积码的纠错能力,则会发生误纠,这是不希望的。
v(m+1)=u(1)G +u(2)G …+u(m)G +u(m+1)
卷积编码电路在按段工作方式下只需存储或者记忆m段的消息输入,电路中输入移位寄存器最多只有 个有效的寄存器单元,而输出移位寄存器仅起一个并串转换作用。因此称参量m为卷积吗的记忆长度(段)
3.2
(1)有k个输入信息端,n个输出端(k<n),K-1节移位寄存器(共需k(K-1)个寄存器单元),称做(n,k,k)卷积码。
由Viterbi在1967年提出的Viterbi算法。算法是基于码字格图结构的一种最大似然译码算法,是一种最优译码算法。
在Viterbi译码算法提出之后,卷积码在通信系统中得到了极为广泛的应用。如GSM、3G、商业卫星通信系统等。
相关主题