卷积码仿真报告
仿真实验报告
实验报告李文海 2014141223024 实验目的:1)熟悉和掌握实现常用信号的产生方法;;2)理解系统的单位冲激响应的概念,LTI 系统的卷积表达式及其物理意义,卷积的计算方法;3)理解典型信号的频谱特征;4)理解系统的频率响应的概念及其物理意义,理解具有不同频率响应特性的滤波器对信号的滤波作用;5)学会利用编程实现卷积以求解系统响应,并绘制相应曲线;6)学会利用编程实现一些典型信号的频谱分析,并绘制相应曲线。
实验内容:1) 编程产生以下三个正弦信号,并画出波形图。
1122312[]cos(2), []cos(2),[][] +[],x n f n x n f n x n x n x n ππ===其中f1=1/8,f2=5/8;用matlab 编程如下:n= [0:15];x1=cos(2*pi*0.125*n);x2=cos(2*pi*0.625*n);x3=x1+x2;figure(1);subplot(3,1,1);stem(n,x1);subplot(3,1,2);stem(n,x2);subplot(3,1,3);stem(n,x3); 运行结果:(由上到下依次是x1,x2,x3)2)编程计算下面卷积:已知h1[n]={0.0031,0.0044, -0.0031, -0.0272,-0.0346,0.0374, 0.1921, 0.32790.3279,0.1921,0.0374,-0.0346,-0.0272,-0.0031, 0.0044,0.0031 },n=0,1, (15)a、当h [n]=h1[n]时,输入分别为x1[n], x2[n]和x3[n]时系统的输出y[n],并画出波形图。
Matlab编程如下:h1=[ 0.0031 0.0044 -0.0031 -0.0272 -0.0346 0.0374 0.1921 0.32790.3279 0.1921 0.0374 -0.0346 -0.0272 -0.0031 0.0044 0.0031];h2=[-0.0238 0.0562 -0.0575 -0.1302 0.5252 -0.6842 -0.3129 5.6197 5.6197 -0.3129 0.6842 0.5252 -0.1302 -0.0575 0.0562 -0.0238];n1=[0:30];y11=conv(x1,h1);y12=conv(x2,h1);y13=conv(x3,h1);figure(2);subplot(3,1,1);stem(n1,y11);subplot(3,1,2);stem(n1,y12);subplot(3,1,3);stem(n1,y13);运行结果:h2[n]= {-0.0238,0.0562,-0.0575,-0.1302,0.5252, -0.6842,-0.3129,5.6197,5.6197,-0.3129,-0.6842,0.5252,-0.1302,-0.0575,0.0562,-0.0238}, n=0,1, (15)b、当h [n]= h2[n]时,输入分别为x1[n], x2[n]和x3[n]时系统的输出y[n],并画出波形图。
【报告】卷积码实验报告
【报告】卷积码实验报告一、实验目的本次卷积码实验的主要目的是深入理解卷积码的编码与译码原理,掌握其在数字通信系统中的应用,并通过实际实验操作和结果分析,评估卷积码的纠错性能和对通信质量的改善效果。
二、实验原理(一)卷积码的基本概念卷积码是一种有记忆的非分组码,它将输入的信息序列经过特定的编码器生成输出的码序列。
卷积码的编码过程不仅取决于当前输入的信息位,还与之前的若干个信息位有关。
(二)编码原理卷积码的编码器通常由若干个移位寄存器和模 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 仿真结果的分析通过仿真实验,学生们可以得到卷积码在不同信噪比下的误码率曲线等性能参数,从而对卷积码的性能有更深入的了解。
结论:通过本文的深入讨论,相信读者已经对通信综合课程设计中卷积码的实现与仿真有了更深入的理解。
缩短卷积码MATLAB仿真实训实习报告
缩短卷积码MATLAB仿真实训实习报告缩短卷积码MATLAB仿真实训实习报告(一)摘要现代通信系统的信道编码中几乎毫无例外的采用了先进的编码方式:卷积编码,如:码分多址通信系统CDMA,数字蜂窝通信系统GSM,数字集群通信系统TETRA等等,在差错控制中,卷积码表现出了优秀的纠错能力。
但是优秀的纠错能力是以降低频道利用率为代价。
在功能完备的通信系统中有许多使命不同的逻辑信道.不同的逻辑信道因为任务不同,对应的差错控制能力与频道利用率的要求是不一样的,有两种实现的方法:构建不同的卷积码或者应用同一个卷积码但是运用不同的缩短方案以适应不同的传输数码率,自然也有着相应的纠错能力和频带利用率。
在先进的数字集群系统中就是用的第二种方案,实践证明,删除型缩短卷积码的性能与最好的卷积码可以做到相当接近。
关键词:信道编码、缩短卷积码、纠错能力(二)缩短卷积码基本原理本实训目的是要构建一个具有卷积、解卷积和打孔、插零功能以及相应的传输环境的仿真系统来对各类卷积码进行缩短卷积码的仿真研究,得到相同频带利用率下不同打孔图形的差错控制能力定量结果。
用相同的生成多项式构建的维特比译码器和不同的压缩图形卷积码都可以在原打孔图形位置上嵌入填充的码元后进行译码。
仿真采用具有缩短卷积码和调制功能的仿真系统,用BernoulliRandomBinary产生每帧2码元的随机二进制码,进入卷积编码器后变成每帧6码元的二进制码流,再经过Puncture(打孔)模块后,变为删去选择码元后剩下的码元数,在调制和解调过程中,数据帧的大小不变,通过InsertZero(插零)模块在原来删去码元的位置插入码元0,解卷积,恢复每帧2码元。
Puncture模块中的打孔矢量应与输入信号具有相同的帧长度,而且要与InsertZero模块中的插零矢量相同,矢量(vector)中的0就是打掉马远的位置,也是在解卷积之前插入0的位置,1是保留码元的位置,而矢量的长度与0的数目以及卷积码的结构共同决定了编码效率。
卷积码(或者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多项式中的最低阶项对应于寄存器的输入级。
信号的卷积实验报告
信号的卷积实验报告
《信号的卷积实验报告》
在现代通信系统中,信号的处理是至关重要的。
信号的卷积是一种常用的信号
处理方法,通过将两个信号进行卷积运算,可以得到新的信号,从而实现信号
的处理和分析。
在本实验中,我们将对信号的卷积进行实验,以探索其在通信
系统中的应用和意义。
实验过程如下:首先,我们准备了两个输入信号,分别为信号A和信号B。
然后,我们将这两个信号进行卷积运算,得到输出信号。
接着,我们对输出信号
进行分析,观察其频谱特性和时域特性。
最后,我们将对实验结果进行总结和
讨论,探讨信号的卷积在通信系统中的实际应用。
通过实验,我们发现信号的卷积可以实现信号的滤波、信号的延迟和信号的叠
加等功能。
在通信系统中,信号的卷积可以用于信号的编码和解码、信道的均
衡和信号的复原等方面。
因此,信号的卷积在通信系统中具有重要的意义和应
用价值。
总之,通过本次实验,我们对信号的卷积有了更深入的理解,并认识到其在通
信系统中的重要性。
希望通过这篇实验报告,能够让更多的人了解信号的卷积,并对其在通信系统中的应用有更清晰的认识。
卷积码实验报告
卷积码实验报告篇一:卷积码实验报告实验五信道编解码()本章目标掌握数字频带传输系统调制解调的仿真过程掌握数字频带传输系统误码率仿真分析方法 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作为一种强大的数学计算和仿真软件,提供了丰富的工具和函数库,可以方便地实现各种数字通信系统。
卷积码差错系统控制的仿真[1]
《移动通信》课程设计报告课题题目:卷积码差错系统控制的仿真年级:通信姓名:***学号:11指导老师:2011年6月16日第一章引言 (1)1.1 课程设计的目的 (1)1.2 课程设计的要求与思路 (2)第二章原理 (3)2.1 卷积码 (3)2.2 卷积码的维特比译码 (3)第三章Matlab中卷积码译码器的设计过程与仿真 (5)3.1 仿真框图模型 (5)3.2 各部分模块参数设置 (6)第四章Matlab中卷积码译码器的误码率分析 (10)第五章总结 (12)5.1心得体会 (12)5.2参考文献 (12)第一章引言本课程设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出,并通过Matlab软件进行设计与仿真。
卷积码的译码有两种方法(软判决和硬判决),此课程设计采用硬判决的维特比译码。
1.1课程设计的目的1、熟悉Simulink与通信仿真;2、掌握通信系统的构成;实现信息传递所需的一切技术设备和传输媒质的总和称为通信系统。
以基本的点对点通信为例,通信系统的组成[1],如图1-1 所示。
图1-1 通信系统的的模型图中,信源(信息源,也称发终端)的作用是把待传输的消息转换成原始电信号,如电话系统中电话机可看成是信源。
信源输出的信号称为基带信号。
所谓基带信号是指没有经过调制(进行频谱搬移和变换)的原始电信号,其特点是信号频谱从零频附近开始,具有低通形式,。
根据原始电信号的特征,基带信号可分为数字基带信号和模拟基带信号,相应地,信源也分为数字信源和模拟信源。
发送设备的基本功能是将信源和信道匹配起来,即将信源产生的原始电信号(基带信号)变换成适合在信道中传输的信号。
变换方式是多种多样的,在需要频谱搬移的场合,调制是最常见的变换方式;对传输数字信号来说,发送设备又常常包含信源编码和信道编码等。
信道是指信号传输的通道,可以是有线的,也可以是无线的,甚至还可以包含某些设备。
图中的噪声源,是信道中的所有噪声以及分散在通信系统中其它各处噪声的集合。
卷积编码设计与仿真实验报告
卷积编码设计与仿真实验报告一、实验目的了解卷积码对信号的纠错性能,掌握维特比译码算法,分析卷积码不同码率下纠错能力的强弱,深刻理解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、使用MATLAB进行卷积编码的代码编写、运行、仿真等操作;2、熟练掌握MATLAB软件语句;3、理解并掌握卷积编码的原理知识。
二、实验原理卷积码是由Elias于1955 年提出的,是一种非分组码,通常它更适用于前向纠错法,因为其性能对于许多实际情况常优于分组码,而且设备较简单。
卷积码的结构与分组码的结构有很大的不同。
具体地说,卷积码并不是将信息序列分成不同的分组后进行编码,而是将连续的信息比特序列映射为连续的编码器输出符号。
卷积码在编码过程中,将一个码组中r 个监督码与信息码元的相关性从本码组扩展到以前若干段时刻的码组,在译码时不仅从此时刻收到的码组中提取译码信息,而且还可从与监督码相关的各码组中提取有用的译码信息。
这种映射是高度结构化的,使得卷积码的译码方法与分组译码所采用的方法完全不同。
可以验证的是在同样复杂度情况下,卷积码的编码增益要大于分组码的编码增益。
对于某个特定的应用,采用分组码还是卷积码哪一种更好则取决于这一应用的具体情况和进行比较时可用的技术。
(一)卷积编码的图形表示卷积码的编码器是由一个有k 个输人位,n 个输出位,且有m 个移位寄存器构成的有限状态的有记忆系统,其原理如图1所示。
图1 卷积码编码器的原理图描述这类时序网络的方法很多,它大致可分为两大类型:解析表示法与图形表示法。
在解析法中又可分为离散卷积法、生成矩阵法、码多项式法等;在图形表示法中也可分为状态图法、树图法和网络图法等。
图2给出的是一个生成编码速率为1/2 卷积码的移位寄存器电路。
输人比特在时钟触发下从左边移人到电路中,每输入一位,分别去两个模2加法器的输出值并复用就得到编码器的输出。
对这一编码,每输入一比特就产生两个输出符号,故编码效率为1/2。
可以看出,每个特定的输入比特不仅影响本时间间隔内的编码器输出,同时还影响紧接着的下两个输入比特时间间隔的编码器输出。
卷积编码由移位寄存器的阶数、输出的数量(即模2加法器的个数)和移位寄存器与模2 加法器间的连接所决定。
卷积码编译码matlab仿真
一、概述卷积码是一种常用的编码技术,用于提高数字通信系统的可靠性和抗干扰能力。
而编码的解码过程则需要运用编译码技术,以恢复原始数据。
Matlab作为一种强大的工程仿真软件,可以用来对卷积码编译码进行仿真分析,帮助工程师们更好地理解和优化卷积码系统,提高通信系统的性能。
二、卷积码原理1. 卷积码的概念卷积码是一种线性块码,它采用移位寄存器和模2加法器进行编码,通过引入冗余比特来提高信号的可靠性。
卷积码的编码过程可以简单描述为:将输入信息数据与特定的生成多项式进行卷积运算,得到编码后的输出数据。
2. 卷积码的特点卷积码具有较高的编码效率和能够很好地控制码长、纠错能力等特性,因此在实际通信系统中得到广泛应用。
三、编译码原理1. Viterbi算法卷积码的译码过程通常采用Viterbi算法,它是一种最大似然译码算法,通过计算最小距离路径的方式来进行译码。
Viterbi算法能够有效地对卷积码进行解码,提高译码的准确性。
2. 编译码的实现在Matlab中,编译码的实现通常是通过编写一定的程序来模拟Viterbi算法的译码过程。
通过仿真分析,可以评估不同的编码方案对通信系统性能的影响。
四、Matlab仿真环境1. Matlab的特点Matlab作为一种强大的仿真软件,具有丰富的工具和函数库,能够方便地进行数字通信系统设计与仿真分析。
Matlab提供了直观的图形界面和强大的数据处理能力,可用于展示仿真结果和进行数据分析。
2. 使用Matlab进行卷积码编译码仿真在Matlab环境中,可以编写程序来实现卷积码的编码和Viterbi算法的译码过程。
通过调用Matlab中的工具函数和绘图函数,可以直观地展示通信系统的性能指标,并对比不同编码方式的性能差异。
五、仿真实例分析1. 卷积码编码仿真我们可以编写Matlab程序,实现对卷积码的编码过程。
通过模拟不同的编码率和约束长度,可以观察到编码后的效果,并评估编码的性能。
2019年卷积码实验报告-word范文模板 (18页)
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==卷积码实验报告篇一:卷积码实验报告 (C++)计算机科学与工程系一、实验名称:卷积码二、实验环境软件环境:Windows 201X,Microsoft Visual C++6.0硬件环境:P4,2.4GHz,256内存,IBM-PC及兼容机三、实验目的了解卷积码的编码原理,给定基本监督矩阵,导出一致监督矩阵、基本生成矩阵、一致生成矩阵,能够通过监督矩阵或生成矩阵编出截断码或非截断码。
四、实验过程与实验结果源程序:#include<iostream>#include<string>using namespace std;class JuanjiCode{private:int i,j,t;int n0,k0,r0,m;int **h,**H,**g,**G;//实现编码所需变量int code;string Info_str,Code_str;int total_num,extra_num;public:void Initializing();void Trans_h_to_H();void Trans_h_to_g();void Print_g();void Trans_g_to_G();void Print_G();//编码void Before_Encoding();//编码前的准备int Check(string);void Encoding();};/**********************初始化模块**********************/ void JuanjiCode::Initializing(){cout<<"请输入码字长n0=";cin>>n0;cout<<"请输入信息元个数k0=";cin>>k0;cout<<"请输入关联长度m=";cin>>m;//监督元个数r0=n0-k0;//动态分配存储单元h=new int*[r0];for(i=0;i<r0;i++)h[i]=new int[m*n0];cout<<"请输入("<<n0<<","<<k0<<","<<m<<")卷积码的基本监督矩阵h["<<r0<<"]["<<m*n0<<"]:"<<endl;for(i=0;i<r0;i++)for(j=0;j<m*n0;j++)cin>>h[i][j];//检测,输出hcout<<"您输入的基本监督矩阵h["<<r0<<"]["<<m*n0<<"]如下:\n"<<endl; for(i=0;i<r0;i++){for(j=0;j<m*n0;j++){cout<<h[i][j];if((j+1)%n0==0)cout<<" ";}cout<<endl;}cout<<endl;//动态分配存储单元H=new int*[m*r0];for(i=0;i<m*r0;i++)H[i]=new int[m*n0];g=new int*[m*k0];for(i=0;i<m*k0;i++)g[i]=new int[n0];G=new int*[m*k0];for(i=0;i<m*k0;i++)G[i]=new int[m*n0];}//由基本监督矩阵h导出一致监督矩阵H并打印输出void JuanjiCode::Trans_h_to_H(){cout<<"该卷积码对应的一致监督矩阵H["<<m*r0<<"]["<<m*n0<<"]如下(未输出部分全为0):\n"<<endl;for(t=0;t<m;t++){for(i=0;i<r0;i++){for(j=0;j<(t+1)*n0;j++){H[t*r0+i][j]=h[i][(m-t-1)*n0+j];cout<<H[t*r0+i][j];。
卷积码编译码实验报告
厦门理工学院实验报告书课程名称:信息论与编码实验实验名称:卷积码编译码m•个有效的寄存器单元,而输出移位寄存器仅中输入移位寄存器最多只有k起一个并串转换作用。
因此称参量m为卷积吗的记忆长度(段)2、维比特译码原理它的基本思想是把接收到的矢量,和网格图上诸种可能的路径比较,删去距离大的路径,保留距离小的路径,以距离最小路径作为发码的估值五、实验内容在MATLAB环境下卷积码编/解码器的实现。
1、主函数main.mclear;clc;msg = randint(1,20,[0,1])word = encode_conv213(msg)word(1) =~word(1); %信道中存在污染,人为的模拟传输过word(10) =~word(10); %程中的出错码字word(15) =~word(15);word1=wordmsg_1 = decode_conv213(word1)msg-msg_12 、状态积state_machine.mfunction [output,nextState] = state_machine(input,current_state)output(1) = mod(current_state(1)+current_state(3),2);output(2) = mod(input+current_state(2)+current_state(1),2);nextState(1) = current_state(2);nextState(2) = current_state(3);nextState(3) = input;3、汉明距离hamming_distance.mfunction distance = hamming_distance(a,b)temp = a+b;temp = mod(temp,2);distance = sum(temp);4 、213编码程序encode_conv213.mfunction word = encode_conv213(msg)word = zeros(1,length(msg)*2);current = [0 0 0];for i = 1:length(msg)[out,next] = state_machine(msg(i),current);current = next;word(2*i-1) = out(1);word(2*i) = out(2);End5、213维比特译码decode_conv213.mfunction msg = decode_conv213(word)chip = 10; %初始状态选十个信息for i = 1:2^chipM(i,:) = de2bi(i-1,chip); %把所有可能性按二进制输出W(i,:) = encode_conv213(M(i,:));%得到相应的二进制编译后的码字D(i) = hamming_distance(W(i,:),word(1:chip*2));%与出错码字对比得到汉明距end[val,index] = sort(D);%val中存汉明距从小到大排列,index中存对应val数据所在位置ret_msg = zeros(1,length(word)/2); %开辟译出码字的存放空间for i = 1:6%1024种选择6种最小距离,并输出在ret_msg中,最小汉明距存于ret_dis ret_msg(i,1:chip) = M(index(i),:);ret_dis(i) = D(index(i));enditer = (length(word)-chip*2)/2; %剩余要译出的码字个数for i=1:iter %迭代过程for j=1:6msg_temp1 = [ret_msg(j,1:chip+i-1) 0]; %下一状态出“0”msg_temp2 = [ret_msg(j,1:chip+i-1) 1]; %下一状态出“1”word_temp1 = encode_conv213(msg_temp1);%下一状态为“0”时的编码word_temp2 = encode_conv213(msg_temp2);%下一状态为“1”时的编码dis_temp1 = hamming_distance(word_temp1,word(1:chip*2+2*i));dis_temp2 = hamming_distance(word_temp2,word(1:chip*2+2*i)); %算两种汉明距if (dis_temp1<dis_temp2)ret_msg(j,1:chip+i) = msg_temp1;ret_dis(j) = dis_temp1;elseret_msg(j,1:chip+i) = msg_temp2;ret_dis(j) = dis_temp2;%选择较小汉明距的状态储存并输出在ret_msg中,最小汉明距存于ret_disendendend[val,index] = sort(ret_dis); %把最终选择的6种最小汉明距按从小到大排列msg =ret_msg(index(1),:); %选出维特比译码最小的距离所译出的信息六、实验数据记录及分析(包括源程序清单及运行结果):。
卷积码实验报告
现代编码理论基于MATLAB的卷积码编码及译码仿真姓姓名名:闫嘉川学学号号:1433170所在院系:电子与信息工程学院实验名称:基于MAATLAB的卷积码编码及译码仿真实验目的:卷积码是一种性能优越的信道编码。
它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。
随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。
本实验简明地介绍了卷积码的编码原理和Viterbi译码原理。
并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。
最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。
经过仿真和实测,并对测试结果作了分析。
实验原理:1、卷积码编码原理卷积码是一种性能优越的信道编码,它的编码器和解码器都比较易于实现,同时还具有较强的纠错能力,这使得它的使用越来越广泛。
卷积码一般表示为(n,k,K)的形式,即将 k个信息比特编码为 n 个比特的码组,K 为编码约束长度,说明编码过程中相互约束的码段个数。
卷积码编码后的 n 各码元不经与当前组的 k 个信息比特有关,还与前 K-1 个输入组的信息比特有关。
编码过程中相互关联的码元有 K*n 个。
R=k/n 是编码效率。
编码效率和约束长度是衡量卷积码的两个重要参数。
典型的卷积码一般选 n,k 较小,K 值可取较大(>10),但以获得简单而高性能的卷积码。
卷积码的编码描述方式有很多种:冲激响应描述法、生成矩阵描述法、多项式乘积描述法、状态图描述,树图描述,网格图描述等。
2、卷积码Viterbi译码原理卷积码概率译码的基本思路是:以接收码流为基础,逐个计算它与其他所有可能出现的、连续的网格图路径的距离,选出其中可能性最大的一条作为译码估值输出。
概率最大在大多数场合可解释为距离最小,这种最小距离译码体现的正是最大似然的准则。
卷积码的最大似然译码与分组码的最大似然译码在原理上是一样的,但实现方法上略有不同。
卷积码的仿真与分析-信息论报告
三级项目报告课程名称:信息论与编码___________ 课程设计题目:卷积码的仿真与分析_______指导教师:______________系别:专业:学号:姓名: _____合作者完成时间: 2012 年 6 月 10 日至 6 月 14 日成绩:评阅人:1. 卷积码及其编译码原理概述非分组码的卷积码的编码器是在任一段规定时间内产生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)二进制卷积码编码器。
在每一时间单位,输入一个比特信息i m,同时存贮器内的数据向右移一位,产生3个比特的输出i c ,其中一个是输入比特i m,两个是校验比特,1i p ,,2i p 。
图2由图可知: ,12,212i i i i i i i p m m p m m m ---=⊕=⊕⊕因为校验比特是输入信息元i m的模2和,它们是线性关系,所以这类卷积码是线性码。
称i c为卷积码的一个子码或码段,它不仅与当前输入信息有关,还与前2个(m )时间单位的输入信息有关,即和前2个子码有关;而且i m要经过2个时间单位才能移出存贮器,所以i c 也参与了后2个子码中的校验运算,称1N m =+为编码约束度,说明编码过程中互相约束的码段个数。
卷积码编译实验报告
【实验名称】卷积码的编码与译码【实验内容】写一份程序实现卷积码的编码和译码。
【实验原理】卷积码的编码方法是对输入的数据流每次1比特或K比特进行编码,输出N 个编码符号。
但输出的码字的每个码元不仅和当前时刻输入的K个信息有关,也和之前的M个连续输入的信息元有关,因此卷积编码是有记忆的。
而译码则是通过一串码字通过状态流程图或网格图找出唯一的最佳路径进行逆推而得到码元信息。
(这里不再赘述,下面有例子说明)。
【实验流程】(举例说明如下)1、编码过程:本次设计以(2,1,2)卷积码为例。
图1为这种卷积编码器的结构,它的编码方法是:序列依此移入一个两级移位寄存器,编码器每次输入一位信息b,输出端的开关就在c1和c2之间来回切换一次,输出为c1c2,其中c1=b1+b2+b3c2=b1+b3图1(2,1,2)卷积编码器假设寄存器m1、m2的起始状态为全零,则编码器的输入输出时序关系图可用图2来表示。
图2 (2,1,2)卷积编码器输入输出时序如果输入的数据流是101011,则根据上面编码器我们可以得到输出的编码数据流为11 10 00 10 00 01。
.2、解码过程解码是编码的逆过程,了解了编码过程后,理解解码过程的操作就相对容易了。
首先我们根据卷积码的特点,我们采用了两种图解对卷积码进行研究,一种是状态转移图,另一种是网格图。
其状态转移图如图3所示,椭圆里面的数据代表当前状态,箭头方向代表转移的方向,0/11代表输入的码元为0,输出11。
.图3 (2,1,2)卷积编码器状态转移图另一种更为常用的是网格图,横坐标表示时间轴,每一次状态转移利用连接相邻的时间点上的两个状态的有向线段来表示。
图4便是对应的网格图。
图4 (2,1,2)卷积编码器网格图我们解码的思路是由于信息序列和编码序列有着一一对应的关系,而这种关系又唯一对应网格图的一条路径,因此译码就是根据接收序列在网格图上的路径逆推出源码码元信息序列。
但是这样的最大似然译码在现实编码难以实现,因为找出最佳路径用的是逐步比较,把接收序列的第j个分支码字和网格图上相应的两个时刻t1和t2之间进行比较,计算和记录他们的汉明距离等,这样比较分支较多不易实现。
移动通信实验报告卷积编码
西安邮电学院移动通信实验报告实验名称:卷积编码专业:通信工程系班级:通工0713班姓名:***学号:********实验日期:一、 实验目的1、 对卷积码要掌握2、 根据原理框图计算其输出3、 掌握气生成矩阵4、 熟悉软件实现的算法二、卷积编码原理(2,1,3)卷积编码方框图:(2,1,3)码,n=2 模2加法器个数,k=1 输入维数,m=2 移位寄存器个数,一个转换开关使输出成串行。
对于信息序列()012,,,u u u u =,编码器的两个输出为: (1)(1)(1)(1)012(2)(2)(2)(2)012(,,,)(,,,)c c c c cc c c ==三、编码器输出可以由下式来确定: 01m 01m 01m 01m ∞⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦G G G G G G G G G G G G G 输入U =(10111)要求:1)根据图求出G111011111011111011G ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦(1)(2)(1)(2)(1)(2)001122(,,,,,,)c c c c c c c =c =uG2)在给定u的时候计算输出码字C(手工)输出码字为:11 10 00 01 1011101100000011101111101111101111 10 00 01 10 01 113)在给定u的时候计算输出码字C四、 C语言代码如下:#include"stdio.h"#include"iostream.h"void main(){int i;int j;int n;int k;int m;int l;int flag;int num;int b[100];int G[3][6]={{1,1,1,1,1,0},{1,0,1,1,1,1},{1,1,1,0,1,1}};int c[500];cout<<"卷积码(2,1,3)编码方案"<<endl;cout<<"矩阵G:"<<endl;for(i=0;i<=2;i++){for(j=0;j<=5;j++)cout <<G[i][j]<<" ";cout<<endl;}cout <<"input the number of the sequence (<=100):"<<endl;cin >>num;for(i=0;i<num;i++){cin >>b[i];}cout<<"-------------------"<<endl;c[0]=b[0];c[1]=b[0];c[2]=b[0]+b[1];c[3]=b[1];n=3;m=-1;flag=0;i=0;j=0;do{for(k=0;k<=5;k++){m++;for(l=0;l<=1;l++){n++;c[n]=(b[m]*G[i][j]+b[m+1]*G[(i+1)%3][j]+b[m+2]*G[(i+2)%3][j])%2;cout <<"c[n]="<<c[n]<<endl;j=(j+1)%6;if(num<m+2){flag=1;break;}}if(flag==1)break;i=(i+1)%3;}}while(flag==0);for(i=0;i<2*num;i++)cout <<c[i]<<endl;}五、实验分析及心得体会卷积码的应用很广泛。
汉明码卷积码实验报告
天津理工大学实验报告学院(系)名称:计算机与通信工程学院{ cout<<"\t\t\t 操作错误!请执行输入!"<<endl;goto C;}hmcoding.Checking();hmcoding.Decoding();}else if(choice=='Z'||choice=='z'){ if(!flag) { cout<<"\t\t\t操作错误!请执行输入建立操作后再进行本操作!"<<endl; goto C; }//进入增余汉明码系统hmcoding.GOTO_HMCding_Z();}else if(choice=='Q'||choice=='q')//退出{ exit(0); }else//如果选了选项之外的就让用户重新选择{ cout<<"\t\t\t没有输入正确的步骤,请重新输入!"<<endl;goto C;}cout<<endl;} }运行结果:卷积码程序编写:#include<iostream>#include<string>using namespace std;class JuanjiCode{private:int i,j,t;int n0,k0,r0,m;int **h,**H,**g,**G; //实现编码所需变量int code;string Info_str,Code_str;int total_num,extra_num;public:void Initializing();void Trans_h_to_H();void Trans_h_to_g();void Print_g();void Trans_g_to_G();void Print_G(); //编码void Before_Encoding();//编码前的准备int Check(string);void Encoding();};/**********************初始化模块**********************/ void JuanjiCode::Initializing(){cout<<"请输入码字长n0=";cin>>n0;cout<<"请输入信息元个数k0=";cin>>k0;cout<<"请输入关联长度m=";flag=1;}J_Code.Initializing();J_Code.Trans_h_to_H();J_Code.Trans_h_to_g();J_Code.Trans_g_to_G();}else if(choice=='2'){ if(!flag){cout<<"操作错误!请执行初始化操作后再进行本操作!"<<endl; goto C;} //编码J_Code.Encoding();}else if(choice=='3'){exit(0);//退出}else//如果选了选项之外的就让用户重新选择{cout<<"您没有输入正确的步骤,请重新输入!"<<endl;}cout<<endl;}}运行结果:心得体会:这次的实验是实现汉明码的编码与译码,达到纠错功能以及卷积码的编码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
卷积码仿真报告
卷积码编码原理
卷积码和分组码一样,也是将k 个信息比特编成n 个比特,但与分组编码的不同之处在于卷积码的编后的n 个比特不仅与当前k 个信息比特有关,还与前面的(N-1)*k 个信息有关,,编码过程中互相的比特个数为Nk 。
卷积码的纠错能力随N 的增加而增大,N 称为卷积的约束深度(记忆深度),通常可记为(n,k,N ),表示码率为R=k/n 、约束长度为N 的卷积码。
一般来说,卷积码的k 和m 都很小,码率也比较低,一般低于90%,所以其纠错能力很强。
由于卷积码充分利用了各码组之间的相关性,无论理论上还是实际中均已证明其性能不差于甚至优于分组码。
但是与有严格代数结构的分组码不同,卷积码至今尚未找到可以把纠错性能与码的构成有规律地联系起来的严密的数学手段。
目前大都采用计算机来搜索好码。
因此,对卷积码的研究还在发展中。
卷积编码的一般结构
卷积码编码器的一般结构如上图所示,数据经过串、并变换器后形成k bits 一帧的并行数据送到线性逻辑单元,同时送入m 级数据帧移位寄存器,m 是移位寄存器的存储深度。
编码逻辑根据当前输入数据和存放在数据寄存器中的以前数据进行线性逻辑运算得到 nbits 编码输出,再经过并、串变换转换成串行输出。
m 十1称为该卷积码的约束长度。
用u 表示输入消息数据序列
012(,,,)u u u u
m 个输出数据序列为
11,01,11,2(,,,)c c c c =
22,02,12,2(,,,)c c c c =
,0,1,2(,,,)m m m m c c c c =
经并串变换的输出为
1,02,0,01,12,1,1(,,,,,,)m m c c c c c c c =
卷积码是一种重要的实现差错控制的信道编码,其译码方式有三种:Viterbi 译码、序列译码和门限译码。
本项目拟定采用Viterbi 译码方式,故在些只考虑 Viterbi 译码算法。
Viterbi 译码算法是卷积码最常用的译码算法,它具有最佳的译码性能,但其硬件实现比较复杂。
Viterbi 译码算法已被广泛使用在通信和数字信号处理领域。
Viterbi 译码原理
(n,k,m)卷积码编码器共有2km 个状态,若输入的信息序列长度是Lk 十mk ,则进入和离开每一状态各有2km 条分支,在trellis 图上有2kL 条不同的路径,相应于编码器输出的2kL 个码序列。
若按照最大似然译码算法,我们要比较所有可能的2kL 条路径,这个计算量通常是无法实现的。
Viterbi 算法克服了这个难点,采用接收一段,计算、比较一段,选择一段最可能的分支,从而达到整个码序列是一个由最大似然函数得到的序列。
viterbi 译码的基本思想是:将接收序列r 与网格图上的路径逐分支地进行比较,然后留下距离最小的路径作为留选路径,并将这些留选路径逐分支地延长并存储起来,留选路径的数目等于状态数,所
以留选路径数目为2km。
Viterbi译码算法处理的步骤可综合简述如下:
l)从某一时间单位j=m开始,对进入每一状态的所有长为j段分支的部分路径,计算部分路径分支度量。
分支度量定义为接收码元与可能码元之间逐个欧几里德距离(软判决)或汉明距离(硬判决)之和。
对每一状态,挑选并存储一条有最小度量的部分路径及其部分度量值,称此部分路径为留选路径。
2)j增加1,把此时刻进入每一状态的所有分支度量,和同这些分支相连的前一时刻留选路径的度量相加,得到了此时刻进入每一状态的留选路径,加以存储并删去其他所有路径,因此留选路径延长了一个分支。
若j<L+m,则重复以上各步,否则停止。
3)在各状态的幸存路径中选出状态度量最小的一条,顺此回溯,得到
译码输出。
上述步骤l)、2)通常称之为加比选运算(ACS),步骤3)为回溯(Traeebaek)。
由时间单位m直至L,trellis图中2km个状态中的每一个有一条留选路径,共有2km条。
但在L时间节点后,trellis图上的状态数目减少,留选路径也相应减少。
最后到第L+m单位时间,trellis图归到全为0的状态
s,因此仅剩下一条留选路径。
这条路经就是要找的具有最大似0
然函数的路径,也就是译码器输出的估值码序列
u由此可知,在trellls
图上用Viterbi译码算法得到的路径一定是一条最大似然路径,因而这种译码方法是最佳的。
项目仿真
整个信道编码预定可用带宽为25.6-22.1=3.5Mb,交织编码不占用带宽,其作用变换码元的位置以提高各码元之间的不相关性,因此RS编码与卷积编码的可用宽带为3.5Mb,为了尽可能的压缩占用信道的带宽,RS编码可定为RS(255,243),卷积编码拟采用(11,12,7)的卷积编码方式,即码率为11/12的卷积码。
通过计算可得出RS编码所需带宽为22.1*255/243-22.1=1.0914Mb;卷积编码所需带宽为22.1*12/11-22.1=2.0091Mb。
从系统角度考虑,分配RS编码1.1Mb 带宽,卷积码2.1Mb带宽。
由上面分析可知,信道带宽还剩0.3Mb的可利用,此0.3Mb带宽可用来添加帧头信息。
11/12码率的卷积码可行性分析
高码率的卷积码理论上可通过两种方式来实现,一种是删除卷积码,另外一种就是不通过删除码元直接将码率做高。
下面我们将分别讨论这两种方法的可行性。
1)不通过删除码元直接将码元做高,卷积码为(11,12,7),即为将每11个信息比特。