搜档网
当前位置:搜档网 › 卷积码编译码算法研究与实现

卷积码编译码算法研究与实现

卷积码编译码算法研究与实现
卷积码编译码算法研究与实现

河北联合大学轻工学院

QINGGONG COLLEGE, HEBEI UNITED UNIVERSITY

移动通信

题目:卷及编码及其仿真

摘要

在数字通信系统中,通常采用差错控制编码来提高系统的可靠性。自P.Elias首次提出卷积码编码以来,这一编码技术至今仍显示出强大的生命力。目前,卷积码已广泛应用在无线通信标准中,如GSM,CDMA2000和IS-95等无线通信标准中。

本文简单介绍了纠错码的基本原理,论述了卷积码编译码原理和算法,并通过matlab仿真对卷积码性能进行研究。卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本文简明地介绍了卷积码的编码原理和译码原理。并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。经过仿真和实测,并对测试结果作了分析。得出了以下三个结论:(1)当改变卷积码的码率时,系统的误码性能也将随之发生变化。

(2)对于码率一定的卷积码,当约束长度N 发生变化时,系统的误码性能也会随之发生变化。

(3)回溯长度也会不同程度上地影响误码性能。

目录

1 绪论 (2)

1.1 选题背景和研究意义 (3)

1.2 信道编码的发展 (3)

2 卷积码的基本理论 (5)

2.2卷积码编码原理 (5)

2.3卷积码译码原理 (6)

3 卷积码编译码及MATLAB仿真.. 7 3.1卷积码编码及仿真 (7)

3.2维特比译码程序及仿真 (8)

1 绪论

1.1选题背景和研究意义

信道编码是数字通信系统的重要组成部分,随着通信技术的不断发展,信道编码技术也在不断地发展。在通信系统中,信道传输特性不理想以及噪声的存在,会导致接收端出现接收信号的错误,因此用于信道纠错的信道编码是数字通信系统中极为重要的一个环节。二十世纪40年代香农定理的出现为人们指出了纠错码的研究方向。根据香农的有噪信道编码定理[1],可以推导出一个码率为R 的编码通信系统达到无误码传输状态所必须的最小信噪比的理论极限。这个理论极限通常称为香农限,它说明对一个码率为R的编码通信系统,只有当SNR超过这个极限值时才能获得无误码传输。只要SNR高于这个极限值,香农的编码定理保证了能够获得无误码传输的(可能相当复杂)编码通信系统的存在性。另外,香农证明了在采用无限长的随机编码时,数据可以以接近信道容量的速率几乎无误码的传输,从而为信道编码的研究奠定了基础。

1.2信道编码的发展

1948年,信息论的奠基人Shannon在他的开创性论文“通信的数学理论”中,首次阐明了在有扰信道中实现可靠通信的方法,提出了著名的有扰信道编码定理[2],指出了实现最佳编码的三个基本条件:(1)采用随机编码方式;(2)编码长度L→∞,即码元序列长度无限;(3)译码采用最大似然译码算法。在满足这三个条件的前提下,香农认为在有噪信道中可以实现无差错传输。

自20世纪50年代以来,编码理论研究与技术应用是长期围绕数字通信业务的特点和需要而发展的,即以伽罗华域上的代数编码方法为主体,研究适合串行信道中使用的码率尽可能高、检错纠错能力尽可能强的码型及其译码算法。从结构上看,码型可划分为分组码和卷积码两大类;译码算法主要分为基于代数的译码算法和基于概率的译码算法两大类。在分组码研究中,各种好的循环码、能纠正多重差错的BCH码、RS码[3]等码型都从理论推导到计算机模拟、搜索中找到。分组码的译码方法可分为代数和非代数两类。代数方法是以求解一组用以确定差错位置与数值的联立方程为基础的,而非代数方法以更为直接的方式确定差错模式。非代数方法主要有梅吉特(Meggitt)于1961年首先提出的纠突发差错的梅吉特译码器、1963年梅茜(Massey)所给出的门限译码器和1962年由布拉格(Prange)首先介绍的信息组译码法。此外,为了充分利用解调器所能提供的软信息,后来又陆续推出了一系列分组码软判决译码算法,如梅茜的后验概率(APP)译码算法、哈特曼(Hartmann)- 鲁道夫(Rudolph)最优逐符号译码算法和威尔顿算法等。在卷积码研究方面,随着Viterbi算法的提出及序列译码算法Fano算法

的提出,也出现了以译码算法优化、减少译码复杂度为突破口的一批好的研究成果。为了在译码复杂性不高的同时获得更好的纠错性能,范尼(Forney)于1966年首先提出级联码的概念。

20世纪70~80年代,以Goppa为首的学者从理论上构造了一类Goppa码[4],其中的一个子类的性能达到了香农信道编码定理中提出的“好码”的标准,具有理论上的重大意义。这个时期由于大规模集成电路的迅速发展,为信道编码的大规模使用打下了坚实的基础,如美国在20世纪70年代发射的“旅行者”号宇宙飞船中就成功地运用了信道编码技术,使宇宙飞船能从遥远的太空传回清晰的照片。同时,由于数字信号处理技术的发展,信道编码在通信系统中的应用也得到关注,并广泛用于实际的通信系统中。另外,近几十年来,许多研究学者致力于寻找低编译码复杂度的实用化编码,先后提出了非规则重复累加码(IRA),以及多维并行级联单奇偶校验码(M-PC-SPC)等结构。

在1993年IC国际会议上,法国不列颠通信大学的C.Berrou、A.Glavieux[5]等人,首先提出了一种称之为Turbo 码的编译码方案。Turbo 码的出现,是首次对第一章绪论3香农提出的非构造性问题的构造性回答,引起了研究人员对随机编码方法迭代译码[6]的热情关注,完善了香农信道编码理论。LDPC 码由Gallager[7]于19 世纪60年代初期首次提出,然而不幸的是,他的重大发现被编码研究人员忽视了大约20年;1996年,两位LDPC码的追踪研究者MacKay和Neal[8]重新发现了LDPC码的优越性能。总之,Turbo 码和LDPC码[9]的出现,加深了人们对随机编码方式和迭代译码的全面理解,掀开了信道编码理论的新篇章,开创了数字通信领域的新纪元。

