实验报告课程名称:无线通信与网络实验项目:matlab仿真实验实验地点:专业班级:学号:学生姓名:指导教师:2013年4月12日实验1 卷积编码和译码的matlab仿真实现一、实验目的了解掌握如何使用matlab来进行卷积编码和译码的仿真。
二、实验内容1、SIMULINK仿真模块的参数设置以及重要参数的意义2、不同回溯长度对卷积码性能的影响3、不同码率对卷积码误码性能的影响4、不同约束长度对卷积码的误码性能影响三、基本原理本实验分为卷积编码和卷积译码两部分:卷积编码的最佳译码准则为:在给定已知编码结构、信道特性和接收序列的情况下,译码器将把与已经发送的序列最相似的序列作为传送的码字序列的估值。
对于二进制对称信道,最相似传送序列就是在汉明距离上与接收序列最近的序列。
卷积码的译码方法有两大类:一类是大数逻辑译码,又称门限译码(硬判决);另一种是概率译码(软判决),概率译码又分为维特比译码和序列译码两种。
门限译码方法是以分组码理论为基础的,其译码设备简单,速度快,但其误码性能要比概率译码法差[2]。
当卷积码的约束长度不太大时,与序列译码相比,维特比译码器比较简单,计算速度快。
维特比译码算法是1967年由Viterbi提出,近年来有大的发展。
目前在数字通信的前向纠错系统中用的较多,而且在卫星深空通信中应用更多,该算法在卫星通信中已被采用作为标准技术。
采用概率译码的基本思想是:把已接收序列与所有可能的发送序列做比较,选择其中码距最小的一个序列作为发送序列。
如果发送L组信息比特,那么对于(n,k)卷积码来说,可能发送的序列有2kL个,计算机或译码器需存储这些序列并进行比较,以找到码距最小的那个序列。
当传信率和信息组数L较大时,使得译码器难以实现。
维特比算法则对上述概率译码做了简化,以至成为了一种实用化的概率算法。
它并不是在网格图上一次比较所有可能的2kL 条路径(序列),而是接收一段,计算和比较一段,选择一段最大似然可能的码段,从而达到整个码序列是一个最大似然值得序列。
下面以图2.1的(2,1,3)卷积码编码器所编出的码为例,来说明维特比解码的方法和运作过程。
为了能说明解码过程,这里给出该码的状态图,如图2.2所图2.1 (2,1,3)卷积码编码器图2.2 (2,1,3)卷积码状态图示。
维特比译码需要利用图来说明移码过程。
根据卷积码画网格的方法,我们可以画出该码的网格图,如图2.3所示。
该图设输入信息数目L=5,所以画L+N=8个时间单位,图中分别标以0至7。
这里设编码器从a 状态开始运作。
该网格图的每一条路径都对应着不同的输入信息序列。
由于所有可能输入信息序列共有2kL 个,因而网格图中所有可能的路径也为2kL 条。
这里节点a=00,b=01,c=10,d=11。
ba bc d节点号1234567图2.3 (2,1,3)卷积码网格图设输入编码器的信息序列为(11011000),则由编码器对应输出的序列为Y=(1101010001011100),编码器的状态转移路线为abdcbdca 。
若收到的序列R=(0101011001011100),对照网格图来说明维特比译码的方法。
由于该卷积码的约束长度为6位,因此先选择接收序列的前6位序列R 1=(010101)同到达第3时刻的可能的8个码序列(即8条路径)进行比较,并计算出码距。
该例中到达第3时刻a 点的路径序列是(000000)和(111011),他们与R 1的距离分别为3和4;到达第3时刻b 点的路径序列是(000011)和(111000),他们与R 1的距离分别为3和4;到达第3时刻b 点的路径序列是(000011)和(111000),他们与R 1的距离分别为3和4;到达第3时刻c 点的路径序列是(001110)和(110101),他们与R 1的距离分别为4和1;到达第3时刻d 点的路径序列是(001101)和(110110),他们与R 1的距离分别为2和3。
上述每个节点都保留码距较小的路径作为幸存路径,所以幸存路径码序列是(000000)、(000011)、(1101001)和(001101),如图2.4所示。
用于上面类似的方法可以得到第4、5、6、7时刻的幸存路径。
需要指出的是,对于某个节点,如果比较两条路径与接收序列的累计码距值相等时,则可以任意选者一条路径作为幸存路径,吃时不会影响最终的译码结果。
在码的终了时刻a 状态,得到一条幸存路径。
如果2.5所示。
由此可看到译码器a b c d节点号123图2.4 维特比译码第3时刻幸存路径输出是R ’=(1101010001011100),即可变换成序列(11011000),恢复了发端原始信息。
比较R ’和R 序列,可以看到在译码过程中已纠正了在码序列第1和第7位上的差错。
当然如果差错出现太频繁,以致超出卷积码的纠错能力,还是会发生纠误的。
四、实验步骤4.1 卷积码的仿真本文通过MATLAB 下的SIMULINK 仿真。
首先建立卷积码的仿真模块并组合起来。
图4-1卷积码的编码译码框图如上图4-1的信号流程可以表示为先由Bernoulli Binary Generator (贝努利二进制序列产生器)产生一个0,1等概序列,经过Convolutional Encoder (卷积编码器)对输入的二进制序列进行卷积编码,并用BPSK 调制方式调制信号。
加入信道噪声(高斯白噪声)后再经过BPSK 解调制后送入Viterbi Decoder (Viterbia b c d节点号 01 2 34 5 6 7 8图2.5 第8时刻幸存路径译码器)进行硬判决译码。
最后经过Error Rate Calculation(误码统计)后由Display (显示)输出。
然后通过Selector(数据选通器)将结果输出到To workspace(工作区间)。
4.1.1 SIMULINK仿真模块的参数设置以及重要参数的意义在建立如图4-1的仿真模块后,对各个模块分别一一进行设置后并运行仿真。
图4-2贝努利二进制序列产生器模块的设置框图如上图4-2是贝努利二进制序列产生器模块的设置框图,其中参数有三项:第一项probability of a zero取值为0.5,表示0和1出现的概率相等。
Initial seed 表示随机种子数。
不同的随机种子数将产生不同的二进制序列,特定的随机种子数可以产生一个特定的二进制序列。
Sample time=0.0001表示抽样时间,也就是说输出序列中每个二进制符号的持续时间是0.0001秒。
Samples per frame 表示每帧的抽样数用来确定每帧的抽样点的数目。
Frame-based outputs 是用来确定帧的输出格式。
图4-3 BPSK调制器模块的设置框图如上图4-3是BPSK调制器模块的设置框图中有二项,第一项是Phase offset(rad)(相位偏移),这里设置为0。
第二项是Samples per symbol(输出信号采样数)这里设置为1。
图4-4卷积编码器模块的设置框图如上图4-4是卷积编码器模块的设置框图。
其中Trellis structure(Trellis结构)中通过poly2trellis()函数把卷积码的约束长度,生成多项式以及反馈多项式转换成Trellis结构的形式。
图4-5误比特统计模块的设置框图如上图4-5是误比特统计模块的设置框图。
其中Receive delay表示接收延迟,意思是在通信接收端口需要对接收到的信号进行解调,解码或解交织而带来一定的延迟,使得到达误码统计模块接收端的信号滞后于发送端的信号。
为了补偿这种延迟这里设置为0。
Computation delay表示计算延迟,在仿真过程中,有时间需要忽略最初的若干个输入数据就通过计算延迟来实现。
这里设置为0。
Computation mode表示计算模式,帧的计算模式(Entire frame),误码统计模块对发送端和接收端的所有输入数据进行统计。
output data是输出数据,这里设置为Port的意思是表示把统计数据从端口中输出。
workspace表示把统计数据输出到工作区。
图4-6 数据选通器模块的设置框图如上图4-6是数据选通器模块的设置框图。
对应图4-1看Elements是指输出端口的个数为1。
Input port width表示输入端口的个数为3。
图4-7卷积码译码器模块的设置框图如上图4-7是卷积码译码器模块的设置框图。
Trellis structure: Trellis结构(前面已说明)。
Decision type是指判决类型,有3种:(1)Unquantized(非量化)(2)Hard Decision(硬判决),(3)Soft Decision(软判决)Traceback depth表示反馈深度。
它的值会影响译码精度和解码延迟。
Operation mode是指操作模式。
在Truncated模式下,解码器在每帧数据结束的时候总能恢复到全0状态,它与卷积编码器的on each frame复位方式相对应。
4.2 改变卷积码的参数仿真以及结论4.2.1 不同回溯长度对卷积码性能的影响下面将以(2,1,7)卷积码来建立模块仿真。
将译码模块中的Traceback depth 分别设置为20,35,45并在一个图中画出这三种方式下的误码性能曲线得到下图4-8。
从上到下的三条曲线分别是Traceback depth为20,35,45。
可以看出:回溯长度是在Viterbi 译码过程中一个很重要的参数,他决定了译码延迟,随着他的不断变化,误码性能也随误比特率曲线可以清楚地看到,当回溯长度一定时,随着信道噪声的逐渐减小,系统的误比特率逐渐降低;当回溯长度逐渐增加,系统的误比特率随之逐渐降低,但是当回溯程度τ增加到τ≥5 N 时( N 为编码的约束长度) ,误比特率数值趋于稳定,因此,在确定回溯长度时既要考虑到随着τ的增加误比特率随之降低的趋势,也要考虑到译码延迟会变大,在选取回溯长度时,通常取τ= 5 N。
图4-8 不同回溯长度对误码性能的影响分析不同回溯长度对卷积码误码性能的影响时用到的程序如下:x=-10:5;y=x;fori=1:length(x)SNR=x(i);sim('yima');y(i)=mean(BitErrorRate);endsemilogy(x,y);hold on;fori=1:length(x)SNR=x(i);sim('yima1');y(i)=mean(BitErrorRate);endsemilogy(x,y);hold on;fori=1:length(x)SNR=x(i);sim('yima2');y(i)=mean(BitErrorRate);endsemilogy(x,y);4.2.2 不同码率对卷积码误码性能的响下面图4-9是通过改变卷积码的码率为1/2和1/3而得到的二条对比曲线。