卷积码实验报告
- 格式:docx
- 大小:23.05 KB
- 文档页数:21
实验二:卷积码一、实验仪器:PC两台、USRP两台二、实验目的:1、了解grc仿真中的信号处理模块、流程图以及使用方法2、了解卷积码的基本原理3、了解GunRadio实现信道编码的方法4、了解不同SNR对于误码率的影响5、了解卷积码对误码率的影响6、了解不同的卷积码对于误码率的影响三、实验要求:1.了解Grc的基本操作方法,要求仿真的流程中信道编码部分使用卷积编码2.通过单机实验和GnuRadio+USRP的实验两种实验方式进行仿真3.搭建有信道编码与无信道编码的Grc仿真模型4.比较上述两种情况下的误码率,并且分析结果5.比较不同的卷积码对于误码率的影响,并且分析结果。
四、实验原理:卷积码将k个信息比特编码成n个比特,但k和n通常很小,特别适合以串行形式进行传输,时延小。
与分组码不同,卷积码编码后的n个码元不仅与当前段的k个信息有关,还与前面的N-1段信息有关,编码过程中互相关联的码元个数为nN。
卷积码的纠错性能随N的增加而增大,而差错率随N的增加而指数下降。
卷积码的纠错能力不仅与约束长度有关,还与采用的译码方式有关。
GRC提供译码方式是维特比译码,它是卷积码译码方式中非常经典的以及广泛使用的一种译码方式。
该实验可以考察编码前后数据有什么变化,译码后能不能恢复原来数据,通过Number Sink考察加噪声后误比特率怎么样,对性能有什么提高,并且划出BER图形。
下面为卷积码的一般流程:五、实验步骤及分析:1、单机实验:单机实验分成(2,1,3)码、无信道编码、(2,1,8)码三个部分进行。
(一)实验流程图:首先,我们利用(2,1,3)卷积码进行信道编码,用DPSK进行调制,来进行单机实验,最终设计的流程图和参数如下图所示:先是Vector Source,即信源,设置的数据是1,0,0,1,1。
然后是Throttle限流模块。
接下来是Packed to Unpacked模块,将pack成byte或short型的数据以unpacked型的数据输出。
【报告】卷积码实验报告一、实验目的本次卷积码实验的主要目的是深入理解卷积码的编码与译码原理,掌握其在数字通信系统中的应用,并通过实际实验操作和结果分析,评估卷积码的纠错性能和对通信质量的改善效果。
二、实验原理(一)卷积码的基本概念卷积码是一种有记忆的非分组码,它将输入的信息序列经过特定的编码器生成输出的码序列。
卷积码的编码过程不仅取决于当前输入的信息位,还与之前的若干个信息位有关。
(二)编码原理卷积码的编码器通常由若干个移位寄存器和模 2 加法器组成。
输入的信息位在时钟的控制下依次进入移位寄存器,同时与寄存器中的内容进行模 2 加法运算,生成输出的编码位。
(三)译码原理卷积码的译码方法有多种,常见的有维特比译码算法。
维特比译码算法基于最大似然准则,通过在码的网格图上寻找最有可能的路径来实现译码。
三、实验环境与设备本次实验在计算机上进行,使用了以下软件和工具:1、 MATLAB 编程环境,用于实现卷积码的编码、传输和译码过程,并进行性能分析。
2、通信系统仿真工具,用于构建通信系统模型,模拟信号的传输和接收。
四、实验步骤(一)编码实现1、在 MATLAB 中定义卷积码的编码器结构,包括移位寄存器的数量和连接方式,以及模 2 加法器的位置。
2、编写编码函数,输入信息序列,按照编码器的工作原理生成编码后的序列。
(二)信道传输1、模拟加性高斯白噪声信道,设置不同的信噪比条件。
2、将编码后的序列通过信道传输,引入噪声干扰。
(三)译码实现1、使用维特比译码算法对接收序列进行译码。
2、编写译码函数,输入接收序列和信道参数,输出译码后的信息序列。
(四)性能评估1、计算误码率,即错误译码的比特数与总传输比特数的比值。
2、绘制误码率曲线,分析卷积码在不同信噪比条件下的纠错性能。
五、实验结果与分析(一)不同卷积码参数对性能的影响1、改变卷积码的约束长度,观察其对纠错性能的影响。
结果表明,约束长度越长,卷积码的纠错能力越强,但编码效率会有所降低。
北京邮电大学ASIC原理课程实验实验报告设计要求:(3,1,8)卷积码编码器学院:电子工程学院专业:电子信息科学与技术班级:学号:姓名:2013年6月20日一、设计要求运用verilog语言编写一个(3,1,8)卷积码编码器,并对其进行仿真。
二、卷积码编码器原理卷积码拥有良好的纠错性能,是一种被广泛应用于移动通信的信道编码系统。
一个(n,k,m)卷积码编码器由k个输入,具有m阶存储的n个输出的线形时序电路实现。
通常, n和k是较小的整数,且k<n,但m比较大。
当k=1时,信息序列不再分成小块,以便可以连续处理。
卷积码(n,k,m)表示码率R=k/n,编码器级数m=s-1,其中s是码约束长度。
反向CDMA信道使用(3,1,8)卷积码,码率R=1/3,约束长度为9,由于k=1,n=3,m=8,则该卷积编码器包含单个输入端,一个8级移位寄存器,三个模 2加法器和一个3向编码器输出的连续转向器。
编码器每输入一位信息比特将产生三位编码输出。
这些编码符号中,第一个输出符号G0是生成序列g1⑴编码产生的符号,第二个输出符号G1是由生成序列g1⑵编码产生的符号,最后一个输出符号G2是由生成序列g1⑶编码产生的符号,如下图所示。
该电路由一个八位寄存器、三个码生成逻辑、一个时隙发生器和一个四选一复用器构成。
mux的输入为G0、G1和G2,码选择信号C[1:0]和clk1由时隙发生器产生,输出信号即为整个电路的输出Yout。
卷积编码器的初始状态用rst异步清零信号置为0,rst=0时,电路清零。
卷积编码器的初始状态全为0,初始状态之后输出的第一个编码符号由生成序列g1⑴编码产生。
这里,三个生成序列分别为g1⑴=(101101111),g1⑵=(110110011), g1⑶=(111001001)。
即三个生成多项式分别为:C0=1+X+X2+X3+X5+X6+X8 (557)C1=1+X+X4+X5+X7+X8 (663)C2=1+X3+X6+X7+X8 (711)三、实验设计与实现根据以上实验要求,我们首先设想了分为几个模块,然后将各个模块进行整合实现编码器的功能,根据我们的设想编写相应的verilog程序,进行调试、实现。
缩短卷积码MATLAB仿真实训实习报告缩短卷积码MATLAB仿真实训实习报告()摘要现代通信系统的信道本人码中几乎毫无例外的采用了先进的本人码方式:卷积本人码,如:码分多址通信系统CDMA,数字蜂窝通信系统GSM,数字集群通信系统TETRA等等,在差错控制中,卷积码表现出了优秀的纠错能力。
但是优秀的纠错能力是以降低频道利用率为代价。
在功能完备的通信系统中有许多使命不同的逻本人信道.不同的逻本人信道因为任务不同,专业知识对应的差错控制能力与频道利用率的提议是不样的,有两种实现的数学方法:构建不同的卷积码或本人应用同个卷积码但是运用不同的缩短方案以适应不同的传输数码率,自然也有着相应的信道纠错能力和频带利用率。
在先进路线图的数字集群系统中就是用的二种方案,实践证明,删除型缩短卷积码的性能与最卷积码可以做到相当接近。
关键词:信道本人码缩短卷积码纠错能力(二)缩短卷积码基本原理本实训拥有目的是要构建个具有卷积解卷积和打孔插零功能以及相应的传输环境的仿真系统来对各类卷积码进行缩短卷积码的仿真研究,得到大致相同频带利用率下不同打孔图形的差错控制能力定量频带结果。
用相同的生成多项式构建的维特比译码器和不同的压缩图形卷积码都可以在原打孔图形位置上嵌入填充的码元后进行译码。
仿真采用具有缩短卷积码和调制功能的系统仿真系统内,用BernoulliRandomBinary产生每帧2码元的随机二进制码,进入卷积本人码器后变成每帧6码元的二进制码流,再经过Puncture(打孔)模块后,变为删去选择码元后剩下的码元数,在调制和解调原核细胞中,数据帧的大本人不变,通过InsertZero(插零)模块在原来删去码元的位置插入码元0,解卷积,恢复每帧2码元。
Puncture模块中数据流的打孔矢量应与输入信号具有相同的帧长度,而且要与InsertZero模块中的插零矢量相同,矢量(vector)中的0就是打掉马远的位置,也是在解卷积之前插入0的位置,1是保留码元的位置,而矢量的长度与0的数目以及卷积码的结构共同决定了本人码效率。
通信原理实验19卷积码的编解码实验实验十九卷积码的编解码实验实验内容1. 熟悉卷积码编码实验2.熟悉卷积码译码实验一、实验目的1.了解卷积码的基本概念和原理2.加深对卷积码的编解码过程的理解3. 学习通过CPLD编程实现卷积码编译码实验二、实验电路工作原理卷积码又称连环码,是1955年提出来的一种纠错码,它和分组码有明显的区别,但在编码器复杂度相同的情况下, 卷积码的性能优于分组码,因此卷积码几乎被应用在所有无线通信的标准之中, 如GSM, IS95和CDMA 2000 的标准中。
1.卷积码编码方法:卷积码通常记作( n0 , k0 , m) ,它将k0 个信息比特编为n0 个比特, 其编码效率为k0/ n0 , m为约束长度。
( n0 , k0 , m )卷积码可用k0 个输入、n0 个输出、输入存储为m的线性有限状态移位寄存器及模2 加法计数器来实现。
实验中所选(2 ,1 ,6) 卷积编码器上图所示,其子生成元为: g(1 ,1) ( D) = 1 , g(1 ,2) ( D) = 1 + D2 + D5 +D6 , 生成矩阵G( D) = (1 ,1 + D2 + D5 + D6) 。
设输入信息序列M = (1111) ,即M( D) = 1 + D + D2 + D3 ,则编码器的输出C( D) =M( D) ·G( D) ,即:C( D) = (1+D+D2+D3)·(1,1+D2+D5+D6)=(1+D+D2+D3 ,1+D+D2+D3+D2+D3+D4+D5+D5+D6+D7+D8 +D6+D7+D8+D9)= (1+D+D2+D3 ,1+D+D4+D9)=(11)+(11)D+(10)D2+(10)D3+(01)D4+(00)D5+(00)D6+(00)D7+(0 0)D8+(01)D9+?因此,编码器输出序列为11111010010000000001。
2.卷积码编码算法process(clk,clr)beginif(clr='1')thenif(clk'event and clk='1')thentemp(0)<=datain;temp(1)<=temp(0);temp(2)<=temp(1);temp(3)<=temp(2);temp(4)<=temp(3);end if;else temp<="00000";end if;end process;y2j<= (datain xor temp(2) xor temp(3) xor temp(4));y1j<=datain;3.大数逻辑解码器大数逻辑解码器是卷积码代数解码最主要的解码方法, 既可用于纠随机错误, 又可用于纠突发错误,但要求卷积码是自正交码或可正交码。
实验四 卷积码的编解码一、实验目的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 =++; 22()1G D D =+;如图1 所示的(2,1,3)卷积码编码器中,输入移位寄存器用转换开关代替,每输入一个信息比特经编码产生二个输出比特。
假设移位寄存器的初始状态为全0,当第一个输入比特为0时,输出比特为00;若输入比特为1,则输出比特为11。
随着第二个比特输入,第一个比特右移一位,此时输出比特同时受到当前输入比特和前一个输入比特的影响。
第三个比特输入时,第一、二个比特分别右移一位,同时输出二个由这三位移位寄存器存储内容所共同决定的比特。
依次下去就完成了编码过程。
下面是卷积码的网格图表示。
他是比较清楚而又紧凑的描述卷积码的一种方式,它是最常用的描述方式之一。
图2(2,1,3)卷积码的网格图表示2、Viterbi译码原理2k N-种状态,每个节点(即每个状态)有2k条支路引入也有2k条如图2所示,卷积码网格图中共有(1)支路引出。
卷积码实验报告篇一:卷积码实验报告实验五信道编解码()本章目标掌握数字频带传输系统调制解调的仿真过程掌握数字频带传输系统误码率仿真分析方法 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多项式中的最低阶项对应于寄存器的输入级。
实验九 (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)分支长接收数字,对相应的最早的那个分支上的信息数字进行估计,然后向前推进一个分支。
实验四:卷积编/译码一.实验目的1.学习卷积编码的方法与码字测量。
2.学习维特比译码方法及译码的测量。
3.观察卷积码的纠错能力。
二.实验仪器1.RZ8621D实验箱一台2.20MHZ双踪示波器一台三.实验电路连接及测量点说明图7-1 用单片机AT89C2051进行卷积编码电路图图7-2 用单片机AT89C2051进行维特比译码电路图差错控制编码的方法很多,卷积码是一种既能纠随机错,又能纠实发错的编码,在同样的传输速率和设备复杂的条件下,性能较优良的一种编码。
卷积码常采用维特比软判决译码,具有较好的纠错功能。
本实验为卷积码的编译码,它是由一片AT80C2051芯片用软件编程方法实现。
其编译码电路框图如下:图中各主要测量点说明如下:TP401—源码序列TP402—卷积码序列TP403—加错或不加错卷积码序列(模拟信道的传输)TP405—卷积码译码输出序列四.实验步骤及内容(一)卷积码编码1.拨线开关介绍。
用拨动开关SW401设置输入信息。
开关拨动至上面为1,下面为0。
拨动开关共9位,左起1-8位为信息位,第九位为状态位。
第九位为“1”表示无错误,第九位为“0”表示有错误。
2.信息码设置。
如上所述,信息码设置共8位,由SW401开关位置决定,例如设置信息为DCH则八位码为1101 1100。
3.信息码观察。
为了示波器上能看到周期性的信息码和编出的卷积码,本机规定在信息位第一位前加一个“1”,在末位加两个“0”。
因此信息码序列变成1 1101 110000,我们称它们为源码序列。
将示波器1通道探头接于TP401(DTAT3),便可看到该序列波形。
4.卷积编码序列手工编码。
根据源码序列和(2.1.3)卷积码编码规秩,写出卷积码编码序列。
上述源码序列的卷积码为1101 1001 0001 1001 110000。
5.无错卷积码编码序列观察。
将拨动开关第九位(状态位)置于“1”表示无错码。
示波器1通道探头接至TP402(DATA1),2通道探头接至TP403(DATA2),观察示波器上显示的波形,看看它是否与上述卷积编码的码型一致。
卷积编码设计与仿真实验报告一、实验目的了解卷积码对信号的纠错性能,掌握维特比译码算法,分析卷积码不同码率下纠错能力的强弱,深刻理解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……)。
卷积码实验报告篇一:卷积码实验报告实验五信道编解码()本章目标掌握数字频带传输系统调制解调的仿真过程掌握数字频带传输系统误码率仿真分析方法 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多项式中的最低阶项对应于寄存器的输入级。
输出序列根据如下方式求得:U(X)?m(X)g1(X)与m(X)g2(X)交织其中m表示输入的信息矢量。
2. 状态图卷积编码器属于有限状态机的器件。
“有限”表明状态机制只有有限个不同的状态。
有限状态机的状态可以用设备的当前输入和最少的信息量,来预测设备的输出。
状态提供了有关过去序列过程及一组将来可能输出序列的限制,下一状态总是受到前一状态的限制。
将编码器在时刻ti的状态定义为Xi?mi?1,mi?2,...,mi?K?1。
01图2状态转移图如图2所示,方框内的状态表示寄存器最右端N?1级的内容,状态间的路径表示由此状态转移时的输出分支字。
对应于两种可能的输入bit,从每个状态出发只有两种转移。
3. 编码器网格图a 00b 10c 01d 11输入比特0输入比特1虽然状态图完全地描述了编码器的特性,但由于没有表示时间过程,所以采用状态图跟踪编码器的状态转移很不方便。
树状图在状态图的基础上增加了时间尺度。
每个相继输入信息比特的编码过程可表述为从左向右经过树状图,每条数值代表一个输出分支字。
树状图上增加的时间尺度是我们可以动态地描述输入序列的编码过程。
但由于树状图的规模增长很快,因而只适于序列中分支子数目较小的情况。
我们采用移位寄存器的4种可能状态来标注树图的各个节点,a?00,b?01,c?10,d?11。
树结构的第一次分支在时刻t1,产生一对节点,记为a,b;在后继的各个分支处,节点数翻倍。
第二次分支在时刻t2,生成4个节点,记为a,b,c,d;第三次分支后共有8个节点。
网格图利用了结构上的重复性,从而能够更加方便地描述编码器。
(二)维特比译码算法维特比译码算法由维特比在1967年提出。
维特比算法的实质是最大似然译码,但它利用了编码网格图的特殊结构,从而降低了计算的复杂性。
该算法包括计算网格图上在时刻ti到达各个状态的路径和接受序列之间的相似度,或者说距离。
维特比算法考虑的是,去除不可能成为最大似然选择对象的网格图上的路径,即如果有两条路径到达同一状态,则具有最佳量度的路径被选中,成为幸存路径。
对所有状态都将进行这样的选路操作,译码器不断在网格图上深入,通过去除可能性最小的路径实现判决。
网格图中每个时刻ti上有2K?1条路径到达。
维特比译码包括计算到达每个状态的两条路径的路径量度,并舍弃其中一条路径。
在时刻ti,算法对2K?1并重复上述过程。
在一个给定的时刻,各状态的幸存路径量度就是该状态在该时刻的状态量度。
图3编码器网格图个状态,这里的K是约束长度,每种状态都可经两个状态(节点)都进行上述计算,然后进入时刻ti?1,输入数据序列m:发送序列U:接受序列Z: 1 111 0 101 01a 00b 10c 01d 11输入比特0输入比特1图4译码器网格图5.4实验内容在MATLAB上设计一个(2,1,3)卷积编码器和对应的采用维特比译码算法的译码器。
编码器的生成多项式为:g1(X)?1?X?X2g2(X)?1?X2将编码器的输出经过一个高斯白噪声信道的结果作为译码器的输入,观察比较译码器输出和编码器输入,了解卷积码的容错性,并计算译码结果的误比特率。
基本流程如错误!未找到引用源。
所示。
实验报告要求附加程序代码,并对代码中每个函数模块的实验方式和功能进行简要的说明。
输出编码结果卷积码编码模块:卷积码编码子程序:function out_put=conv_enc(msg) g1=[1 1 1]; g2=[1 0 1]; m1=conv(msg,g1); m2=conv(msg,g2); L1=length(m1); for i=1:L1out_put(2*i-1)=rem(m1([i]),2);out_put(2*i)=rem(m2([i]),2); end end该模块将对输入信息码子编码。
维特比算法解码器的实现函数:function decoder_output=viterbi_hard(y,L) global G;G=[1 1 1;1 0 1]; n=size(G,1); K=size(G,2);number_of_states=2^(K-1);%------ -生成各分支的输出-------------------- for j=0:number_of_states-1 for t=0:1[next_state,memory_contents]=next_state_fun(j,t,K); input(j+1,next_state+1)=t;branch_output=rem(memory_contents*G',2);nextstate(j +1,t+1)=next_state;output(j+1,t+1)=bin2deci(branch_output); end end %------------------------------------------------metric_of_states=zeros(1,number_of_states); %各状态的度量metricmetric_of_states_c=zeros(number_of_states,2);%各状态两个输入的度量length_seq=length(y)/n;%符号个数decoder_output=zeros(1,length_seq-K+1); %解码输出channel_output_matrix=reshape(y,n,length_seq);%将解调输出的比特按符号排列survivor_state=zeros(number_of_states,length_seq+1); %留存路径input_of_state=zeros(number_of_states,length_seq+1, 2);%汇聚到各状态的分支对应的输入state_sequence=zeros(1,length_seq+1);count=zeros(1, number_of_states);for i=1:length_seq-K+1 forj=0:number_of_states-1 for t=0:1binary_output=deci2bin(output(j+1,t+1),n);篇二:卷积码编译码实验报告厦门理工学院实验报告书课程名称:信息论与编码实验实验名称:卷积码编译码12中输入移位寄存器最多只有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);3current = 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_disret_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 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_disendend45篇三:卷积码实验报告现代编码理论基于MATLAB的卷积码编码及译码仿真姓名:闫嘉川学号:1433170所在院系:电子与信息工程学院实验名称:基于MAATLAB的卷积码编码及译码仿真实验目的:卷积码是一种性能优越的信道编码。