卷积码的仿真与分析-信息论报告
【报告】卷积码实验报告

【报告】卷积码实验报告一、实验目的本次卷积码实验的主要目的是深入理解卷积码的编码与译码原理,掌握其在数字通信系统中的应用,并通过实际实验操作和结果分析,评估卷积码的纠错性能和对通信质量的改善效果。
二、实验原理(一)卷积码的基本概念卷积码是一种有记忆的非分组码,它将输入的信息序列经过特定的编码器生成输出的码序列。
卷积码的编码过程不仅取决于当前输入的信息位,还与之前的若干个信息位有关。
(二)编码原理卷积码的编码器通常由若干个移位寄存器和模 2 加法器组成。
输入的信息位在时钟的控制下依次进入移位寄存器,同时与寄存器中的内容进行模 2 加法运算,生成输出的编码位。
(三)译码原理卷积码的译码方法有多种,常见的有维特比译码算法。
维特比译码算法基于最大似然准则,通过在码的网格图上寻找最有可能的路径来实现译码。
三、实验环境与设备本次实验在计算机上进行,使用了以下软件和工具:1、 MATLAB 编程环境,用于实现卷积码的编码、传输和译码过程,并进行性能分析。
2、通信系统仿真工具,用于构建通信系统模型,模拟信号的传输和接收。
四、实验步骤(一)编码实现1、在 MATLAB 中定义卷积码的编码器结构,包括移位寄存器的数量和连接方式,以及模 2 加法器的位置。
2、编写编码函数,输入信息序列,按照编码器的工作原理生成编码后的序列。
(二)信道传输1、模拟加性高斯白噪声信道,设置不同的信噪比条件。
2、将编码后的序列通过信道传输,引入噪声干扰。
(三)译码实现1、使用维特比译码算法对接收序列进行译码。
2、编写译码函数,输入接收序列和信道参数,输出译码后的信息序列。
(四)性能评估1、计算误码率,即错误译码的比特数与总传输比特数的比值。
2、绘制误码率曲线,分析卷积码在不同信噪比条件下的纠错性能。
五、实验结果与分析(一)不同卷积码参数对性能的影响1、改变卷积码的约束长度,观察其对纠错性能的影响。
结果表明,约束长度越长,卷积码的纠错能力越强,但编码效率会有所降低。
通信综合课程设计 卷积码的实现与仿真

文章标题:深度解析通信综合课程设计中卷积码的实现与仿真引言:通信综合课程设计是通信工程领域的重要教育环节,而卷积码作为其中的重要内容之一,其实现与仿真更是学生们需要深入了解和掌握的技能。
本文将从简到繁地讨论通信综合课程设计中卷积码的实现与仿真,帮助读者更好地理解和掌握这一重要内容。
第一部分:通信综合课程设计概述1.1 通信综合课程设计的重要性在通信工程领域,通信综合课程设计是学生将在实际工作中常常用到的实践环节,通过这一环节,学生们可以将所学的理论知识应用到实际项目中,提高实践能力和解决问题的能力。
1.2 通信综合课程设计的内容概述通信综合课程设计内容丰富多样,包括调制解调、信道编码、卷积码、纠错码等多个主题,而卷积码的实现与仿真是其中的重要部分之一。
第二部分:卷积码的基本原理2.1 卷积码的定义卷积码是一种线性时不变系统(LTI)编码器,在通信系统中起到纠错码的作用。
2.2 卷积码的编码和解码原理通过引入时延、存储元素和加法器,实现对输入序列进行编码;而解码过程则是通过译码器进行,根据输入序列和已知的编码规则进行解码。
第三部分:通信综合课程设计中卷积码的实现3.1 卷积码的软件实现在通信综合课程设计中,学生们可以利用MATLAB等软件工具,编写程序实现卷积码的编码和解码过程,从而加深对卷积码原理的理解。
3.2 卷积码的硬件实现除了软件实现,通信综合课程设计中也常常涉及到卷积码的硬件实现,学生们可以通过FPGA等硬件开发评台,实现卷积码的编码和解码过程。
第四部分:通信综合课程设计中卷积码的仿真4.1 仿真环境的建立在通信综合课程设计中,学生们需要建立仿真环境,包括信道模型、信号源、噪声源等,以便对卷积码的性能进行评估。
4.2 仿真结果的分析通过仿真实验,学生们可以得到卷积码在不同信噪比下的误码率曲线等性能参数,从而对卷积码的性能有更深入的了解。
结论:通过本文的深入讨论,相信读者已经对通信综合课程设计中卷积码的实现与仿真有了更深入的理解。
卷积码(或者Turbo码)的交织与解交织的仿真编程和仿真实验