2 卷积码的基本理论

2.1卷积码编码原理

卷积码一般表示为(n,k,N)的形式,即将k个信息比特编码为n个比特的码组,N 为编码约束长度,说明编码过程中相互约束的码段个数。卷积码编码后的n个码元不仅与当前组的k个信息比特有关,还与前N-1个输入组的信息比特有关。编码过程中相互关联的码元有N*n个。R=k/n是编码效率。编码效率和约束长度是衡量卷积码的两个重要参数。典型的卷积码一般选n,k较小,但N值可取较大(>10),以获得简单而高性能的卷积码。卷积码的编码描述方式有很多种:冲激响应描述法、生成矩阵描述法、多项式乘积描述法、状态图描述,树图描述,网格图描述等。

2.1.1卷积码图形表示法

除了用解析法描述卷积码的编码外,还可以使用比较形象的图形法来表示卷积码。比较常用的有状态图法,树图法和网格图法。

网格图可以描述卷积码的状态随时间推移而转移的情况。该图纵坐标表示所有状态,横坐标表示时间。网格图在卷积码的概率译码,特别是Viterbi译码中非常重要,

它综合了状态图法直观简单和树图法时序关系清晰的特点[18]。 如图2-1所示

图2-1 译码器网格图

图中实线表示输入0时所走分支,虚线表示输入1时所走分支,编码时只需从起始状态开始依次选择路线并读出输出即可。假设从a 状态开始,输入为[1 0 1 1],则可由图中读出输出为[11 10 10 01]。

2.2 卷积码译码原理

维特比译码

维特比译码是根据接收序列在码的格图上找出一条与接收序列距离(或其他量度)为最小的一种算法。它和运筹学中求最短路径的算法相类似。若接收序列为

R=(10100101100111),译码器从某个状态,例如从状态ɑ出发,每次向右延伸一个分支(对于l <L,从每个节点出发都有2种可能的延伸,其中L 是信息序列段数,对l≥L,只有一种可能),并与接收数字相应分支进行比较,计算它们之间的距离,然后将计算所得距离加到被延伸路径的累积距离值中。对到达每个状态的各条路径(有2条)的距离累积值进行比较,保留距离值最小的一条路径,称为幸存路径(当有两条以上取最小值时,可任取其中之一),译码过程如图。图中标出到达各级节点的幸存路径的距离累积值。对给定 R 的估值序列为=(10111)。这种算法所保留的路径与接收序列之间的似然概率为最大,所以又称为最大似然译码。这种译码的译码约束长度常为编码约束长度的数倍,因而可以纠正不多于(df/2)个错误[19]。

维特比译码器的复杂性随m 呈指数增大。实用中m 不大于10。它在卫星和深空通信中有广泛的应用。在解决码间串扰和数据压缩中也可应用。

状态 t

t t t t t

2 0

2

10

00

01 11

3 卷积码编译码及MATLAB 仿真

在本次课题研究中,我们对整个通信过程进行了仿真,其过程如下图:

图3-1 卷积码编译码流程图

3.1卷积码编码及仿真

3.1.1编码程序

function cod=codec(m,g1,g2) %g1,g2为两输出端口的冲激响应序列。 m1=conv(m,g1); %端口一输出 m2=conv(m,g2); %端口二输出 l=length(m1); for i=1:l;

cod([2*i-1])=rem(m1([i]),2); %将端口一编码输出赋给cod 奇数位置 cod([2*i])=rem(m2([i]),2);

%将端口二编码输出赋给cod 偶数位置 end

试运行编码: clear all g1=[1 1 1]; g2=[1 0 1]; msg=[1 1 0 1];

cod=codec(msg,g1,g2) 输出为:

cod =[110101001011]

3.1.2仿真结果如下图3-1。

图3-2 (2,1,3)卷积码编码

3.2Viterbi译码程序

3.2.1Viterbi译码主要程序如下:

for j=0:number_of_states-1

for m=0:M-1

[next_state,memory_contents]=nxt_stat(j,m,N,k);%调用nxt_stat函数

input(j+1,next_state+1)=m;

