数字通信原理课程设计报告书基于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)卷积码状态图d=11。
图3.2.3 (2,1,3)卷积码网格图设输入编码器的信息序列为(11011000),则由编码器对应输出的序列为Y=(1101010001011100),编码器的状态转移路线为abdcbdca。
若收到的序列R=(0101011001011100),对照网格图来说明维特比译码的方法。
由于该卷积码的约束长度为6位,因此先选择接收序列的前6位序列R1=(010101)同到达第3时刻的可能的8个码序列(即8条路径)进行比较,并计算出码距。
该例中到达第3时刻a点的路径序列是(000000)和(111011),他们与R1的距离分别为3和4;到达第3时刻b点的路径序列是(000011)和(111000),的距离分别为3和4;到达第3时刻c点的路径序列是(001110)和他们与R1(110101),他们与R1的距离分别为4和1;到达第3时刻d点的路径序列是(001101)的距离分别为2和3。
上述每个节点都保留码距较小的路和(110110),他们与R1径作为幸存路径,所以幸存路径码序列是(000000)、(000011)、(1101001)和(001101),如图3.2.4所示。
用于上面类似的方法可以得到第4、5、6、7时刻的幸存路径。
图3.2.4 维特比译码第3时刻幸存路径需要指出的是,对于某个节点,如果比较两条路径与接收序列的累计码距值相等时,则可以任意选者一条路径作为幸存路径,吃时不会影响最终的译码结果。
在码的终了时刻a状态,得到一条幸存路径。
如果3.2.5所示。
由此可看到译码器图3.2.5 第8时刻幸存路径输出是R’=(1101010001011100),即可变换成序列(11011000),恢复了发端原始信息。
比较R’和R序列,可以看到在译码过程中已纠正了在码序列第1和第7位上的差错。
当然如果差错出现太频繁,以致超出卷积码的纠错能力,还是会发生纠误的。
4 整体设计方案4.1整个设计的结构框图图4.1.1 整体设计结构模块框图可见,本设计由3个子系统组成:信源模块对随机二进制信号进行卷积码和二进制相位调制,输出基带调制信号;信道模块是一个有噪声信道;信宿模块对调制信号进行软判决译码,得到原始信息序列,并且计算调制信号的误码率。
信源模块由贝努利二进制序列产生器、卷积码编码器以及二进制相位调制3个模块组成,如图4.1.2所示图4.1.2 信源模块系统框图各个模块的参数设置分别如下表。
表4.1.1 Bernoulli Binary Generator(贝努利二进制序列产生器)的参数设置表4.1.2 Convolutional Encoder(卷积码编码器)的参数设置表4.1.3 BPSK Modulator Baseband(二进制相位调制模块)的参数设置本设计使用相对较简单的一个加性高斯白噪声信道作为噪声信道,它在二进制相位调制信号中叠加高斯白噪声。
加性高斯白噪声模块的参数设置如表4.1.4。
表4.1.4 AWGN Channel(加性高斯白噪声模块)的参数设置信道模块如下图4.1.3所示。
图4.1.3 信道模块示意图信宿模块在接收到二进制相位调制信号后,首先由BPSK Demodulator Baseband (二进制相位解调模块)对信号进行量化,得到硬判决量化信号,然后通过Viterbi Decoder(维特比译码器)对软判决信号实施译码。
译码输出信号和信源模块产生的原始信号输入到Error Rate Calculator(误比特率统计模块)中,统计得到的数据一方面通过Display(显示模块)显示出来,另一方面通过一个Selector(选择器)把其中的第一个元素(即编码信号的误比特率)保存到工作区变量BitErrorRate中。
信宿模块如下图4.1.4所示。
图4.1.4 信宿模块Sink各关键模块参数设置如表4.1.5、表4.1.6所示。
表4.16 Viterbi Decoder(维特比译码器)的参数设置Array将此完整设计保存,命名为convh.mdl。
4.2简化维特比译码器的仿真为了验证译码模块的正确性,便让其进行最简模式运行,为此,临时设计一个简化信号系统,关闭信道噪声,不进行二进制相位的调制与解调,去掉误比特率统计模块。
为了能看到输入二进制码和译码输出二进制码,增加了两个To Workspace(结果输入到工作区模块),整个系统模块框图如图4.2.1所示。
图4.2.1 简化译码模块框图同时,为了便于观察,将Bernoulli Binary Generator(贝努利二进制序列产生器)的参数设置为如表4.2.1所示,以产生简单的15位二进制随机码,也将Viterbi Decoder的Trceback depth值改为5。
将To Workspace1模块和To Workspace模块的变量名分别设置为pdata和data。
运行仿真,在matlab的命令窗口中输入pdata和data分别得到相应的二进制序列。
对所得序列分别截图,可得如图4.2.2所示结果。
可见,译码器能够正确进行译码,所设计简化译码器正确,因而,从理论上可推导,原设计正确。
图4.2.2 简化译码器仿真结果通过对c onvh.mdl文件进行仿真,证明设计正确,但因所得二进制码太多,此处便不进行截图证明。
5 硬件电路的设计在Matlab软件的Simulink组件库中包含有的两种卷积码译码模块,即后验概率卷积译码器和维特比译码器。
图5.1.1,图5.1.2所示是维特比译码器参数设置对话框和模块,它通过维特比译码还原出二进制信号序列。
图5.1.1 维特比译码器参数设置图5.1.2 维特比译码器模块如果卷积编码器的输入长度为k,输出信号的长度为n,则维特比译码器的输入好输出信号长度分别是n和k的整数倍。
维特比译码器模块主要有以下几个参数:(1)Trellis structure(Trellis结构)与维特比一冒起相对应的卷积编码器的Trellis结构。
它既可以是Matlab工作区中的一个Trellis变量,也可以是通过poly2trellis()函数产生的Trellis结构。
(2)Decision Type(判决类型)维特比译码器德判决类型有3种:Unquantized(非量化)、Hard Decision(硬判决)和Soft Decision(软判决),如表5.1所示。
表5.1维特比译码器的判决类型(3)Number of soft decision bits(软判决的个数)当Decision type设置为Soft Decision时,本参数有效,并且当它的取值为b时,维特比译码器的输出是介于0和2b-1之间的一个整数。
(4)Traceback depth(反馈深度)反馈深度D影响着维特比译码的精度,同时也影响着解码的时延(即在输出第一个解码数据之前输出的0的个数)。
(5)Operation mode(操作模式)维特比译码器有3种操作模式:Continuous、Terminated或Truncated。
如果维特比译码器德输出信号是抽样信号,则应该把本参数设置为Continuous模式;当输入信号时帧数据时,操作模式可以是Continuous、Terminated或Truncated。
对于Continuous模式,维特比译码器在每帧数据结束时保存译码器的内部状态,用于对下一帧实施解码;在Truncated 模式下,解码器在每帧数据结束的时候总能恢复到全零状态,它对应于卷积编码器的On each frame复位方式;Terminated模式适用于卷积编码器的每帧输入信号的末尾有足够多的零,能够把卷积编码器在完成一帧数据的编码之后把内部状态恢复为0。