卷积码(或者Turbo码)的交织与解交织的仿真编程和仿真实验一、实验目的实现卷积码(或者Turbo码)的交织与解交织的仿真编程和仿真实验,观察交织编码分别在白噪声信道和衰落信道下系统误码率的影响,分析原因。
二、实验原理信道编码中采用交织技术,可打乱码字比特之间的相关性,将信道中传输过程中的成群突发错误转换为随机错误,从而提高整个通信系统的可靠性。
交织编码根据交织方式的不同,可分为线性交织、卷积交织和伪随机交织。
其中线性交织编码是一种比较常见的形式。
所谓线性交织编码器,是指把纠错编码器输出信号均匀分成m个码组,每个码组由n段数据构成,这样就构成一个n×m的矩阵。
这里把这个矩阵称为交织矩阵。
如图1所示,数据以a11,a12,…,a1n,a21,a22,…,a2n,…,aij,…,am1,am2,…,amn(i=1,2,…,m;j=1,2,…,n)的顺序进入交织矩阵,交织处理后以a11,n21,…,am1,a12,a22,…,am2,…,a1n,a2n,…,amn的顺序从交织矩阵中送出,这样就完成对数据的交织编码,如图1所示。
还可以按照其他顺序从交织矩阵中读出数据,不管采用哪种方式,其最终目的都是把输入数据的次序打乱。
如果aij只包含1个数据比特,称为按比特交织;如果aij包含多个数据比特,则称为按字交织。
接收端的交织译码同交织编码过程相类似。
图 1 交织编码矩阵一般来说,如果有n个(m,k)码,排成,n×m矩阵,按列交织后存储或传送,读出或接收时恢复原来的排列,若(m,k)码能纠t个错误,那么交织后就可纠m个错误。
对纠正信道传输过程中出现的突发错误效果明显,如图2所示。
图2 交织编码示例GSM中使用这种比特交织器。
其交织方式为将信道编码后的每20ms的数据块m=456b拆分到8组中,每组57b,然后这每组57 b分配到不同的Burst中三、实验流程卷积交织解卷积交织四、源程序1、交织程序1)卷积交织function [aa]=jiaozhi(bb,n)%jiaozhi.m 卷积交织函数n=28; %分组长度%bb 卷积交织前原分组序列%aa 卷积交织后分组序列%序号重排方式:cc=[ 1 23 17 11 5 17 21; 8 2 24 18 12 6 28; 15 9 3 25 19 13 7; 22 16 10 4 26 20 14 ];%交织矩阵bb=[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28];for i=1:naa(i)=bb(cc(i));end(2)循环等差交织function [aa]=jiaozhi_nocnv(bb,n)%jiaozhi_nocnv.m 循环等差交织函数n=28; %分组长度%bb 循环等差交织前原分组序列%aa 循环等差交织后还原分组序列%序号重排方式:bb=[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ]; j=1;for i=1:nj=rem(j+5-1,n)+1; %序号重排方式迭代算法aa(n+1-i)=bb(j);end2、解交织程序(1)解卷积交织function [bb]=jiejiaozhi(aa,n)%jiejiaozhi.m 解卷积交织函数n=28;% 分组长度%aa 解卷积交织前原分组序列%bb 解卷积交织后分组序列%序号重排方式:cc=[ 1 23 17 11 5 27 21; 8 2 24 18 12 6 28; 15 9 3 25 19 13 7 ;22 16 10 4 26 20 14 ]; aa=[ 1 8 15 22 23 2 9 16 17 24 3 10 11 18 25 4 5 12 19 26 27 6 13 20 21 28 7 14 ]; for i=1:nbb(cc(i))=aa(i);end(2)解循环等差交织function [bb]=jiejiaozhi_nocnv(aa,n)%jiaozhi_nocnv.m 解循环等差交织函数n=28;% 分组长度%aa 解循环等差交织前原分组序列%bb 解循环等差交织后还原分组序列%序号重排方式:aa=[ 1 24 19 14 9 4 27 22 17 12 7 2 25 20 15 10 5 28 23 18 13 8 3 26 21 16 11 6];j=1;for i=1:nj=rem(j+5-1,n)+1; %序号重排方式迭代算法bb(j)=aa(n+1-i);End交织码通常表示为(M,N),分组长度L=MN,交织方式用M行N列的交织矩阵表示。
卷积码实验报告