branch_output=rem(memory_contents*G',2);

% nextstate数组记录了当前状态j下输入l时的下一个状态

nextstate(j+1,m+1)=next_state;

% output数组记录了当前状态j下输入l时的输出(十进制)

output(j+1,m+1)=bin2deci(branch_output);

end

end

state_metric=zeros(number_of_states,2);

depth_of_trellis=length(channel_output)/n;

channel_output_matrix=reshape(channel_output,n,depth_of_trellis);

survivor_state=zeros(number_of_states,depth_of_trellis+1);

for i=1:depth_of_trellis-N+1

flag=zeros(1,number_of_states);

if(i<=N)

step=2^(k*(N-i));

else

step=1;

end

for j=0:step:number_of_states-1

for m=0:M-1

branch_metric=0;

binary_output=deci2bin(output(j+1,m+1),n);

for ll=1:n

branch_metric=branch_metric+metric(channel_output_matrix(ll,i),binary_output(ll));

end

%选择码间距较小的路径,即当下一个状态没有被访问时就直接赋值,否则,用比它小的将其覆盖if((state_metric(nextstate(j+1,m+1)+1,2)>state_metric(j+1,1)+branch_metric)|

flag(nextstate(j+1,m+1)+1)==0 )

state_metric(nextstate(j+1,m+1)+1,2)=state_metric(j+1,1)+branch_metric;

survivor_state(nextstate(j+1,m+1)+1,i+1)=j;

flag(nextstate(j+1,m+1)+1)=1;

end

end

end

state_metric=state_metric(:,2:-1:1);

end

for i=depth_of_trellis-N+2:depth_of_trellis

flag=zeros(1,number_of_states);

last_stop=number_of_states/(2^(k*(i-depth_of_trellis+N-2)));

for j=0:last_stop-1

branch_metric=0;

binary_output=deci2bin(output(j+1,1),n);

for ll=1:n

branch_metric=branch_metric+metric(channel_output_matrix(ll,i),binary_output(ll));

end

if((state_metric(nextstate(j+1,1)+1,2)>state_metric(j+1,1)+branch_metric)|

flag(nextstate(j+1,1)+1)==0 )

state_metric(nextstate(j+1,1)+1,2)=state_metric(j+1,1)+branch_metric;

survivor_state(nextstate(j+1,1)+1,i+1)=j;

flag(nextstate(j+1,1)+1)=1;

end

end

state_metric=state_metric(:,2:-1:1);

end

%从最佳路径中产生解码,译码过程可从数组survivor_state的最后一个位置向前逐级译码

state_sequence=zeros(1,depth_of_trellis+1);

state_sequence(1,depth_of_trellis)=survivor_state(1,depth_of_trellis+1);

for i=1:depth_of_trellis

state_sequence(1,depth_of_trellis-i+1)=survivor_state((state_sequence(1,depth_of_trellis+2-i)+1),depth_of _trellis-i+2);

end

decoder_output_matrix=zeros(k,depth_of_trellis-N+1);

for i=1:depth_of_trellis-N+1

dec_output_deci=input(state_sequence(1,i)+1,state_sequence(1,i+1)+1);

dec_output_bin=deci2bin(dec_output_deci,k);

%将一次译码存入译码输出矩阵decoder_output_matrix相应的位置

decoder_output_matrix(:,i)=dec_output_bin(k:-1:1)';

end

decoder_output=reshape(decoder_output_matrix,1,k*(depth_of_trellis-N+1));

cumulated_metric=state_metric(1,1);

3.2.2 viterbi译码matlab仿真

将程序在matlab中进行仿真,对于(2,1,3)译码,G=[1 1 1;1 0 1],channel_output=recv,此时令信噪比snr_db=12,得到仿真图形如图4-5所示:

snr_db12

图3-3信源编码及viterbi译码

输出的是正确结果[1 1 0 1],由理论分析知,信道编码经过bpsk调制,由于信道噪声的干扰,在信号解调后会产生一定的差错,维特比译码虽然有具有纠错功能,但是毕竟是有限的,所以信噪比对viterbi译码性能将产生影响,且信噪比越大,维特比译码越准确。为了验证上述推论,将信噪比减小,令SNR=6。Matalb仿真结果如图4-6所示:当信噪比降低到SNR=6时,译码输出变为[0 1 1 1],产生了差错。验证了上述推论。

snr_db=6

实验九 (2,1,5)卷积码编码译码技术

实验九 (2,1,5)卷积码编码译码技术 一、实验目的 1、掌握(2,1,5)卷积码编码译码技术 2、了解纠错编码原理。 二、实验内容 1、(2,1,5)卷积码编码。 2、(2,1,5)卷积码译码。 三、预备知识 1、纠错编码原理。 2、(2,1,5)卷积码的工作原理。 四、实验原理 卷积码是将发送的信息序列通过一个线性的,有限状态的移位寄存器而产生的编码。通常卷积码的编码器由K级(每级K比特)的移位寄存器和n个线性代数函数发生器(这里是模2加法器)组成。 若以(n,k,m)来描述卷积码,其中k为每次输入到卷积编码器的bit数,n 为每个k元组码字对应的卷积码输出n元组码字,m为编码存储度,也就是卷积编码器的k元组的级数,称m+1= K为编码约束度m称为约束长度。卷积码将k 元组输入码元编成n元组输出码元,但k和n通常很小,特别适合以串行形式进行传输,时延小。与分组码不同,卷积码编码生成的n元组元不仅与当前输入的k元组有关,还与前面m-1个输入的k元组有关,编码过程中互相关联的码元个数为n*m。卷积码的纠错性能随m的增加而增大,而差错率随N的增加而指数下降。在编码器复杂性相同的情况下,卷积码的性能优于分组码。 编码器 随着信息序列不断输入,编码器就不断从一个状态转移到另一个状态并同时输出相应的码序列,所以图3所示状态图可以简单直观的描述编码器的编码过程。因此通过状态图很容易给出输入信息序列的编码结果,假定输入序列为110100,首先从零状态开始即图示a状态,由于输入信息为“1”,所以下一状态为b并输出“11”,继续输入信息“1”,由图知下一状态为d、输出“01”……其它输入信息依次类推,按照状态转移路径a->b->d->c->b->c->a输出其对应的编码结果“110101001011”。 译码方法 ⒈代数 代数译码是将卷积码的一个编码约束长度的码段看作是[n0(m+1),k0(m+1)]线性分组码,每次根据(m+1)分支长接收数字,对相应的最早的那个分支上的信息数字进行估计,然后向前推进一个分支。上例中信息序列 =(10111),相应的码序列 c=(11100001100111)。若接收序列R=(10100001110111),先根据R 的前三个分支(101000)和码树中前三个分支长的所有可能的 8条路径(000000…)、(000011…)、(001110…)、(001101…)、(111011…)、(111000…)、(110101…)和(110110…)进行比较,可知(111001)与接收

卷积码编译码课设 (2)

摘要 卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本文对卷积码和卷积码的编译码有一个简单的介绍且给出了信道编码的发展历史及研究状况,然后详细讨论了(2,1,2)卷积码的编码过程和译码过程,通过状态转移方程和输出方程得出状态转移表和状态转移图,然后通过维特比译码器研究,总结出了维特比译码算法,最后通过Matlab软件进行设计与仿真,得到了编码程序和译码程序,其运行结果与理论分析一致。 关键字卷积码编码、信道编码、Viterbi译码、MATLAB仿真

目录 摘要........................................... 错误!未定义书签。 一、引言 (3) 1.1发展历史及研究状况 (3) 1.2设计目的和意义 (3) 1.3设计方法 (4) 二、卷积码编译码原理 (5) 2.1 卷积码编码原理 (5) 2.2编码器 (6) 2.3 卷积码译码原理 (7) 2.4 VITEBI 译码的关键步骤 (8) 2.4.1 输入与同步单元 (8) 2.4.2 支路量度计算 (8) 2.4.3 路径量度的存储与更新 (8) 2.4.4 信息序列的存储与更新 (8) 2.4.5 判决与输出单元 (8) 三、卷积码编码实现 (9) 3.1 编码原理分析 (9) 3.2 卷积码编码流程图 (10) 四、卷积码译码实现 (11) 4.1 译码编程思路 (11) 4.2 卷积码译码流程图 (11) 五、卷积码编译码程序的编译及仿真波形 (11) 5.1 卷积码编码仿真 (12) 5.2卷积码译码仿真 (13) 5.3卷积码纠错码仿真 (14) 六、总结 (15) 七、参考文献 (16) 附录 (17)

MATLAB实现卷积码编译码-

本科生毕业论文(设计) 题目:MATLAB实现卷积码编译码 专业代码: 作者姓名: 学号: 单位: 指导教师: 年月日

目录 前言----------------------------------------------------- 1 1. 纠错码基本理论---------------------------------------- 2 1.1纠错码基本理论 ----------------------------------------------- 2 1.1.1纠错码概念 ------------------------------------------------- 2 1.1.2基本原理和性能参数 ----------------------------------------- 2 1.2几种常用的纠错码 --------------------------------------------- 6 2. 卷积码的基本理论-------------------------------------- 8 2.1卷积码介绍 --------------------------------------------------- 8 2.1.1卷积码的差错控制原理----------------------------------- 8 2.2卷积码编码原理 ---------------------------------------------- 10 2.2.1卷积码解析表示法-------------------------------------- 10 2.2.2卷积码图形表示法-------------------------------------- 11 2.3卷积码译码原理---------------------------------------------- 15 2.3.1卷积码三种译码方式------------------------------------ 15 2.3.2V ITERBI译码原理---------------------------------------- 16 3. 卷积码编译码及MATLAB仿真---------------------------- 18 3.1M ATLAB概述-------------------------------------------------- 18 3.1.1M ATLAB的特点------------------------------------------ 19 3.1.2M ATLAB工具箱和内容------------------------------------ 19 3.2卷积码编码及仿真 -------------------------------------------- 20 3.2.1编码程序 ---------------------------------------------- 20 3.3信道传输过程仿真-------------------------------------------- 21 3.4维特比译码程序及仿真 ---------------------------------------- 22 3.4.1维特比译码算法解析------------------------------------ 23 3.4.2V ITERBI译码程序--------------------------------------- 25 3.4.3 VITERBI译码MATLAB仿真----------------------------------- 28 3.4.4信噪比对卷积码译码性能的影响 -------------------------- 28

基于matlab的2-3卷积码编码译码设计与仿真

西南科技大学 方向设计报告 课程名称:通信工程方向设计 设计名称:2/3卷积码编译码器仿真与性能分析 姓名: 学号: 班级: 指导教师: 起止日期:2011.12.12-2012.1.6 西南科技大学信息工程学院制

方向设计任务书 学生班级:学生姓名:学号: 设计名称:2/3卷积码编译码器仿真与性能分析 起止日期:2011.12.12-2012.1.6指导教师: 设计要求: (1)分析2/3卷积码编码器结构; (2)分析2/3卷积码译码的Viterbi算法; (3)基于SIMULINK进行2/3卷积码的纠错性能仿真; 方向设计学生日志 时间设计内容 12.15-12.17 查看题目及设计要求。 12.18-12.23 查阅相关资料,设计方案。 12.23-12.27 编写报告及调试程序。 12.28-12.29 完善修改课程设计报告。 12.30-12.31 答辩。

方向设计考勤表 周星期一星期二星期三星期四星期五 方向设计评语表 指导教师评语: 成绩:指导教师: 年月日

2/3卷积码编译码器仿真与性能分析 摘要: 卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本文简明地介绍了卷积码的编码原理和Viterbi译码原理。并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。经过仿真和实测,并对测试结果作了分析。 关键词: 卷积码编码器、viterbi译码器、SIMULINK

14卷积码编解码

实验四 卷积码的编解码 一、实验目的 1、掌握卷积码的编解码原理。 2、掌握卷积码的软件仿真方法。 3、掌握卷积码的硬件仿真方法。 4、掌握卷积码的硬件设计方法。 二、预习要求 1、掌握卷积码的编解码原理和方法。 2、熟悉matlab 的应用和仿真方法。 3、熟悉Quatus 的应用和FPGA 的开发方法。 三、实验原理 1、卷积码编码原理 在编码器复杂度相同的情况下,卷积码的性能优于分组码,因此卷积码几乎被应用在所有无线通信的标准之中,如GSM , IS95和CDMA 2000 的标准中。 卷积码通常记作( n0 , k0 , m) ,它将k 0 个信息比特编为n 0 个比特, 其编码效率为k0/ n0 , m 为约束长度。( n0 , k0 , m ) 卷积码可用k0 个输入、n0 个输出、输入存储为m 的线性有限状态移位寄存器及模2 加法计数器来实现。 本实验以(2,1,3)卷积码为例加以说明。图1就是卷积码编码器的结构。 图1 (2,1,3)卷积码编码器 其生成多项式为: 21()1G D D D =++; 2 2()1G D D =+; 如图1 所示的(2,1,3)卷积码编码器中,输入移位寄存器用转换开关代替,每输入一个信息比特经编码产生二个输出比特。假设移位寄存器的初始状态为全0,当第一个输入比特为0时,输出比特为00;若输入比特为1,则输出比特为11。随着第二个比特输入,第一个比特右移一位,此时输出比特同时受到当前输入比特和前一个输入比特的影响。第三个比特输入时,第一、二个比特分别右移一位,同时输出二个由这三位移位寄存器存储内容所共同决定的比特。依次下去就完成了编码过程。 下面是卷积码的网格图表示。他是比较清楚而又紧凑的描述卷积码的一种方式,它是最常用的描述方

34卷积码编码原理分析与建模仿真

3/4卷积码编码原理分析与建模仿真 一、摘要 卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本文简明地介绍了卷积码的编码原理和Viterbi译码原理。并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分析了卷积码误比特率与信噪比之间的关系,及卷积码与非卷积码的对比。经过仿真和实测,并对测试结果作了分析。 关键词:卷积码编码建模 SIMULINK仿真

目录 一、摘要 ................................................................................................................................................................. - 1 - 二、设计目的和意义 ............................................................................................................................................. - 2 - 三、设计原理 ......................................................................................................................................................... - 3 - 3.1 卷积码基本概念 ...................................................................................................................................... - 3 - 3.2 卷积码的结构 .......................................................................................................................................... - 3 - 3.3 卷积码的解析表示 .................................................................................................................................. - 4 - 3.4 卷积码的译码 .......................................................................................................................................... - 4 - 3.4.1 卷积码译码的方式........................................................................................................................ - 4 - 3.5.2 卷积码的Viterbi译码 .................................................................................................................. - 5 - 四、详细设计步骤 ................................................................................................................................................. - 6 - 4.1 卷积码的仿真 .......................................................................................................................................... - 6 - 4.1.1 SIMULINK仿真模块的参数设置及意义 ................................................................................. - 6 - 五、设计结果及分析 ........................................................................................................................................... - 11 - 5.1不同信噪比对卷积码的影响.................................................................................................................. - 11 - 5.2卷积码的对比 ........................................................................................................................................ - 12 - 六、总结 ............................................................................................................................................................... - 14 - 七、体会 ............................................................................................................................................................... - 14 - 八、参考文献 ....................................................................................................................................................... - 14 - 二、设计目的和意义 因为信道中信号不可避免会受到干扰而出错。为实现可靠性通信,主要有两种途径:一种

卷积码的编解码Matlab仿真

卷积码的编解码Matlab仿真

卷积码的编解码Matlab仿真 摘要 卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本文简明地介绍了卷积码的编码原理和译码原理。并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。经过仿真和实测,并对测试结果作了分析。得出了以下三个结论: (1)当改变卷积码的码率时,系统的误码性能也将随之发生变化。 (2)对于码率一定的卷积码,当约束长度N 发生变化时,系统的误码性能也会随之发生变化。 (3)回溯长度也会不同程度上地影响误码性能。 关键词:卷积码;码率;约束长度;回溯长度

Simulation and Research on Encoding and Decoding of Convolution Code Abstract Convolution code has a superior performance of the channel code. It is easy to coding and decoding. And it has a strong ability to correct errors. As correcting coding theory has a long development, the practice of convolution code is more and more extensive. In this thesis, the principle of convolution coding and decoding is introduced simply firstly. Then the whole simulation module process of encoding, decoding and the Error Rate Calculation is completed in this design. Finally, in order to understand their performances of error rate, many changes in parameters of convolution code are calculated in the simulation process. After simulation and measure, an analysis of test results is presented. The following three conclusions are draw: (1) When the rate of convolution Code changes, BER performance of the system will change. (2) For a certain rate of convolution code, when there is a change in the constraint length of N, BER performance of the system will change. (3) Retrospective length will affect BER. Key words:convolution code; rate; constraint length; retrospective length;

213卷积码编码和译码

(2,1,3)卷积码的编码及译码 摘要: ¥ 本报告对于(2,1,3)卷积码原理部分的论述主要参照啜刚教材和课件,编程仿真部分绝对原创,所有的程序都是在Codeblocks 环境下用C语言编写的,编译运行都正常。完成了卷积码的编码程序,译码程序,因为对于短于3组的卷积码,即2 bit或4 bit纠错是没有意义的,所以对正确的短序列直接译码,对长序列纠错后译码,都能得到正确的译码结果。含仿真结果和程序源代码。 如果您不使用Codeblocks运行程序,则可能不支持中文输出显示,但是所有的数码输出都是正确的。

一、 卷积码编码原理 卷积码编码器对输入的数据流每次1bit 或k bit 进行编码,输出n bit 编码符号。但是输出的分支码字的每个码元不仅于此时可输入的k 个嘻嘻有关,业余前m 个连续式可输入的信息有关,因此编码器应包含m 级寄存器以记录这些信息。 通常卷积码表示为 (n,k,m). 编码率 k r n = ( 当k=1时,卷积码编码器的结构包括一个由m 个串接的寄存器构成的移位寄存器(成为m 级移位寄存器、n 个连接到指定寄存器的模二加法器以及把模二加法器的输出转化为穿行的转换开关。 本报告所讲的(2,1,3)卷积码是最简单的卷积码。就是2n =,1k =,3m =的卷积码。每次输入1 bit 输入信息,经过3级移位寄存器,2个连接到指定寄存器的模二加法器,并把加法器输出转化为串行输出。 编码器如题所示。 二、卷积码编码器程序仿真 C 语言编写的仿真程序。 为了简单起见,这里仅仅提供数组长度30 bit 的仿真程序,当然如果需要可以修改数组大小。为了更精练的实现算法,程序输入模块没有提供非法字符处理过程,如果需要也可以增加相应的功能。 进入程序后,先提示输入数据的长度,请用户输入int (整型数)程序默认用户输入的数据小于30,然后提示输入01数码,读入数码存储与input 数组中,然后运算输出卷积码。经过实验仿真,编码完全正确。 } 以下是举例:

基于matlab的卷积码译码器的仿真设计

数字通信原理课程设计报告书

基于matlab的卷积码译码器的仿真设计 ) 1设计目的 卷积码是一种向前纠错控制编码。它将连续的信息比特序列映射为连续的编码器输出符号。这种映射是高度结构化的,使得卷积码的译码方法与分组码译码所采用的方法完全不同。可以验证的是在同样复杂度情况下,卷积码的编码增益要大于分组码的编码增益。对于某个特定的应用,采用分组编码还是采用卷积编码哪一种更好则取决于这一应用的具体情况和进行比较时可用的技术。 本课程设计便是通过Matlab设计一个硬判决维特比译码输出的完整电路,并进行误码率分析。 2设计的主要内容和要求 (1)要求能熟练地运用Matlab技术对卷积码译码器进行仿真。 (2)运用Matlab中Simulink单元来创建信源模块、信道模块、信宿模块、简易译码器模块等,并运用所有设计的模块来进行仿真。 3 设计原理 3.1卷积码 卷积码,又称连环码,是由伊莱亚斯(P.elias)于1955年提出来的一种非分组码。 卷积编码的最佳译码准则为:在给定已知编码结构、信道特性和接收序列的情况下,译码器将把与已经发送的序列最相似的序列作为传送的码字序列的估值。对于二进制对称信道,最相似传送序列就是在汉明距离上与接收序列最近的序列。 卷积码的译码方法有两大类:一类是大数逻辑译码,又称门限译码(硬判决,编者注);另一种是概率译码(软判决,编者注),概率译码又分为维特比译码和序列译码两种。门限译码方法是以分组码理论为基础的,其译码设备简单,速度快,但其误码性能要比概率译码法差。

当卷积码的约束长度不太大时,与序列译码相比,维特比译码器比较简单,计算速度快。维特比译码算法是1967年由Viterbi 提出,近年来有大的发展。目前在数字通信的前向纠错系统中用的较多,而且在卫星深空通信中应用更多,该算法在卫星通信中已被采用作为标准技术。 3.2 维特比译码原理 采用概率译码的基本思想是:把已接收序列与所有可能的发送序列做比较,选择其中码距最小的一个序列作为发送序列。如果发送L 组信息比特,那么对于(n,k )卷积码来说,可能发送的序列有2kL 个,计算机或译码器需存储这些序列并进行比较,以找到码距最小的那个序列。当传信率和信息组数L 较大时,使得译码器难以实现。维特比算法则对上述概率译码做了简化,以至成为了一种实用化的概率算法。它并不是在网格图上一次比较所有可能的2kL 条路径(序列),而是接收一段,计算和比较一段,选择一段最大似然可能的码段,从而达到整个码序列是一个最大似然值得序列。 下面以图3.2.1的(2,1,3)卷积码编码器所编出的码为例,来说明维特比解码的方法和运作过程。为了能说明解码过程,这里给出该码的状态图,如图3.2.2 示。维特比译码需要利用图来说明移码过程。根据卷积码画网格的方法,我们可以画出该码的网格图,如图3.2.3所示。该图设输入信息数目L=5,所以画L+N=8个时间单位,图中分别标以0至7。这里设编码器从a 状态开始运作。该网格图的每一条路径都对应着不同的输入信息序列。由于所有可能输入信息序列共有2kL 个,因而网格图中所有可能的路径也为2kL 条。这里节点a=00,b=01,c=10, b 图3.2.1 (2,1,3)卷积码编码器 图3.2.2 (2,1,3)卷积码状态图

(完整word版)卷积码的编译码MATLAB程序

%survivor state是一个矩阵,它显T了通过网格的最优路径,这个矩阵通过一个单独的函 数metric(x,y)给出。 %其中G是一个矩阵,它的任一行决定了从移位寄存器到模2加法器的连接方式.为生成矩阵 %这里,我们做了一个简单的(2,1,7)卷积码编码器。 k=1; G=[1 0 1 1 0 1 1;1 1 1 1 0 0 1];%G1=133,G2=171 %以下3种输入序列,可任选一种% %input=[0 0 0 0 0 0 0];%全0输入 %input=[1 1 1 1 1 1 1];%全1输入 input=[round(rand(1,7)*1)];%随机系列输入,也可用 randint(1,7,[0 1]) figure;plot(input,'*r') %figure1:画图:目标input,红色(red,r),形状为* s=input; g1=G(1,:); g2=G(2,:); c1=conv(s,g1);%作卷积 %disp(c1); c2=conv(s,g2); %disp(c2); n=length(c1);%7位输入时n=13 c=zeros(1,2*n);%生成全0矩阵,1*26 %disp(c); for i=1:n c(2*i-1)=c1(i);c(2*i)=c2(i);%两个模2加法器分别输出卷积结果序列后,由旋转开关读取的结果(此时仅为卷积结果,非2进制0/1) end for i=1:2*n if(mod(c(i),2)==0)% mod(c(i),2)==0意思:c(i)除以2,余数为0 c(i)=0; else c(i)=1; end end output=c; channel_output=output;%输出矩阵 %disp(channel_output); figure;plot(output,'*b') %画图:目标:卷积码编码输出,蓝色(blue,b)* %————————————————以上为编码部分,以下为维特比译码———————————————— n=size(G,1);%取矩阵G的行数,故n=2。即得到输出端口,即2个模2加法器 %检验G的维数 if rem(size(G,2),k)~=0 %当矩阵G的列数不为k的整数倍时,rem为求余函数 error('Size of G and k do not agree')%报错 end if rem(size(channel_output,2),n)~=0 %当输出矩阵的列数不是输出端口n的整数倍时。(注:size(channel_output,2)=26,2个模2加法器合成的输出)

卷积码编码器的设计 (1)汇总

湖南文理学院 课程设计报告 课程名称:通信系统课程设计 专业班级:通信工程11102班09 学生姓名:朱涛 指导教师:侯清莲 完成时间:2014-11-18 报告成绩:

目录 一、设计要求 (1) 二、设计作用与目的 (1) 三、所用设备及软件 (1) 四、卷积码编码的概念 (1) 4.1卷积码的编码描述方法 (1) 4.2 卷积编码 (2) 4.3 卷积码的树状图 (3) 4.4 卷积码的网格图 (3) 五、 EDA设计方法及工具软件QUARTUSⅡ (4) 六、改变卷积编码器的参数仿真以及结论 (4) 6.1 不同回溯长度对卷积编码器性能的影响 (4) 6.2 不同码率对卷积编码器误码性能的影响 (5) 6.3 不同约束长度对卷积编码器的误码性能影响 (6) 七、卷积码编码器的VHDL设计与仿真 (8) 7.1 VHDL设计的优点与设计方法 (8) 7.2 卷积码编码器的VHDL实现 (10) 八、心得体会 (10) 九、参考文献 (11)

卷积编码器的设计 一、设计要求 (1)画出卷积码的原理框图,说明系统中各主要组成部分的功能。 (2)使用EDA技术及VHDL语言对卷积编码器进行设计与仿真并对结果分析。 二、设计作用与目的 (1)巩固加深对通信基本知识分析以及卷积码的掌握,提高综合运用通信知识的能力。(2)掌握采用仿真软件对系统进行仿真分析。 (3)培养学生查阅参考文献,独立思考,设计,钻研电子技术相关问题的能力。 (4)掌握相关电子线路工程技术规范以及常规电子元器件的性能技术指标。 (5)培养严肃认真的工作作风与科学态度,建立严谨的工程技术观念。 (6)了解电气图国家标准,并利用电子CAD等正确绘制电路图。 (7)培养工程实践能力,创新能力与综合设计能力。 三、所用设备及软件 (1)QUARTUSⅡ (2)PC机 四、卷积码编码的概念 4.1卷积码的编码描述方法 编码描述方法有5种:冲激响应描述法、生成矩阵描述法、多项式乘积描述法、状态图描述法和网格图描述法。卷积码的纠错能力随着N的增加而增大,而差错率随着N的增加而指数下降。在编码器复杂性相同的情况下,卷积码的性能优于分组码。分组码有严格的代数结构,但卷积码至今尚未找到如此严密的数学手段。分组码的译码算法可以由其代数特性得到。卷积码虽然可以采用适用于分组码的门限译码(即大数逻辑译码),但性能不如维特比译码和序列译码[2]。 以二元码为例,输入信息序列为u=(u0,u1,…),其多项式表示为u(x)=u0+u1x+… +…。编码器的连接可用多项式表示为g (1,1)(x)=1+x+x2和g (1,2) (x)=1+x2,称为码的子生 成多项式。它们的系数矢量g (1,1)=(111)和g (1,2) =(101)称作码的子生成元。以子生成多项式 为阵元构成的多项式矩阵G(x)=[g (1,1)(x),g (1,2) (x)],称为码的生成多项式矩阵。由生成 元构成的半无限矩阵。

Matlab的卷积码译码器的仿真

基于Matlab的卷积码译码器的 设计与仿真 学生姓名:指导老师:** 摘要本课程设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出, 并通过Matlab软件进行设计与仿真,并进行误码率分析。在课程设计中,系统开发平台为Windows Vista Ultimate,程序设计与仿真均采用Matlab R2007a(7.4),最后仿真详单与理论分析一致。 关键词课程设计;卷积码译码器;Matlab;Simulink;设计与仿真 1引言 本课程设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出,并通 过Matlab软件进行设计与仿真。卷积码的译码有两种方法——软判决和硬判决,此课程设计采用硬判决的维特比译码。 1.1课程设计目的 卷积码是一种向前纠错控制编码。它将连续的信息比特序列映射为连续的编码器输出符号。这种映射是高度结构化的,使得卷积码的译码方法与分组码译码所采用的方法完全不同。可以验证的是在同样复杂度情况下,卷积码的编码增益要大于分组码的编码增益。对于某个特定的应用,采用分组编码还是采用卷积编码哪一种更好则取决于这一应用的具体情况和进行比较时可用的技术[1]。 本课程设计便是通过Matlab设计一个硬判决维特比译码输出的完整电路,并进行误码率分析。

1.2 课程设计的原理 卷积码,又称连环码,是由伊莱亚斯(P.elias)于1955年提出来的一种非分组码。 卷积编码的最佳译码准则为:在给定已知编码结构、信道特性和接收序列的情况下,译码器将把与已经发送的序列最相似的序列作为传送的码字序列的估值。对于二进制对称信道,最相似传送序列就是在汉明距离上与接收序列最近的序列。 卷积码的译码方法有两大类:一类是大数逻辑译码,又称门限译码(硬判决,编者注);另一种是概率译码(软判决,编者注),概率译码又分为维特比译码和序列译码两种。门限译码方法是以分组码理论为基础的,其译码设备简单,速度快,但其误码性能要比概率译码法差[2]。 当卷积码的约束长度不太大时,与序列译码相比,维特比译码器比较简单,计算速度快。维特比译码算法是1967年由Viterbi提出,近年来有大的发展。目前在数字通信的前向纠错系统中用的较多,而且在卫星深空通信中应用更多,该算法在卫星通信中已被采用作为标准技术。 2维特比译码原理 采用概率译码的基本思想是:把已接收序列与所有可能的发送序列做比较,选择其中码距最小的一个序列作为发送序列。如果发送L组信息比特,那么对于(n,k)卷积码来说,可能发送的序列有2kL个,计算机或译码器需存储这些序列并进行比较,以找到码距最小的那个序列。当传信率和信息组数L较大时,使得译码器难以实现。维特比算法则对上述概率译码做了简化,以至成为了一种实用化的概率算法。它并不是在网格图上一次比较所有可能的2kL条路径(序列),而是接收一段,计算和比较一段,选择一段最大似然可能的码段,从而达到整个码序列是一个最大似然值得序列。 下面以图2.1的(2,1,3)卷积码编码器所编出的码为例,来说明维特比解码的方法和运作过程。为了能说明解码过程,这里给出该码的状态图,如图2.2所

卷积码的编解码Matlab仿真与模拟

卷积码的编解码Matlab仿真 摘要 卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本文简明地介绍了卷积码的编码原理和译码原理。并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。经过仿真和实测,并对测试结果作了分析。得出了以下三个结论: (1)当改变卷积码的码率时,系统的误码性能也将随之发生变化。 (2)对于码率一定的卷积码,当约束长度N 发生变化时,系统的误码性能也会随之发生变化。 (3)回溯长度也会不同程度上地影响误码性能。 关键词:卷积码;码率;约束长度;回溯长度

目录 论文总页数:21页 1 引言 (1) 1.1 课题背景 (1) 1.2 国内外研究现状 (1) 1.3 本课题的意义 (1) 1.4 本课题的研究方法 (1) 2 卷积码的基本概念 (2) 2.1 信道 (2) 2.2 纠错编码 (2) 2.3 卷积码的基本概念 (2) 2.4 卷积码编码的概念 (2) 2.4.1 卷积编码 (2) 2.4.2 卷积码的树状图 (3) 2.4.3 卷积码的网格图 (4) 2.4.4 卷积码的解析表示 (5) 3 卷积码的译码 (6) 3.1 卷积码译码的概述 (6) 3.2 卷积码的最大似然译码 (6) 3.3 VITEBI 译码的关键步骤 (7) 3.3.1 输入与同步单元 (7) 3.3.2 支路量度计算 (7) 3.3.3 路径量度的存储与更新 (7) 3.3.4 信息序列的存储与更新 (8) 3.3.5 判决与输出单元 (8) 4 结论 (9) 4.1 卷积码的仿真 (9) 4.1.1 SIMULINK仿真模块的参数设置以及重要参数的意义 (9) 4.2 改变卷积码的参数仿真以及结论 (12) 4.2.1 不同回溯长度对卷积码性能的影响 (12) 4.2.2 不同码率对卷积码误码性能的响 (14) 4.2.3 不同约束长度对卷积码的误码性能影响 (15) 结论 (17) 参考文献 (18) 致谢.................................................... 错误!未定义书签。声明.................................................... 错误!未定义书签。

213卷积码编码和译码

No.15 (2,1,3)卷积码的编码及译码 摘要: 本报告对于(2,1,3)卷积码原理部分的论述主要参照啜刚教材和课件,编程仿真部分绝对原创,所有的程序都是在Codeblocks 8.02环境下用C语言编写的,编译运行都正常。完成了卷积码的编码程序,译码程序,因为对于短于3组的卷积码,即2 bit或4 bit纠错是没有意义的,所以对正确的短序列直接译码,对长序列纠错后译码,都能得到正确的译码结果。含仿真结果和程序源代码。 如果您不使用Codeblocks运行程序,则可能不支持中文输出显示,但是所有的数码输出都是正确的。

一、 卷积码编码原理 卷积码编码器对输入的数据流每次1bit 或k bit 进行编码,输出n bit 编码符号。但是输出的分支码字的每个码元不仅于此时可输入的k 个嘻嘻有关,业余前m 个连续式可输入的信息有关,因此编码器应包含m 级寄存器以记录这些信息。 通常卷积码表示为 (n,k,m). 编码率 k r n = 当k=1时,卷积码编码器的结构包括一个由m 个串接的寄存器构成的移位寄存器(成为m 级移位寄存器、n 个连接到指定寄存器的模二加法器以及把模二加法器的输出转化为穿行的转换开关。 本报告所讲的(2,1,3)卷积码是最简单的卷积码。就是2n =,1k =,3m =的卷积码。每次输入1 bit 输入信息,经过3级移位寄存器,2个连接到指定寄存器的模二加法器,并把加法器输出转化为串行输出。 编码器如题所示。 二、卷积码编码器程序仿真 C 语言编写的仿真程序。 为了简单起见,这里仅仅提供数组长度30 bit 的仿真程序,当然如果需要可以修改数组大小。为了更精练的实现算法,程序输入模块没有提供非法字符处理过程,如果需要也可以增加相应的功能。 进入程序后,先提示输入数据的长度,请用户输入int (整型数)程序默认用户输入的数据小于30,然后提示输入01数码,读入数码存储与input 数组中,然后运算输出卷积码。经过实验仿真,编码完全正确。 以下是举例: a.课件上的输入101 输出11 10 00 的实验

实验九-(2-1-5)卷积码编码译码技术教学内容

实验九-(2-1-5)卷积码编码译码技术

实验九 (2,1,5)卷积码编码译码技术 一、实验目的 1、掌握(2,1,5)卷积码编码译码技术 2、了解纠错编码原理。 二、实验内容 1、(2,1,5)卷积码编码。 2、(2,1,5)卷积码译码。 三、预备知识 1、纠错编码原理。 2、(2,1,5)卷积码的工作原理。 四、实验原理 卷积码是将发送的信息序列通过一个线性的,有限状态的移位寄存器而产生的编码。通常卷积码的编码器由K级(每级K比特)的移位寄存器和n个线性代数函数发生器(这里是模2加法器)组成。 若以(n,k,m)来描述卷积码,其中k为每次输入到卷积编码器的bit数,n为每个k元组码字对应的卷积码输出n元组码字,m为编码存储度,也就是卷积编码器的k元组的级数,称m+1= K为编码约束度m称为约束长度。卷积码将k元组输入码元编成n元组输出码元,但k和n通常很小,特别适合以串行形式进行传输,时延小。与分组码不同,卷积码编码生成的n元组元不仅与当前输入的k元组有关,还与前面m-1个输入的k元组有关,编码过程中互相关联的码元个数为n*m。卷积码的纠错性能随m的增加而增大,而差错率随N的增加而指数下降。在编码器复杂性相同的情况下,卷积码的性能优于分组码。 编码器 随着信息序列不断输入,编码器就不断从一个状态转移到另一个状态并同时输出相应的码序列,所以图3所示状态图可以简单直观的描述编码器的编码过程。因此通过状态图很容易给出输入信息序列的编码结果,假定输入序列为110100,首先从零状态开始即图示a状态,由于输入信息为“1”,所以下一状态为b并输出“11”,继续输入信息“1”,由图知下一状态为d、输出“01”……其它输入信息依次类推,按照状态转移路径a->b->d->c->b->c->a 输出其对应的编码结果“110101001011”。 译码方法 ⒈代数 代数译码是将卷积码的一个编码约束长度的码段看作是[n0(m+1), k0(m+1)]线性分组码,每次根据(m+1)分支长接收数字,对相应的最早的那个分支上的信息数字进行估计,然后向前推进一个分支。上例中信息序列 =(10111),相应的码序列 c=(11100001100111)。若接收序列 R=(10100001110111),先根据R的前三个分支(101000)和码树中前三个分支长的所有可能的 8条路径(000000…)、(000011…)、(001110…)、(001101…)、(111011…)、(111000…)、(110101…)和(110110…)

相关主题