卷积码实验报告篇一:卷积码实验报告实验五信道编解码()本章目标掌握数字频带传输系统调制解调的仿真过程掌握数字频带传输系统误码率仿真分析方法 5.1实验目的1. 使用MATLAB进行卷积码编/译码器的仿真。
2. 熟练掌握MATLAB软件、语句。
3. 了解卷积码编/译码器的原理、知识。
5.2实验要求1. 编写源程序、准备测试数据。
2. 在 MATLAB环境下完成程序的编辑、编译、运行,获得程序结果。
如果结果有误,应找出原因,并设法更正之。
5.3 实验原理(一)卷积码编码器 1. 连接表示卷积码由3个整数n,k,N描述。
k/n也表示编码效率(每编码比特所含的信N称为约束长度,息量);但n与线性分组码中的含义不同,不再表示分组或码子长度;表示在编码移位寄存器中k元组的级数。
卷积码不同于分组码的一个重要特征就是编码器的记忆性,即卷积码编码过程中产生的n元组,不仅是当前输入k元组的函数,而且还是前面N?1个输入k元组的函数。
实际情况下,n和k经常取较小的值,而通过N的变化来控制编码的能力和复杂性。
下面以图1中的卷积码编码器为例介绍卷积码编码器。
该图表示一个约束长度K?3的(2,1)卷积译码器,模2加法器的数目为n?2,因此,编码效率k/n?1/2。
在每个输入比特时间上,1位信息比特移入寄存器最左端的一级,同时将寄存器中原有比特均右移一级,接着便交替采样两个模2加法器,得到的码元就是与该输入比特相对应的分支字。
对每一个输入信号比特都重复上述采样过程。
图1卷积码编码器(编码效率1/2,K?3)用于描述反馈移位寄存器实现循环码时所使用的生成多项式也可用户描述卷积码编码器的连接。
应用n个生成多项式描述编码的移位寄存器与模2加法器的连接方式,n个生成多项式分别对应n个模2加法器,每个生成多项式不超过K?1阶。
仍以图1中的编码器为例,用生成多项式g1(X)代表上方连接,g2(X)代表下方连接,则有:g1(X)?1?X?X2g2(X)?1?X2多项式中的最低阶项对应于寄存器的输入级。
无线光通信卷积交织与编码的实验及仿真研究

万方数据 万方数据第4期宋效正等:无线光通信卷积交织与编码的实验及仿真研究·15·也受限,我们研究将卷积交织结合(1/2,7)卷积编码的方案用于无线光通信系统。
卷积交织器【9】相对于块交织和随机交织器,所需的存储空间降低4倍,交织延迟也能降低一半;另外一般低信噪比时,卷积编码比同等复杂度的分组码有更好的性能。
为了方便对通信系统的性能进行评估和相关的理论仿真研究,根据无线光信道的特征,地面无线光通信系统的建模如图2所示,在此基础上也完成了相应的外场无线光通信实验系统,以进一步检验无线光通信系统的性能。
图2无线光通信系统模型3实验系统设计和研制无线光通信的实验系统装置如图3所示,发射和接收光学望远镜采用收发分离式,这样可以降低干扰;而且实验装置能够自由调节方位,通过一个单筒望远镜很容易实现光路对准;此外通信光机利用基座的重量和固定的三角支架降低周围环境抖动对光束的影响。
图3无线光通信实验系统装置外场无线光通信实验系统的原理框图如图4所示。
信源经过码率为l/2的卷积编码后,信道的数据传输速率达到34.368Mbi“s。
为了使衰落造成的突发错误离散化,通过合理控制eplc6FPGA的大容量双端口RAM的读写地址即可实现(16,4096)的Femoy型一J比特卷积交织设计。
交织后的二进制数据流,00K方式调制激光器,调制光束经过准直系统从光机的发射端输出,然后经远处角锥棱镜反射后,此光束再次进入光机的接收系统,接着完成光电检测、信号的时钟同步和数据判决等。
二卷卷发射进加帧积积———+光学—'制+头编———————+交填零系统流码织角维锥误棱特解帧时钟接收._镜码比.一交检._数据光学观译织测恢复系统测码图4外场无线光通信系统原理图为了保证接收端正确解比特交织和Viterbi译码,该系统采用了帧同步技术设训10J。
在进行比特卷积交织时,帧头和编码后的第一信息比特从交织器的第一行输出,直通。
卷积码实验报告

卷积码实验报告篇一:卷积码实验报告实验五信道编解码()本章目标掌握数字频带传输系统调制解调的仿真过程掌握数字频带传输系统误码率仿真分析方法 5.1实验目的1. 使用MATLAB进行卷积码编/译码器的仿真。
2. 熟练掌握MATLAB软件、语句。
3. 了解卷积码编/译码器的原理、知识。
5.2实验要求1. 编写源程序、准备测试数据。
2. 在 MATLAB环境下完成程序的编辑、编译、运行,获得程序结果。
如果结果有误,应找出原因,并设法更正之。
5.3 实验原理(一)卷积码编码器 1. 连接表示卷积码由3个整数n,k,N描述。
k/n也表示编码效率(每编码比特所含的信N称为约束长度,息量);但n与线性分组码中的含义不同,不再表示分组或码子长度;表示在编码移位寄存器中k元组的级数。
卷积码不同于分组码的一个重要特征就是编码器的记忆性,即卷积码编码过程中产生的n元组,不仅是当前输入k元组的函数,而且还是前面N?1个输入k元组的函数。
实际情况下,n和k经常取较小的值,而通过N的变化来控制编码的能力和复杂性。
下面以图1中的卷积码编码器为例介绍卷积码编码器。
该图表示一个约束长度K?3的(2,1)卷积译码器,模2加法器的数目为n?2,因此,编码效率k/n?1/2。
在每个输入比特时间上,1位信息比特移入寄存器最左端的一级,同时将寄存器中原有比特均右移一级,接着便交替采样两个模2加法器,得到的码元就是与该输入比特相对应的分支字。
对每一个输入信号比特都重复上述采样过程。
图1卷积码编码器(编码效率1/2,K?3)用于描述反馈移位寄存器实现循环码时所使用的生成多项式也可用户描述卷积码编码器的连接。
应用n个生成多项式描述编码的移位寄存器与模2加法器的连接方式,n个生成多项式分别对应n个模2加法器,每个生成多项式不超过K?1阶。
仍以图1中的编码器为例,用生成多项式g1(X)代表上方连接,g2(X)代表下方连接,则有:g1(X)?1?X?X2g2(X)?1?X2多项式中的最低阶项对应于寄存器的输入级。
matlab(n,k,m)卷积码原理及仿真

matlab(n,k,m)卷积码原理及仿真====================卷积码是一种重要的纠错码,它在通信系统中扮演着重要的角色。
特别是在高噪环境下,卷积码具有较好的性能表现,因此被广泛用于卫星通信、光纤通信等领域。
本文将介绍Matlab中实现(n,k,m)卷积码的基本原理以及仿真过程。
一、卷积码原理-------卷积码是一种非线性编码技术,它通过将信息序列与多个冗余序列进行卷积运算,生成新的编码序列。
卷积码具有较高的编码增益,同时具有较低的编码复杂度。
在(n,k,m)卷积码中,n表示编码长度,k 表示信息比特数,m表示每个码字所包含的冗余比特数。
二、Matlab仿真环境---------Matlab是一种强大的数学计算和仿真软件,它提供了丰富的工具和函数库,可以方便地实现各种数字通信系统。
在Matlab中,我们可以利用卷积码工具箱实现(n,k,m)卷积码的编码、译码和仿真。
三、仿真步骤------1.定义系统参数:包括信息比特数k、编码长度n、冗余比特数m 等。
2.生成随机信息序列:在Matlab中,可以使用rand函数生成随机比特序列作为信息序列。
3.编码:使用卷积码工具箱中的函数实现编码过程,生成冗余比特序列。
4.添加噪声:在通信系统中,噪声是不可避免的。
为了模拟高噪环境,可以在编码后的数据上添加高斯噪声。
5.译码:使用卷积码工具箱中的函数实现译码过程,恢复原始信息序列。
6.仿真结果分析:通过比较译码结果和原始信息序列,可以评估卷积码的性能。
四、示例代码------以下是一个简单的Matlab代码示例,用于实现(7,4,3)卷积码的编码、译码和仿真:```matlab%定义系统参数k=4;%信息比特数n=7;%编码长度m=3;%冗余比特数data=randi([0k-1],n,1);%生成随机信息序列noise=sqrt(0.1)*data+sqrt(0.9)*(randn(n,1));%添加高斯噪声con_code=codegen(k,m);%编码encoded=conv_mat(data',con_code');%卷积码矩阵表示法decoded=indelcod(con_code);%译码%比较译码结果和原始信息序列ifall(decoded==data)disp('译码成功!')elsedisp('译码失败!')end```五、总结----Matlab作为一种强大的数学计算和仿真软件,提供了丰富的工具和函数库,可以方便地实现各种数字通信系统。
卷积编码设计与仿真实验报告

卷积编码设计与仿真实验报告一、实验目的了解卷积码对信号的纠错性能,掌握维特比译码算法,分析卷积码不同码率下纠错能力的强弱,深刻理解CCSDS标准、信道编译码等相关概念和算法。
二、实验内容1、自己编码实现(2,1,3)卷积码的编译码,对比不同信噪比条件下,是否采用编码对于误码率性能的影响;2、基于MATLAB自带的vitdec函数实现对(2,1,7)卷积码以及2/3、3/4码率删除码的编译码,并对于不同码率抗噪声能力的强弱;3、构造BPSK调制、加性高斯白噪声的传输环境。
三、实验原理卷积码一般表示为(n,k,N)的形式,即将k个信息比特编码为n个比特的码组,N为编码约束长度,说明编码过程中相互约束的码段个数。
卷积码编码后的n个码元不仅与当前组的k个信息比特有关,还与前N-1个输入组的信息比特有关。
编码过程中相互关联的码元有N*n个。
R=k/n是编码效率。
编码效率和约束长度是衡量卷积码的两个重要参数。
典型的卷积码一般选n,k较小,但N值可取较大(>10),以获得简单而高性能的卷积码。
1、卷积码的编码原理卷积码的编码器一般比较简单,为一个具有k个输入端,n个输出端,m 级移位寄存器的有限状态有记忆系统。
下图所示为(2,1,7)卷积码的编码器。
图1 (2,1,7)卷积码编码器若输入序列为u=(u0u1u2u3……),则对应两个码字序列 C1=(ca0ca1ca2ca3……)和C2=(cb0cb1cb2cb3……),相应的编码方程可写为 P1=u*C1,P2=u*C2,P=(P1,P2)。
“*”符号表示卷积运算,P1,P2表示编码器的两个冲激响应,即编码器的输出可以由输入序列和编码器的两个冲击响应卷积而得到,故称为卷积码。
这里的冲激响应指:当输入为[1 0 0 0 0 … … ]序列时,所观察到的两个输出序列值。
由于上图N 值为7,故冲激响应至多可持续到第7位,可写为P1=[1 1 1 1 0 0 1],P2=[1 0 1 1 0 1 1]然后将两个输出端的码字序列合并为一个码字序列为C=(ca0cb0ca1cb1ca2cb2……)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2kL条路径(序列),而是接收一段,计算和比较一段,选 择一段最大似然可能的码段,从而达到整个码序列是一个 最大似然值得序列。 下面以图6的(2,1,3)卷积码编码器所编出的码为 例,来说明维特比解码的方法和运作过程。为了能说明解 码过程,这里给出该码的状态图,如图7所
mj mj-1 mj-2
输出序列 m1,m2,…mj,… y1j y2j 输入序列
产生网格图 确定l 输入序列数是k的整数倍 寄存器个数是k的整数倍 开始 开始 寄存器个数是k的整数倍 输入序列数是k的整数倍 结束
图3.2 Viterbi译码程序流程图
4.卷积码的仿真 4.1 (2,1)卷积码的仿真
随机输入一组序列,本仿真实验中输入的序列是:1 0 1 1 0 1 0 0,通过卷积编码程序对所输入的序列进行 编码,得到卷积码输出,再对这个卷积码进行噪声干扰, 在实际通信系统中即相当于在空中传输过程中出现传输错 误,出现误码,译码器接收到错误的码字进行解码,理论
单位的输入信息有关,即和前2个子码有关;而且要经过2 个时间单位才能移出存贮器,所以也参与了后2个子码中 的校验运算,称为编码约束度,说明编码过程中互相约束 的码段个数。本例的编码约束度为3。m或是表示卷积码编 码器复杂性的一个重要参数。m或越大,编码器和译码器 越复杂,但卷积码的纠错能力也越强。因此这是一对矛 盾,在具体设计时要根据应用要求进行折衷处理,选择适 当的码型。 卷积码的描述方式为解析法和图解法两类。解析法 包括矩阵形式和生成多项式形式,图解法包括树图、状态 图和网格图。
三级项目报告
课程名称: 码___________ 课程设计题目: _______ 卷积码的仿真与分析 信息论与编
指导教师: ______________ 系 学 别: 号: 专 姓 业: 名: _____
合 作 者
完成时间:
2012 年 6 月 10 日至 6 月 14
日 成绩: 1. 卷积码及其编译码原理概述
图4.2.2 解码器输出的序列
5.卷积码误码率
卷积码是面向流的编码,自由距只影响其中相邻若 干比特的误码。码长是无穷的,而自由距是固定的,因此 不能用纠错能力或检错能力来描述卷积码的性能,比较公 平的一种描述是它的平均误比特率,或在一定(较短)帧长 的误帧率,或者研究在某一位置开始发生一次错误(序列) 的概率。 对卷积码译码误码率的仿真结果如下图5.1所示。图 中,横坐标是信噪比(SNR),是信息功率与噪声功率的比
非分组码的卷积码的编码器是在任一段规定时间内产 生n个码元,但它不仅取决于这段时间中的k个信息位,还 取决于前(K-1)段规定时间内的信息位,这K段时间内的码 元数目为K·k,称参数K为卷积码的约束长度,每k个比特 输入,得到n比特输出,编码效率为k/n,约束长度为K。 在k=1的条件下,移位寄存器级数m=K-1。 卷积码一般可用(n,k,K)来表示,其中k为输入码 元数,n为输出码元数,而K则为编码器的约束长度。典型的 卷积码一般选n和k ( k< n ) 值较小,但约束长度K可取较 大值(K<10),以获得既简单又高性能的信道编码[6]。 卷积码是1955年Elias最早提出,1957年Wozencraft提 出了序列译码。1963年Massey提出了一种性能稍差,但比 较实用的门限译码方法。1967年维特比(Viterbi)提出了 最大似然译码。它对存储器级数较小的卷积码的译码很容 易实现,称为维特比算法或维特比译码。
评阅人:
图1、二进制卷积码的编码器
图2给出了(3,1,2)二进制卷积码编码器。在每 一时间单位,输入一个比特信息,同时存贮器内的数据向 右移一位,产生3个比特的输出,其中一个是输入比特, 两个是校验比特,。
图2
由图可知: 因为校验比特是输入信息元的模2和,它们是线性关 系,所以这类卷积码是线性码。称为卷积码的一个子码或 码段,它不仅与当前输入信息有关,还与前2个(m)时间
a b c d
节点号 0 1 2 3 4 5 6 7 00 00 00 00 00 00 00 11 11 11 11 11
11 11 11 00 00 01 01 01 01 01 01 01 01 01 01 01 11 11 10 10 10 10
设输入编码器的信息序列为(11011000),则由编码 器对应输出的序列为Y=(1101010001011100),编码器的状 态转移路线为abdcbdca。若收到的序列R= (0101011001011100),对照网格图来说明维特比译码的方 法。
a b c d
节点号
0 1 2 3 00 00 00 11 11 11 01 01 01
图9
维特比译码第3时刻幸存路径
由于该卷积码的约束长度为6位,因此先选择接收序 列的前6位序列R1=(010101)同到达第3时刻的可能的8个码 序列(即8条路径)进行比较,并计算出码距。该例中到达 第3时刻a点的路径序列是(000000)和(111011),他们与R1 的距离分别为3和4;到达第3时刻b点的路径序列是 (000011)和(111000),他们与R1的距离分别为3和4;到达 第3时刻c点的路径序列是(001110)和(110101),他们与R1 的距离分别为4和1;到达第3时刻d点的路径序列是 (001101)和(110110),他们与R1的距离分别为2和3。上述 每个节点都保留码距较小的路径作为幸存路径,所以幸存 路径码序列是(000000)、(000011)、(1101001)和 (001101),如图9所示。用于上面类似的方法可以得到第 4、5、6、7时刻的幸存路径。
图4.2.1 编码器输出的卷积码
当通信过程中遇到噪声干扰,出现错码时。例如本 例中将第一位、第五位、第十位和最后一位更改。得到噪 声之后的序列,之后再将噪声之后序列送入译码程序进行 译码输出。经过维特比译码之后输出的输出序列理论上是 原始的输入序列,若与输入序列相同,则验证成功。 设置译码器输入端: 编码器输出的卷积码序列: channel_output=[ 1 1 1 0 1 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0000001000 1 1 1 1 0 1 1 1 0 0 0 0 0 0] 加了噪声之后的序列(被送到译码器中进行译码的序列):
图4.1.1 编码器输出的卷积码
当通信过程中遇到噪声干扰,出现错码时。例如本 例中将第一位、第五位、第十位和最后一位更改。得到噪 声之后的序列,之后再将噪声之后序列送入译码程序进行 译码输出。经过维特比译码之后输出的输出序列理论上是 原始的输入序列,若与输入序列相同,则验证成功。 设置解码器输入端: 编码器输出的卷积码序列: channel_output =[ 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0] 加了噪声之后的序列(被送到译码器中进行译码的序列): channel_output =[ 0 1 0 1 1 0 0 1 0 1 1 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1] 经过译码器译码之后的输出序列: decoder_output =[ 1 0 1 1 0 1 0 0] 该序列与原始的输入序列coder_input=[1 0 1 1 0 1 0 0]相 同,即还原到了原始的输入序列,达到了纠错的目的。验证成 功。
channel_output=[ 0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0000001000 1 1 1 1 0 1 1 1 0 0 0 0 0 1] 经过译码器译码之后的输出序列:decoder_output =[ 1 0 1 1 0 1 0 0] 该序列与原始的输入序列coder_input=[1 0 1 1 0 1 0 0]相同,即还原到了原始的输入序列,达到了纠错的 目的。验证成功。 仿真结果如图4.2.2所示。
3.卷积码编解码设计
开始 是 是 否 结束 否 i=i+1 是 是 error 否 否 输入序列数是k的整数倍 寄存器个数是k的整数倍 确定编码器寄存器个数G_2 确定编码器输出端个数n i=1 ? gg_out与输入矩阵G模2相乘输出 取输入序列前G_2 - i个,得到gg_out函数 i=i-1 gg_out与输入矩阵G模2相乘输出 取输入序列前G_2个,得到gg_out函数 i=i+1 i=寄存器个数G_2 -1 ? gg-out与输入矩阵G模2相乘输出 取输入序列前i个,其后补0得到gg_out函数 i=1 编码器初始化
开始
寄存器个数是k的整数倍 输入序列数是k的整数倍 i=1 gg-out与输入矩阵G模2相乘输出 gg_out与输入矩阵G模2相乘输出 gg_out与输入矩阵G模2相乘输出 结束
图3.1卷积码编码程序流程图 结束 error 是 是 否 否 由后到前得到各级的状态 从最佳路径中产生解码 回溯最佳路径 尾部信道更改幸存路径 尾部信道状态转移路径选择 无尾信道更改幸存路径 无尾信道更改汉明距 无尾信道计算汉明距,加、比、选 产生幸存状态矩阵 按输入输出划分矩阵 确定级数 产生状态转移矩阵、输出矩阵、输入矩阵 产生状态距离矩阵
上按照Viterbi译码算法是可以回溯到原始的正确码字 的,即正确的输入序列。现在对于编码程序在MATLAB系统 中对该实验进行仿真,验证译码是否正确,以得出是否有 差错控制的功能,即卷积码可以实现差错控制。 设置编码器输入端:
随机输入序列:
coder_input=[1 0 1 1 0 1 0 0] 输入(2,1)卷积码的生成矩阵: 设置输入端个数:k=1 则通过仿真得到编码器输出的卷积码序列: channel_output =[ 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0] 仿真结果如图4.1.1所示。