卷积码的编解码Matlab仿真

卷积码的编解码Matlab仿真
卷积码的编解码Matlab仿真

卷积码的编解码Matlab仿真摘要

卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力D随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本文简明地介绍了卷积码的编码原理和译码原理o并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。经过仿真和实测,并对测试结果作了分析。得出了以下三个结论z

(1)当改变卷积码的码率时,系统的误码性能也将随之发生变化。

(2)对于码率一定的卷积码,当约束长度N发生变化时,系统的误码性能也会随之发生变化。

(3)回溯长度也会不同程度上地影响误码性能。

关键词:卷积码:码率:约束长度:回溯长度

Simulation and Research on Encoding and Decoding of

Convolution Code

Abstract

Convolution code has a superior performance of the channel code. It is easy to coding and decoding.An d it has a strong ability to correct e盯ors. As correcting coding theory has a long development,the practice of convolution code is more and more extensive.In由1S由esis,the principle of convolution coding and decoding is introduced simply白rstly. Then由e whole simulation module process of encoding,decoding and the Error Rate Calculation is completed in由is design. Finally,in order to understand 由eir performances of error rate,many changes in parameters of convolution code are calculated in the simulation process.Af ter simulation and me皿UTe,an analysis of test results is presented.Th e following由ree conclusions are draw:

(l)Wh en the rate of convolution Code ch皿ges,HER performance of the systemwill change.

(2) For a certain rate of convolution code,when由ere is a change in the constraint length of N,BER perfonnance of由e system will change.

(3) Re位ospec咀ve length will affect BE R.

Key words: convolution code; rate; cons缸aint leng由; retrospective length;

目录

论文总页数~ 21页

1寻|言.

1.1课题背景............................................................. 11.2国内扑研究现

状....................................................... 11.3本课题的意义......................................................... 11.4本课题的研究方法.. (1)

2卷积码的基本概念................................. .. .................................... . (2)

2.1信道.............. .................................................... ........................................ (2)

2.2纠错编码................................... .. .................................... (2)

2.3卷积码的基本概念........................... .. .................................... (2)

2.4卷积码编码的概念........................... .. .................................... (2)

2.4.1卷积编码.................... .......................... ........................................ (2)

2.4.2卷积码的树状图....................... .. ..................................... .. (3)

2.4.3卷积码的网格圄 (4)

2.4.4卷积码的解析表示.............. ....................................... .. ................ .. ................................ .. 5 3卷积码的译码 (6)

3. 1卷积码译码的概述..................................................... 6 3.2卷积码的最大似然译

码................................................. 6 3矗3 VITEBI译码的关键步骤‘·‘…..画面匾‘..矗..画..‘…‘..‘..画‘…......画..矗…画. 7

3.3.1输入与同步单元.......................................................... ................. .. (7)

3.3.2支路量度计算......... .............................. .. ................... ................. .................................. .. 7

3. 3. 3路径量度的存储与更新........ ........... .................... .. ................ .................................. .. 7

3.3.4信息序列的存储与更新................... ........................................... . (8)

3‘3‘5判决与输出单元... a;i i...画‘画画画..... i…画..‘..画画&画‘画..…·画‘...i.. i‘画画‘8

4结论................... ....................................................................................................................................... .. 9 4.1卷积码的仿真................................………………………….9 4.1. 1 SI阳LINK仿真模块的参数设置

以及重要参数的意义 (9)

4.2改变卷积码的参数仿真以及结论........................................ 12 4.2.1不同回湖长度对卷积码性能的

影响 (12)

4.2.2不同码率对卷积码误码性能的晌........... .. (14)

4.2.3不同的柬长度对卷积码的误码性能影响 (15)

结论..................................................................... 17参考文献......................................................伽 (18)

致谢.............................................................错误!未定义书签。

声明.............................................................错误!未定义书签。

l引吉

1.1课题背景

随着现代通信的发展,高速信息传输和高可靠性传输成为信息传输的两个主要方面,而可靠性尤其重要。卷积码以其高速性和可靠性在实际应用中越来越广泛。1967年Viterbi译码算法的提出,使卷积码成为信道编码中最重要的编码方

工巳之一[I)。

1.2国内外研究现状

在对卷积码的研究中,其中编码器较简单,模式也很统一。主要是研究提高卷积码的译码速度和可靠度。译码算法中最重要的卷积码的Viterbi算法问世以来,软件仿真和实现都得到了迅速发展。目前,利用计算机仿真Viterbi算法,模拟在各种不同情况下(使用不同码率、不同约束度等)卷积编码时的译码性能,寻找Viterbi算法的最佳适用信道和不同要求。日误码率)下最优编码。

1.3本课题的意义

在卷积码中,因为Viterbi算法效率高,速度快,结构相对筒单等特点,被广泛应用于各种数据传输系统。特别是深空通信、卫星通信系统中。在现代信息处理系统中,需要处理的信息量越来越大,实时性要求越来越高。为减少对主处理器各种资源的占用,要求通信模块方面的大部分士作能独立完成。因此采用Viterbi译码算法具有非常现实的意义o

1.4本课题的研究方法

本文通过基于MArLAB的SI阳口NK下的模块对卷积编码,解码进行仿真。通过仿真可以更清楚的认识到卷积码的编码,解码的各个环节,并对仿真结果进行了分析。得出卷积码Viterbi译码的误比特性能和回溯长度,码率,约束长度的关系。

2卷积码的基本概念

2.1信道

信道是任何一个通信系统所必不可少的组成部分。由于信道中可能存在着各种干扰,通信设备中也可能存在种种造成错码的因素。随着数据处理、计算机通信、卫星通信以及高速数据通信网的飞速发展,用户对数据传输的可靠性提出了越来越高的要求。因此如何在保证数据传输速率的前提下,提高传输数据的可靠性,就成为一个迫切需要解决的问题。根据干扰对数据传输影响可分为随机干扰和突发干扰。其中,电子热晓声产生的干扰可以看作是随机的高斯臼噪声,它对信道主要的影响是产生码元的随机错误[的。

2. 2纠错编码

因为信道状况的恶劣,信号不可避免会受到干扰而出错。为实现可靠性通信,主要有两种途径:一种是增加发送信号的功率,提高接收端的信号噪声比;另一种是采用编码的方法对信道差错进行控制。前者常常受条件限制,不是所有情况都能采用。编码理论可以解决这个问题,使得成本降低,实用性增强。

2.3卷积码的基本概念

卷积码是一种性能优越的信道编码。缸,k,N)表示把k个信息比特编成n个比特,N为编码约束长度,说明编码过程中互相约束的码段个数。卷积码编码后的n个码元不仅与当前组的k个信息比特有关,而且与前N - 1个输入组的信息比特有关[飞编码过程中相互关联的码元有N Xn个。R = k/ n是卷积码的码辈,码率和约束长度是衡量卷积码的两个重要参数[110

2.4卷积码编码的概念

卷积码的编码描述方法有5种;冲激响应描述法、生成矩阵描述法、多项;):.1乘积描述法、状态图描述法和网格图描述法[J)。卷积码的生q错能力随着N的增加而增大,而差错率随着N的增加而指数下降。在编码器复杂性相同的情况下,卷积码的性能优于分组码。分组码有严格的代数结构,但卷积码至今尚未找到如此严密的数学手段。分组码的译码算法可以由其代数特性得到。卷积码虽然可以采用适用于分组码的门限译码(即大数逻辑译码),但性能不如维特比译码和序列译码[咛。

2.4.1卷积编码

卷积码的编码器一般都比较简单。

输出

回2-1卷和码蝙码器框阳

国2-1是一般情况下的卷积码编码器框图。它包括阻级的输入移位器,一组口个模2和加法器和n级的输出移位寄存器时。对应于每段k比特的输入序列,输出n个比特。由图可知. n个输出比特不但与当前的k个输入比特有关,而且与以前的(N一l)k个输入信息比特有关。整个编码过程可以看成是输入信息序列与由移位寄存器和模2加法器的连接方式所决定的另一个序列的卷积,卷积码由此得名o本文采用的是冲击晌应描述法编码思想。

输入.

一一一-n=2一一-. 输出

罔2-2 (2,1,3)卷积蝙码糯

如图2-2是卷积码(2.1,3)卷积编码器的一个框图[的。左边是信息的输入。下面分别是系统位输出和校验位输出o其中问是3个移位寄存器和一个模2加法器。简单的说就是信息位经过移位寄存器和一个模2加法器产生一个系统位和校验位加在一起输出o可以看出:每输入一个比特,移位寄存器中就向右移动一个位子。原来的第三个寄存器就被移出。可见卷积编码不只与现在的输入比特有关还与前面的3-1个比特有关。所以约束长度是3。在这里,其中K=1,n=2所以码率R=K/ n=I/2o

2.4.2卷积码的树状图

对于国2-2所示的(2,1,3)卷积码编码电路,其树状图如下图3-3所示。这里,分别用a,b,c和d表示寄存器的4种状态: 00,01,10,和11.作为树状图中每条支路的节点。以全零状态a为起点,当输入位信息位为0时,输出码元

clc2= 00,寄存器保持状态a不变,对应图中从起点出发的上支路;当输入位为1肘,输出码元clc2 =11,寄存器则转移到状态b,对应图中的下支路;然后再分别以这两条支路的终节点a和b作为处理下一位输入信息的起点,从而得到4条支路.以此类推,可以得

到整个树状图o如r图2-3[6]

二快去

E A=O

O

B=Ol

E土=10

工=>=

1]

1

。。

a

罔2-3 (2,1,3)幸牛民罔

2.4.3卷积码的网格国

如下图2-4是(2,1,3)卷积编码的网格图[叶。

状,a:::.OO 00

。。

a

b

C

d

a

b

c

d

E

b

c

d

a

b

C

d

00 0

b;=()l ?

c==lO ??气。1 气Y

、电} 飞1 气飞

d=1 ] ??~--,..--~--...--e£--to---.

10

图2-4 (2,1,3)卷积编码的网格图当出下--ii"\j

萨佣

b

庐山10

a司阳

d=H d;;lt

但) (协

图2-5卷积码状态图

[6]2.4.4卷积码的解析表示

除上述三种图解表示方法外,常常还用解析表示方法描述卷积码,即延时算子多项式。在延时算子多项式表示中,编码器中的移位寄存器与模2加法器的连接关系以及输入、输出序列都表示为延时算子D的多项式。在一般情况下,输入序列可表示为[的:

M(D) = m,+ mzD + m3D\(2-1)

变量D的幕的次数等于相对于时闯起点的单位延时数目,时间起点通常选在第1个输出比特. ml,m2,m3,m. ..为输入比特的二进制表示(1或oL用D算子多项工、表示移位寄存器各级与各模2项连接关系时。若某级寄存器与某模2和相连,则多项式中相应项的系数为L否则为O(表示无连接)。以图3.2所示(2,1,3)卷积码为例,左、右两个模2和与寄存器各级的连接关系可表达为[的:

G.(D)=1+D2

G2(D)=1+D+D2(2-2)

通常把表示移位寄存器与模2和连接关系的多项式称为生成多项式,因为由811']可以用多项式相乘计算出输出序列o卷积码的图解与解析表示方法各有特点。用延时算子多项式表示卷积码编码器的生成多项式最为方便。网格图对于分析卷积码的译码算法十分有用。

3卷积码的译码

3.1卷积码译码的概述

卷积码的译码方式有三种(2): 0) 1963年由梅西( (Massey)提出的门限译码,这是一种基于码代数结构的代数译码,类似于分组码中的大数逻辑译码; (2)

1963年由费诺(Fana)改进的序列译码,这是基于码的树状图结构上的一种准最佳的楠率译码: (3) 1967年由维特比提出的Viterbi算法。这是基于码的网(trellis)图基础上的一种最大似然译码算法,是一种最佳的概率译码方法[自]。其中,代数译码9利用编码本身的代数结构进行译码,不考虑信道本身的统计特性。该方法的硬件实现简单,但性能较差,其中具有典型意义的是门限译码。另一类是概率译码,这种译码通常建立在最大似然准则的基础上。由于计算是用到了信道的统计特性.因而提高了译码性能,但这种性能的提高是以增加硬件的复杂度为代价的。常用的概率译码方法有维特比译码和序列译码。维特比译码具有最佳性能,但硬件实现复杂;门限译码性能最差,但硬件简单;序列译码在性能和硬件方面介于维特比译码和门限译码之r Ei] 0

3. 2卷积码的最大似然译码

卷积码楠率译码的基本思路是[3J.以接收码流为基础,逐个计算它与其他所有可能出现的、连续的网格图路径的距离,选出其中可能性最大的一条作为译码估值输出o概率最大在大多数场合可解释为距离最小,这种最小距离译码体现的

是最大似然的准则。卷积码的最大似然译码与分组码的最大似然译码在原理上是一样的,但实现方法上略有不同c [21主要区别在于:分组码是孤立地求解单个码组的相似度,而卷积码是求码字序列之间的相似度。基于网格图搜索的译码是实现最大似然判决的重要方法和途径。用格圈描述时,由于路径的汇聚消除了树状图中的多余度,译码过程中只需考虑整个路径集合中那些使似然函数最大的路径。如果在某一点上发现某条路径己不可能获得最大对数似然函数,就放弃这条路径,然后在剩下的"幸存"路径中重新选择路径。这样一直进行到最后第L级(L为发送序列的长度)。由于这种方法较早地丢弃了那些不可能的路径,从而减轻了译码的工作量,Viterbi译码正是基于这种想法。对于(归n,k,K)卷积码,其网格图中共2

最初2U条路径各不相同,当接收到第K条支路时,每条路径都有2条支路延伸到第K级上,而第K级上的每两条支路又都汇聚在一个节点上。在Viterbi译码算法中,把汇聚在每个节点上的两条路径的对数似然函数累加值进行比较,然后把具有较大对数似然函数累加值的路径保存下来,而丢弃另一条路径,经挑选后第K级只留下2K条幸存路径。选出的路径同它们的对数似然函数的累加值将一起被存储起来。由于每个节点引出两条文路,因此以后各级中路径的延伸都增大一倍,

但比较它们的似然函数累加值后,丢弃一半,结果留存下来的路径总数保持常数。由此可见9上述译码过程中的基本操作是,"加一比一选飞即每级求出对数似然函数的累加值,然后两两比较后作出选择。有时会出现两条路径的对数似然函数累加值相等的情形,在这种情况下可以任意选择其中一条作为"幸存"路径。

卷和、码的编码器从全零状态出发,最后又回到全零状态时所输出的码序列,称为结尾卷积码。因此,当序列发送完毕后,要在网格图的终结处加上CK-l)个己知的信息作为结束信息。在结束信息到来时,由于每一状态中只有与已知发送信息相符的那条支路被延伸,因而在每级比较后,幸存路径减少一半。因此,在接收到CK-l)个己知信息后,在整个网格圈中就只有唯一的一条幸存路径保留下来,这就是译码所得的路径。也就是说,在己如接收到的序列的情况下,这条译码路径和发送序列是最相似的o 由上述可见,Viterbi译码过程井不复杂,译码器的运行是前向的、无反馈的。它接收一段,计算一段,选择一段最可能的码段(分支),从而达到整个码序列是一个有最大似然函数的序列。传输序列很长时,判决需要的长延时和相当大的存储量是我们无法承受的o

因此,实际应用中采用截短Viterbi算法,即不需要接收到所有序列才进行判决,当译码器接收井处理完了固定的T CT ?L)个码段后,在接收第CT+l)个码段的时候,它将比较前T级的路径量度,然后从中选取最小者,由此得到与最小量度对应的幸存路径,将此路径对应的T个码段判决输出o T称为截短深度,T选的足够大时,则对译码器输出的译码错误概率影响很小。

3.3 VITEBI译码的关键步骤 3.3.1

输入与同步单元

输入同步单元为译码器提供正确的支路同步,每次正确地输出属于一条支路的n个比特。显然,当支路定时失步时,译码过程中将会出现大量的差错,只要能检测出这种状态,&P能有效地调整支路同步。一种方法是监视路径量度的增长率;另一种方法是检查网格图的路径合并性质。当译码器出现失步时,网格图中幸存路径合井的速率比同步时慢得多[210

3. 3. 2支路量度计算

每当接收到一条新支路的一组n个量度值(硬判决时为n比特),支路量度计算单元就对网格图中每一条不同的支路确定一新的量度值。对R=k/n码来说,每次将有2个不同的量度值。在软判决Viterbi译码肘,支路量度值不但随支路不同而异,而且还与接收信号的量化值有关[飞

3. 3. 3路径量度的存储与更新

在此单元中,支路量度与以前所存储的路径量度相加,然后对汇聚到同一节

点处的支路进行路径量度比较,选择一条路径量度最小的路径保留下来[2103.3.4信息序列的存储与更新

一种最佳的也是最常用的方法是基于最大似然译码。对于R=l/n卷积码而言,每接收一组新的支路信息,在各个状态的路径存储器中存入经"加一比一边"电路选出的一位假想信息比特,同时将最先存入路径存储器的一位比特输出结判决单元。因此,每接收到一条新支路,路径存储器就更新一次它所存储的假想信息序列[210

3.3.5判决与输出单元

在R=1/n卷积码最佳译码时,应选择具有最小路径量度的假想信息序列中最早存入的一个比特做译码输出[飞

4结论

4.1卷积码的仿真

本文通过MATLAB 下的SIMULINK 仿真。首先建立卷积码的仿真模块并组合起

来。

'S .I.trt Qo~

国4-1卷积码的编码译码框囡

如上图4-1的信号流程可以表示为先由Bernoulli Bin 町GeneratorC 贝努利二进制序列产生器)产生一个0, 1等概序,列,经过Convolutional Encod.er e 卷积编码器)对输入的二进制序列进行卷积编码,井用BPSK 调制方式调制信号。加入信道噪声(高斯臼噪声)后再经过BPSK 解调制后送入Vi terbi DecodereVi terbi 译码器)进行硬判决译码。最后经过Error Rate CalculationC 误码统计)后由Display

(显示)输出o 然后通过Selector(数据选通器〉将结果输出到To workspace (J 一作区问)。

4.1.1 S 1JV[~I~1C 仿真模块的参数设置以及重要参数的意义

在建立如图4-1的仿真模块后,对各个模块分别一一进行设置后并运行仿真。

!l ock Parameters: Bernoulli Binary Generato 矿

B..rnoulli Binary G..nerator (m ask) aink) Generate

a Bernoulli random binary nwnber.

To ~@n..rat.. a v..clor output , sp@cify th.. .prob 息.bili ty as a ve~lor_

Par 8IIl ..ters

Prob 毡bility of a zero

0.5

Ini ti al s@ed:

25741

I 百Frame-based outputs

Sampl.... p 喧r fram..:

110000

I

Can~el

I

!::I 向

I I

图4-2贝努利二进制序列产生器模块的设置框圄

如上图4-2是贝努利二进制序列产生器模块的设置框图,其中参数有三项:

第一项prob抽出ty of a zero取值为0.5.表示0和1出现的概率相等。Ini tial seed表示随机种子数。不同的随机种子数将产生不同的二进制序列,特定的随机种子数可以产生一个特定的二进制序列。Sample time=O.OOOl表示抽样时间,也就是说输出序列中每个二进制符号的持续时间是0.0001秒。Samples p町frame表示每帧的抽样数用来确定每帧的抽样点的数目o Frame-based ou申uts是用来确定帧的输出格式。

同[rn;~;;r;i a;illi4.4t;;:Jit1~.l:rmm,";町

BPSK Modulator Baseb皿d lin皿k)Q.ink)

Modulate the input signal using the binary pha"e shift keying

method.

For sample-based input,the input m咀st be a scalar. For frame-ba主

ed input,the input must b,e a column vector.

工n c a.se of王r皿e-based input,the width of the output

frame equals the product of the numbe.r of symbols al\d the s町、pIes per

symbol value.

In case of sample-based input,the。咀tput sample time

equ al.s the symbol period divi d.ed by the S国nple宫per symbol v al.咀e

Par四'ete.rs

Phase offs.et6-ad):

S町、pIes per s归Tl bol:

出I Cancel

I Help I ~~fI f' I

国4-3 BPSK调制器模块的设置框图

如上国4-3是BPSK调制器模块的设置框图中有二项,第一项是Phaseoffset(rad)(相位偏移);这里设置为0。第二项是Samples p町symbol(输出信号采样数)这里设置为10

~l础IUailI114i4tYi.i,M.il山阳

Convolutional Encoder(in ask)(l ink)

Convol飞lti onally encode binary data. Use the polyetrelli s

function to create a trellis using the constraint Ie且gth,ceule g

阻..ralar (o,ctal) and feedback connection (octal).

Reset:

Use the istrellis,f Wl.ction in M.ATW to check if e.

structure is a vali d lrelli s slructure

Par四"ters

b@Ili 5 S truct ur e

IpolyetreUi s (3,[6 1])

IOn 'each

frame

3 mI Cancel I H句I. ~) L J

固4-4卷积编码器模块的设置框圈

如上图4-4是卷积编码器模块的设置框图o 其中τre 出s structure ( Trellis 结构)中通过pol y2trellisO 函数把卷积码的约束长度,生成多项式以及反馈多项;):.1转换成Trellis 结构的形式。如上面是(2,1, 3)卷积码的参数设置。(3, [6,7])说明约束长度是3,生成多项式是(八进制) 6和7,无反馈多项式。后面还 要用到的(2,1, 7)的参数是(7,

[171, 133])是约束长度是7.生成多项芦是171和1330 Reset 是复位方式,这里设置为on

each 世皿e ,它表示卷积码编码器在每帧数据开始之前自动对寄存器复位。

hlock Paranleters: Error Rate Calculation

Error Rate Calculation (m ask) Uink)

Co 丽put.. the error ra·t@ of the r 唱c@ived dat'a by comp &r i n~

il lo a delayed version of the lra 且smilled dala. The block output is a three-element vector consistin;g of the error

rate , followed by the numb 壶r of errors del 噎ete d. and the

total number of symbols compared. This vector c 町、be sent to ei the'r the worksp'aee or an output port.

Th E! d 座

1也ys ar E!宝

peci'fi@d 豆且 numb@.r of 宝

amples , rE g:ardless of whethEr the input is a scalar or a VEctor. ThE inputs

to the 'T 萃, and' Rx' ports must bE sample-bas@d scalars or fr 也me-based column v·eetors.

The 'Stop simulation' oplio.n st·ops the simulation upon d E!t@cting a targ@t numbe?- of errors or a maximum number of symbols ,听hiche 甲鱼r comes first. Par 国neters

Rec"i...@ d"lay:

Computa.ti on delay:

'。

e e I

e-n

a

h

33

3

OK I Cal

、eel II

l!;elp

固4-5误比特统计模块的设置框图

如上图4-5是误比特统计模:快的设置框图o 其中Receive delay 表示接收延迟,意思是在通信接收端口需要对接收到的信号进行解调,解码或解交织而带来一定的延迟,使得到达误码统计模块接收端的信号滞后于发送端的信号。为了补偿这种延迟这里设置为

00 Computation delay 表示计算延迟,在仿真过程中,有时间需要忽略最初的若干个输入

数据就通过计算延迟来实现。这里设置为00Computation mode 表示计算模式,帧的计算模式但n 由巳frame),误码统计模块对 发送端和接收端的所有输入数据进行统计。ou 申

utdata 是输出数据,这里设置为

Port 的意思是表示把统计数据从端口中输出o workspace 表示把统计数据输出到 工作区。

卡r:rIlIiI6i l¥iIIIQig ,:;&I.TQ nmr:D 叫

S..l."ctor

S."lect Or re-order the ,.pee; fi ",d "l.ement ,. of 国豆豆且pcut v'@clor

or lTI atrix.

y.=u (,,1",m"nt 宝) if input is 也吨rector y.=u (r ows , column ,.) if inpu t. i ,. .. m..tri l<. Th 宦..l"m.mt? an , rows (R),困地o;olumn.. (e)

may be

军p O!c 卫fi@d ..ith~r in th@ block' ~ dialo~ or throu~也nextern al. input port.

4 E r e

‘l E r d

·

·町

E

33 3

Input port wi~th: 3

I

Can ,,~l

I

lielp

I I

图4-6数据边通器模块的设置框图

如上图4-6是数据选通器模块的设置框图。对应图4-1看Elements 是指输出端口的个数为1 0In put port wid 由表示输入端口的个数为30

mI r:T:Il!W iI¥ i 161..1:0 i 町

MIPU 4!ζ~一

Vi t.erbi Decoder (ma.sk 】Uink 】

Uses t.he V 卫t.erbi algor 卫t..hm t.00 decode CQ ,D.vol u.t.且o :n.a.:.l.ly en lC oded inp u.t. d ,

a t.a. Use t.he po l.y2t.r~孟s:£u.且cti o ,n t.o crea t.e a t.:r el1卫s using t.he cons t.rain~ length~ code genera·t.or (oct :a1):&rI.d £e€"d

b a.ck

c ornn.e c:ti .on. (o c:ta 正)-

Par &me:t.e:rs

Trelli s s l.r u.c l.ure:

lpol y2t :r ιlis (3, [6 7])

Decisio n.l.ype: IH ::a-d Decision

三]

4

Tr a.ceb a.ck dep t:.h

35

曰:p e.raltion mode: ITr UD.cated

三1

r

aK I c

ee l.

I

图4-7卷积码译码器模块的设置框图

如上图4-7是卷积码译码器模块的设置框图。Trellis structure: Trellis 结构(前面己说明)0 Decision 可pe 是指判决类型,有3种: (1) Un quantized (非量化)

( 2) Hard Decision(硬判决),( 3) Soft Decision(软判决) Traceback dep 由表 示反馈深度。

它的值会影响译码精度和解码延迟。Operation mode 是指操作模式。在Truncated 模式下,解码器在每帧数据结束的时候总能恢复到全0状态,它与卷积编码器的on each frame 复位方式相对应。

4.2改变卷积码的参数仿真以及结论 4.2.1

不同回溯长度对卷积码性能的影响

面将以(2, L 7)卷积码来建立模块仿真。将译码模块中的Traceback depth 分别设置为20, 35, 45并在一个图中画出这三种方式下的误码性能曲线得到图4-8。从上到下的三条曲线分别是Traceback dep 由为20. 35. 45。可以看出=口l 溯长度是在Viterbi 译码过程中一个很重要的参数,他抉定了译码延迟,随着

他的不断变化,误码性能也随误比特率曲线可以清楚地看到,当回溯长度一定时,随着信道噪声的逐渐减小P

系统的误比特率逐渐降低;当回溯长度逐渐增加F

系统的误比特率

随之逐渐降低,但是当回溯程度7增加到r 二三5Na 才(N 为编码的约束长度) J

误比特率数值趋

于稳定J

因此y

在确定回溯怯度时既要考虑到随着r 的增加误比特率随之降低的趋势,也要

考虑到译码延迟会变大y

在选取回溯长度时y

通常取T = 5 No

1口。

10-1

'" '"

5

E

1口3

1口4

-10

-8

-6

-4 -2

2

4

SNR

国4-8不同回潮长度对误码性能的影响

分析不同回溯长度对卷积码误码性能的影响时用到的程序如x=-1O :5:

y=x;

for i=l:leng 出(x)

SNR=x(i); sim('yima');

y(i)=mean(Bi tE rrorRa 臼); end

semilogy(x ,y); hold on;

for i=l:length(x)

SNR=x(i);

sim('yimal ');

y(i)=me.an(BitErrorRa臼);

end

semilogy(x,y);

hold on;

for i=l:leng由(x)

SNR=x(i);

吕im('严ma2');

y(i)=mean(BitErrorRa胆);

end

semilogy(x,y);

4.2.2不同码率对卷积码误码性能的晌

面国4-9是通过改变卷积码的码率为112和1月而得到的二条对比由钱。

上面的一条曲线是码率为1/2. T面的是码率为1130卷积码的码率R= k/几他是卷积码的一个重要参数,当改变卷积码的码率时,系统的误码性能也将随之发生变化。从国4-9中的误比特率曲线可以看出,当码率一定时,随着信道噪声的逐渐减小,系统的误比特率也逐渐减小,当改变系统码率时,随着卷积码码率的逐渐提高,系统的误比特率也呈现出增大的趋势,也就是说码率越低,系统的误比特率就越小,误码性能就越好。

1口

1

10.2

峰一~,1,3)

OJ

m

~ 10.3

比』

,1

1O.s

o 0.5 1.5 2 2.5 3 3.5 4 Hi 5

SNR

国4-9卷积码不同码率对误码性能的影响

分析不同码率对卷积码误码性能的影响时用到的程序如

x=O:5;

y=x;

for i=I:lengtb(x)

SNR=x(i);

simCyimal ');

y(i )=mean(B i tE rrorRa胆);

巳nd

semilogy(x,y);

hold on;.

for i=I:lengtb(x) SNR=x(i);

simCyima2');

y(i)=mean(B i tErr orRate);

end

semilogy(x,y);

4.2.3不同约束长度对卷积码的误码性能影响

如下图4-10.对于码率一定的卷积码,当约束长度N发生变化时,系统的诀码性能也会随之发生变化,我们以码率R =1/ 2的(2,1,3)和(2.1. 7)卷积码为例展开分析。上面的由线是(2,1,3)卷积码的误码性能曲线。下面的曲钱是(2,1,7)卷积码的误码性能曲线。从图4-4中的误比特率曲线可以清楚地看到,随着约束长度的逐渐增加,系统的误比特率明显降低,所以说当码率一定时,增加约束长度可以降低系统的误比特率,但是随着约束长度的增加,i辛码设备的复杂性也会随之增加,所以对于码率为1/ 2的卷积码,我们在远取约束长度时一般为3~9 0

10-1

10.

2

r阳,3)

f飞,

庄吨至

10-·

w

10-4

10-6

o 0.5 1.5 2 2.5 3 3.5 4 4.5 5

SNR

图4-10不同约束长度对卷积码误码性能的影响分

析不同约束长度对卷积码误码性能影响用到的程序如x=O:5:

y=x;

for i=l:length(x)

SNR=x(i);

sim('yima');

y(i)=mean(B itEηorRa田);

end

semilogy帜,y);

hold on~

for i=l:length(x)

SNR=又(i);

sim('yimal ');

y(i) =mean(B i tErr orRate );

end

semilogy(x,y);

通过上面从(0回溯长度; (2)码率; (3)约束长度这三个卷积码的重要参数的变化后对译码性能的分析,我们得到在卷积码的编码,译码过程中有很多条件是不可能同时满足的。所以我们要根据具体情况来选择合适的参数。

结论

通过本次课题的研究,针对Viterbi算法在理论和实现两方面分别进行了较深的研究。理论方面,在深入了解了用于卷积码的Viterb:i译码算法基本原理后,进一步将其拓展到SIM皿INK模块仿真方面的应用,主要给出了基于Matlab的卷积编码和Viterbi算法应用过程。在实现方面,本文重点研究的是用SIMUL町K实现不同码率:不同约束长度;不同回溯长度下的卷积码的误码性能的对比研究.最后仿真得到对比图,达到了研究的预期目的。

经过自己的努力和曾老师的耐心指导,毕业设计顺利按时完成。它是对我们把本科四年所学的理论知识运用到实践中的一次系统的检验。从接到题目到设计结束的过程中经历了很多,总的来说可以概括为以下几点。

(0设计中要用到的Simulink仿真软件是我第一次接触,所以刚接到题目时无从下手,后来通过上网和借助图书馆的书籍,学习这f丁新的软件,学习过程中遇到很多困难,但通过自己的努力和老师的帮助,最终掌握了仿真的基本方法。

(2)由于面临找工作的问题,和此次设计士作的时间安排上有一定的忡突。

为了顺利完成设计工作,老师安排了每周的工作量和所要达到的目标,自己也制定了相应的时间表,以求更充分的利用时|胃口

(3)刚开始在设计的步骤和方法上比较混乱,后通过借阅各种资料和请教老师,有了明确的工作方向和清晰的设计步骤,使我能在更短的时间内很好的完成了本次毕业设计。

由于时间原因,本文的士作在很多方面未能更深入地研究下去。如对于Vi terbi译码的软,硬判诀的误码性能对比和应用还有必要进一步研究。

卷积码的编解码Matlab仿真

卷积码的编解码Matlab仿真摘要 卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力D随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本文简明地介绍了卷积码的编码原理和译码原理o并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。经过仿真和实测,并对测试结果作了分析。得出了以下三个结论z (1)当改变卷积码的码率时,系统的误码性能也将随之发生变化。 (2)对于码率一定的卷积码,当约束长度N发生变化时,系统的误码性能也会随之发生变化。 (3)回溯长度也会不同程度上地影响误码性能。 关键词:卷积码:码率:约束长度:回溯长度

Simulation and Research on Encoding and Decoding of Convolution Code Abstract Convolution code has a superior performance of the channel code. It is easy to coding and decoding.An d it has a strong ability to correct e盯ors. As correcting coding theory has a long development,the practice of convolution code is more and more extensive.In由1S由esis,the principle of convolution coding and decoding is introduced simply白rstly. Then由e whole simulation module process of encoding,decoding and the Error Rate Calculation is completed in由is design. Finally,in order to understand 由eir performances of error rate,many changes in parameters of convolution code are calculated in the simulation process.Af ter simulation and me皿UTe,an analysis of test results is presented.Th e following由ree conclusions are draw: (l)Wh en the rate of convolution Code ch皿ges,HER performance of the systemwill change. (2) For a certain rate of convolution code,when由ere is a change in the constraint length of N,BER perfonnance of由e system will change. (3) Re位ospec咀ve length will affect BE R. Key words: convolution code; rate; cons缸aint leng由; retrospective length;

Matlab中卷积码译码器的误码率分析

长沙理工大学 《通信原理》课程设计报告 郭林 学院计算机与通信工程专业通信工程 班级540802 学号11 学生姓名郭林指导教师龙敏 课程成绩完成日期2008年1月11日

基于Matlab的卷积码译码器的 设计与仿真 学生姓名:郭林指导老师:** 摘要本课程设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出, 并通过Matlab软件进行设计与仿真,并进行误码率分析。在课程设计中,系统开发平台为Windows Vista Ultimate,程序设计与仿真均采用Matlab R2007a(7.4),最后仿真详单与理论分析一致。 关键词课程设计;卷积码译码器;Matlab;Simulink;设计与仿真 1引言 本课程设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出,并通 过Matlab软件进行设计与仿真。卷积码的译码有两种方法——软判决和硬判决,此课程设计采用硬判决的维特比译码。 1.1课程设计目的 卷积码是一种向前纠错控制编码。它将连续的信息比特序列映射为连续的编码器输出符号。这种映射是高度结构化的,使得卷积码的译码方法与分组码译码所采用的方法完全不同。可以验证的是在同样复杂度情况下,卷积码的编码增益要大于分组码的编码增益。对于某个特定的应用,采用分组编码还是采用卷积编码哪一种更好则取决于这一应用的具体情况和进行比较时可用的技术[1]。 本课程设计便是通过Matlab设计一个硬判决维特比译码输出的完整电路,并进行误码率分析。

1.2 课程设计的原理 卷积码,又称连环码,是由伊莱亚斯(P.elias)于1955年提出来的一种非分组码。 卷积编码的最佳译码准则为:在给定已知编码结构、信道特性和接收序列的情况下,译码器将把与已经发送的序列最相似的序列作为传送的码字序列的估值。对于二进制对称信道,最相似传送序列就是在汉明距离上与接收序列最近的序列。 卷积码的译码方法有两大类:一类是大数逻辑译码,又称门限译码(硬判决,编者注);另一种是概率译码(软判决,编者注),概率译码又分为维特比译码和序列译码两种。门限译码方法是以分组码理论为基础的,其译码设备简单,速度快,但其误码性能要比概率译码法差[2]。 当卷积码的约束长度不太大时,与序列译码相比,维特比译码器比较简单,计算速度快。维特比译码算法是1967年由Viterbi提出,近年来有大的发展。目前在数字通信的前向纠错系统中用的较多,而且在卫星深空通信中应用更多,该算法在卫星通信中已被采用作为标准技术。 2维特比译码原理 采用概率译码的基本思想是:把已接收序列与所有可能的发送序列做比较,选择其中码距最小的一个序列作为发送序列。如果发送L组信息比特,那么对于(n,k)卷积码来说,可能发送的序列有2kL个,计算机或译码器需存储这些序列并进行比较,以找到码距最小的那个序列。当传信率和信息组数L较大时,使得译码器难以实现。维特比算法则对上述概率译码做了简化,以至成为了一种实用化的概率算法。它并不是在网格图上一次比较所有可能的2kL条路径(序列),而是接收一段,计算和比较一段,选择一段最大似然可能的码段,从而达到整个码序列是一个最大似然值得序列。 下面以图2.1的(2,1,3)卷积码编码器所编出的码为例,来说明维特比解码的方法和运作过程。为了能说明解码过程,这里给出该码的状态图,如图2.2所

Matlab的卷积码译码器的仿真要点

基于Matlab的卷积码译码器的 设计与仿真 学生姓名:指导老师:** 摘要本课程设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出, 并通过Matlab软件进行设计与仿真,并进行误码率分析。在课程设计中,系统开发平台为Windows Vista Ultimate,程序设计与仿真均采用Matlab R2007a(7.4),最后仿真详单与理论分析一致。 关键词课程设计;卷积码译码器;Matlab;Simulink;设计与仿真 1引言 本课程设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出,并通 过Matlab软件进行设计与仿真。卷积码的译码有两种方法——软判决和硬判决,此课程设计采用硬判决的维特比译码。 1.1课程设计目的 卷积码是一种向前纠错控制编码。它将连续的信息比特序列映射为连续的编码器输出符号。这种映射是高度结构化的,使得卷积码的译码方法与分组码译码所采用的方法完全不同。可以验证的是在同样复杂度情况下,卷积码的编码增益要大于分组码的编码增益。对于某个特定的应用,采用分组编码还是采用卷积编码哪一种更好则取决于这一应用的具体情况和进行比较时可用的技术[1]。 本课程设计便是通过Matlab设计一个硬判决维特比译码输出的完整电路,并进行误码率分析。

1.2 课程设计的原理 卷积码,又称连环码,是由伊莱亚斯(P.elias)于1955年提出来的一种非分组码。 卷积编码的最佳译码准则为:在给定已知编码结构、信道特性和接收序列的情况下,译码器将把与已经发送的序列最相似的序列作为传送的码字序列的估值。对于二进制对称信道,最相似传送序列就是在汉明距离上与接收序列最近的序列。 卷积码的译码方法有两大类:一类是大数逻辑译码,又称门限译码(硬判决,编者注);另一种是概率译码(软判决,编者注),概率译码又分为维特比译码和序列译码两种。门限译码方法是以分组码理论为基础的,其译码设备简单,速度快,但其误码性能要比概率译码法差[2]。 当卷积码的约束长度不太大时,与序列译码相比,维特比译码器比较简单,计算速度快。维特比译码算法是1967年由Viterbi提出,近年来有大的发展。目前在数字通信的前向纠错系统中用的较多,而且在卫星深空通信中应用更多,该算法在卫星通信中已被采用作为标准技术。 2维特比译码原理 采用概率译码的基本思想是:把已接收序列与所有可能的发送序列做比较,选择其中码距最小的一个序列作为发送序列。如果发送L组信息比特,那么对于(n,k)卷积码来说,可能发送的序列有2kL个,计算机或译码器需存储这些序列并进行比较,以找到码距最小的那个序列。当传信率和信息组数L较大时,使得译码器难以实现。维特比算法则对上述概率译码做了简化,以至成为了一种实用化的概率算法。它并不是在网格图上一次比较所有可能的2kL条路径(序列),而是接收一段,计算和比较一段,选择一段最大似然可能的码段,从而达到整个码序列是一个最大似然值得序列。 下面以图2.1的(2,1,3)卷积码编码器所编出的码为例,来说明维特比解码的方法和运作过程。为了能说明解码过程,这里给出该码的状态图,如图2.2所

卷积码matlab程序

卷积编码程序: function [output, len_tal] = cnv_encd(secrettext, encodetext) g = [0 0 1 0 0 1 0 0; 0 0 0 0 0 0 0 1; 1 0 0 0 0 0 0 1; 0 1 0 0 1 1 0 1]; k0 = 1; % 读入文本文件并计算文件长度 frr = fopen(secrettext, 'r'); [msg, len] = fread(frr, 'ubit1'); msg = msg'; % check to see if extra zero padding is necessary if rem(length(msg), k0) > 0 msg = [msg, zeros(size(1:k0-rem(length(msg),k0)))]; end n = length(msg)/k0; % 把输入比特按k0分组,n为所得的组数。 % check the size of matrix g if rem(size(g, 2), k0) > 0 error('Error, g is not of the right size.'); end % determine L and n0 L = size(g, 2)/k0; n0 = size(g, 1); % add extra zeros,以保证编码器是从全0开始,并回到全0状态。 u = [zeros(size(1:(L-1)*k0)), msg, zeros(size(1:(L-1)*k0))]; % generate uu, a matrix whose columns are the contents of conv. encoder at % various clock cycles. u1 = u(L*k0: -1 :1); for i = 1:n+L-2 u1 = [u1, u((i+L)*k0:-1:i*k0+1)]; end uu = reshape(u1, L*k0, n+L-1); % determine the output output = reshape(rem(g*uu, 2), 1, n0*(L+n-1)); len_tal = n0*(L + n - 1);

基于MATLAB的卷积码的分析与应用

基于MATLAB的卷积码的分析与应用

毕业设计(论文)任务书

基于MATLAB的卷积码的分析与应用 摘要 随着现代通信的发展,特别是在未来4G通信网络中,高速信息传输和高可靠性传输成为信息传输的两个主要方面,而可靠性尤其重要。因为信道状况的恶劣,信号不可避免会受到干扰而出错。为实现可靠性通信,主要有两种途径:一种是增加发送信号的功率,提高接收端的信号噪声比;另一种是采用编码的方法对信道差错进行控制。前者常常受条件限制,不是所有情况都能采用。因此差错控制编码得到了广泛应用。 介绍了多种信道编码方式,着重介绍了卷积码的编码方法和解码方式。介绍了MATLAB的使用方法、编程方法、语句、变量、函数、矩阵等。介绍了TD-SCDMA通信系统和该系统下的卷积码,搭建了系统通信模型。编写卷积码的编码和解码程序。用MATLAB仿真软件对TD-SCDMA系统的卷积码编解码进行仿真。对其纠正错码性能进行验证,并且对误码率进行仿真和分析。卷积码的编码解码方式有很多,重点仿真Viterbi算法。Viterbi算法就是利用卷积码编码器的格图来计算路径度量,选择从起始时刻到终止时刻的惟一幸存路径作为最大似然路径。沿着最大似然路径回溯到开始时刻,所走过的路径对应的编码输出就是最大似然译码输出序列。它是一种最大似然译码方法,当编码约束长度不大、或者误码率要求不是很高的情况下,Viterbi译码器设备比较简单,计算速度快,因而Viterbi译码器被广泛应用于各种领域。 关键词:卷积码;信道编码;TD-SCDMA;MATLAB

目录 毕业设计(论文)任务书 ............................................................................................I 摘要........................................................................................................................... II Abstract......................................................................................... 错误!未定义书签。第1章绪论 . (1) 1.1课题研究的背景和来源 (1) 1.2主要内容 (2) 第2章相关理论介绍 (3) 2.1信道编码 (3) 2.1.1 信道编码的分类 (3) 2.1.2 编码效率 (3) 2.2线性分组码 (3) 2.3循环码 (5) 2.4卷积码 (6) 2.4.1 卷积码简介 (7) 2.4.2 卷积码的编码 (7) 2.4.3 卷积码的解码 (13) 第3章MATLAB应用 (21) 3.1数和算术的表示方法 (21) 3.2向量与矩阵运算 (21) 3.2.1 通过语句和函数产生 (21) 3.2.2 矩阵操作 (22) 3.3矩阵的基本运算 (22) 3.3.1 矩阵乘法 (22) 3.3.2 矩阵除法 (23) 3.4MATLAB编程 (23) 3.4.1 关系运算 (23) 3.4.2 控制流 (25) 第4章卷积码的设计与仿真 (27) 4.1TD-SCDMA系统 (27) 4.1.1 系统简介 (27) 4.1.2 仿真通信系统模型 (27)

基于MATLAB对卷积码的性能分析

基于MATLAB对卷积码的性能分析 【摘要】本文对比了在加性高斯白噪声(AWGN)信道下经BPSK调制后的数据不编码与添加卷积编码后接收到的信道输出的误码性能,并通过对比对卷积码性能进行分析。采用MATLAB自编函数对[2,1,8]卷积码以及维特比译码进行仿真,且对其性能进行分析。由于卷积码有性能floor,编码增益随信噪比降低而体现不明显。仿真结果表明:当信噪比等于-1dB时,一个序列通过加性高斯白噪声信道后接收到的信道输出误比特率大于10-1,且该序列运用[2,1,8]卷积码编码,维特比译码(硬判决)后所得的序列误比特率升高。当信噪比为2dB时,一个序列通过加性高斯白噪声信道后接收到的信道输出误比特率约为4*10-2,且该序列运用[2,1,8]卷积码编码,维特比译码后所得的序列误比特率小于10-3,误码率远低于不编码时的误码率。因此卷积码适用于信道输出误码率比较低时候。 【关键词】维特比译码;卷积码;误比特率;马尔科夫性 1.引言 卷积码的编码器是由一个有k位输入、n位输出,且具有m位移位寄存器构成的有限状态的有记忆系统,通常称它为时序网络。[1]编码器的整体约束长度为v,是所有k个移位寄存器的长度之和。具有这样的编码器的卷积码称作[n,k,v]卷积码。对于一个(n,1,v)编码器,约束长度v等于存储级数m。卷积码是由k个信息比特编码成n(n>k)比特的码组,编码出的n比特码组值不仅与当前码字中的k个信息比特值有关,而且与其前面v个码组中的v*k个信息比特值有关。 卷积码有三种译码方式:序列译码、门限译码和概率译码。其中,概率译码根据最大似然译码原理在所有可能路径中求取与接收路径最相似的一条路径,具有最佳的纠错性能,[2]维特比译码是概率译码中极重要的一种方式。 序列译码和门限译码则不一定能找出与接收路径最相似的一条路径。不同于维特比译码,门限译码与序列译码所需的计算量是可变的且对于给定信息分组的最终判决仅仅基于(m+1)个接收分组,而不是基于整个接收序列。[3]与维特比译码所使用的对数似然量度不同,序列译码所使用的量度为Fano量度。在接收序列受扰严重的情况下,序列译码的计算量大于维特比译码所需的固定计算量,虽然序列译码要求的平均计算次数通常小于维特比译码。在采用并行处理的情况下,维特比译码的速度会优于序列译码。在同样码率和存储级数的条件下,门限译码的性能比维特比译码低大约3dB。 维特比译码的数据输出方式有硬判决及软判决两种方式,本文选取生成多项式为561,753的(2,1,8)卷积码对硬判决的性能进行分析,并依据维特比译码的原理以及卷积码的特性,对卷积码编码和维特比译码过程在加性高斯白噪声(AWGN)信道下进行仿真,并且根据仿真结果对维特比译码(硬判决)的结果

MATLAB OFDM卷积编码程序及代码

%bin22deci.m function y=bin22deci(x) %将二进制数转化为十进制数 t=size(x,2); y=(t-1:-1:0); y=2.^y; y=x*y'; %************************end of file*********************************** %comb.m %AWGN加噪声程序 function[iout,qout]=comb(idata,qdata,attn) %******************variables************************* %idata:输入I信道数据 %qdata:输入Q信道数据 %iout输出I信道数据 %qout输出Q信道数据 %attn:由信噪比导致的衰减系数 %****************************************************** iout=randn(1,length(idata)).*attn; qout=randn(1,length(qdata)).*attn; iout=iout+idata(1:length(idata)); qout=qout+qdata(1:length(qdata)); %************************end of file*********************************** %crdemapping.m %数据逆映射载波程序 function[iout,qout]=crdemapping(idata,qdata,fftlen,nd); %******************variables************************* %idata:输入I信道的数据 %qdata:输入Q信道的数据 %iout:输出I信道的数据 %qout:输出Q信道的数据 %fftlen:FFT的长度 %nd:OFDM符号数 %***************************************************** iout(1:26,:)=idata(2:27,:); qout(1:26,:)=qdata(2:27,:); iout(27:52,:)=idata(39:64,:); qout(27:52,:)=qdata(39:64,:); %********************end of file*************************** %crmapping.m

MATLAB实现卷积码编译码-

本科生毕业论文(设计) 题目:MATLAB实现卷积码编译码 专业代码: 作者姓名: 学号: 单位: 指导教师: 年月日

目录 前言----------------------------------------------------- 1 1. 纠错码基本理论---------------------------------------- 2 1.1纠错码基本理论 ----------------------------------------------- 2 1.1.1纠错码概念 ------------------------------------------------- 2 1.1.2基本原理和性能参数 ----------------------------------------- 2 1.2几种常用的纠错码 --------------------------------------------- 6 2. 卷积码的基本理论-------------------------------------- 8 2.1卷积码介绍 --------------------------------------------------- 8 2.1.1卷积码的差错控制原理----------------------------------- 8 2.2卷积码编码原理 ---------------------------------------------- 10 2.2.1卷积码解析表示法-------------------------------------- 10 2.2.2卷积码图形表示法-------------------------------------- 11 2.3卷积码译码原理---------------------------------------------- 15 2.3.1卷积码三种译码方式------------------------------------ 15 2.3.2V ITERBI译码原理---------------------------------------- 16 3. 卷积码编译码及MATLAB仿真---------------------------- 18 3.1M ATLAB概述-------------------------------------------------- 18 3.1.1M ATLAB的特点------------------------------------------ 19 3.1.2M ATLAB工具箱和内容------------------------------------ 19 3.2卷积码编码及仿真 -------------------------------------------- 20 3.2.1编码程序 ---------------------------------------------- 20 3.3信道传输过程仿真-------------------------------------------- 21 3.4维特比译码程序及仿真 ---------------------------------------- 22 3.4.1维特比译码算法解析------------------------------------ 23 3.4.2V ITERBI译码程序--------------------------------------- 25 3.4.3 VITERBI译码MATLAB仿真----------------------------------- 28 3.4.4信噪比对卷积码译码性能的影响 -------------------------- 28

基于matlab的2-3卷积码编码译码设计与仿真

西南科技大学 方向设计报告 课程名称:通信工程方向设计 设计名称:2/3卷积码编译码器仿真与性能分析 姓名: 学号: 班级: 指导教师: 起止日期:2011.12.12-2012.1.6 西南科技大学信息工程学院制

方向设计任务书 学生班级:学生姓名:学号: 设计名称:2/3卷积码编译码器仿真与性能分析 起止日期:2011.12.12-2012.1.6指导教师: 设计要求: (1)分析2/3卷积码编码器结构; (2)分析2/3卷积码译码的Viterbi算法; (3)基于SIMULINK进行2/3卷积码的纠错性能仿真; 方向设计学生日志 时间设计内容 12.15-12.17 查看题目及设计要求。 12.18-12.23 查阅相关资料,设计方案。 12.23-12.27 编写报告及调试程序。 12.28-12.29 完善修改课程设计报告。 12.30-12.31 答辩。

方向设计考勤表 周星期一星期二星期三星期四星期五 方向设计评语表 指导教师评语: 成绩:指导教师: 年月日

2/3卷积码编译码器仿真与性能分析 摘要: 卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本文简明地介绍了卷积码的编码原理和Viterbi译码原理。并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。经过仿真和实测,并对测试结果作了分析。 关键词: 卷积码编码器、viterbi译码器、SIMULINK

卷积码的编解码Matlab仿真

卷积码的编解码Matlab仿真

卷积码的编解码Matlab仿真 摘要 卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本文简明地介绍了卷积码的编码原理和译码原理。并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。经过仿真和实测,并对测试结果作了分析。得出了以下三个结论: (1)当改变卷积码的码率时,系统的误码性能也将随之发生变化。 (2)对于码率一定的卷积码,当约束长度N 发生变化时,系统的误码性能也会随之发生变化。 (3)回溯长度也会不同程度上地影响误码性能。 关键词:卷积码;码率;约束长度;回溯长度

Simulation and Research on Encoding and Decoding of Convolution Code Abstract Convolution code has a superior performance of the channel code. It is easy to coding and decoding. And it has a strong ability to correct errors. As correcting coding theory has a long development, the practice of convolution code is more and more extensive. In this thesis, the principle of convolution coding and decoding is introduced simply firstly. Then the whole simulation module process of encoding, decoding and the Error Rate Calculation is completed in this design. Finally, in order to understand their performances of error rate, many changes in parameters of convolution code are calculated in the simulation process. After simulation and measure, an analysis of test results is presented. The following three conclusions are draw: (1) When the rate of convolution Code changes, BER performance of the system will change. (2) For a certain rate of convolution code, when there is a change in the constraint length of N, BER performance of the system will change. (3) Retrospective length will affect BER. Key words:convolution code; rate; constraint length; retrospective length;

基于matlab的卷积码译码器的仿真设计

数字通信原理课程设计报告书

基于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)卷积码状态图

CA码生成原理及matlab程序实现

C A码生成原理及 m a t l a b程序实现 The Standardization Office was revised on the afternoon of December 13, 2020

作业:用Matlab写C/A码生成器程序,并画生成码的方波图。 C/A码生成原理 C/A 码是用 m 序列优选对组合形成的 Gold 码。Gold码是由两个长度相同而互相关极大值为最小的 m 序列逐位模2 相加所得到的码序列。它是由两个10 级反馈移位寄存器组合产生的,其产生原理如图1 所示。 图1 C/A码生成原理 发生器的抽头号为3和10,发生器的抽头号为2、3、6、8、9、10;发生器的第10位输出的数字即为码,而码是由的两个抽头的输出结果进行模2相加得到。 卫星的PRN码与延时的量是相关联的,对C/A码来说,每颗卫星都有特别的延时,如第1颗GPS卫星的G2 抽为2、6,第2颗为3、7,第3 颗为4、8,第4 颗

为5、9 等,如图2所示。通过G2 相位选择可以产生结构不同的伪随机码,从而可以实现不同卫星之间的码分多址技术与卫星识别。 图2 prn序号与G2抽头、时延对应关系

基于MATLAB的GPS信号实现 编写成“codegen”程序,输入[ca_used]=codegen(svnum),其中svnum为卫星号,ca_used为得到的C/A码序列。程序具体实现流程如下:在程序中定义一个数组,使得卫星号与G2的码片延时一一对应。 gs2=[5;6;7;8;17;18;139;140;141;251;252;254;255;256;257;258;469;470;471;472;473 ;474;509;512;513;514;515;516;859;860;861;862]; 定义两个 1×1 023 的数组 g1、g2 用来存放生成的Gold 码。定义一个全1 的 10 位数组,作为移位寄存器,相当于G1、G2 生成模块的初值均置为全“1”。按原理式 来生成两个 Gold 码序列。设定两个 Gold 码产生器的反馈抽头: save1=reg(3)*reg(10); % g1 码的反馈值; save2=reg(2)*reg(3)*reg(6)*reg(8)*reg(9)*reg(10);%g2 码的反馈值。 在移位寄存器数组reg 中逐位移动,将末端值reg(10)送入g1(g2),将反馈抽头的模2 值输出 save1、save2 送入寄存器首位reg(1)。g1 码这样重复运算1 023 次后即可生成。g2 码在此基础上要引入与卫星号相对应的码片延时 g2s(s),s 为输入的卫星号。以码片延时时间作为分界点,将其后半段数据前移,前半段数据后移,这样就得到 g2 码。将产生的 g1 和g2 码逐点相乘,反向,即得 C/A 码。

基于MATLAB的卷积码的分析与应用毕业设计

毕业设计 基于MATLAB的卷积码的分析与应用

东北大学本科毕业设计(论文)毕业设计(论文)任务书毕业设计(论文)任务书 毕业设计(论文)题目: 基于MATLAB的卷积码的分析与应用 设计(论文)的基本内容: (1)介绍纠错控制编码的相关理论,重点分析卷积码的相关编码和解码理论。 (2)在MATLAB中编写卷积码的编码和解码程序,模拟通信系统,针对TD-SCDMA系统中的卷积码进行仿真。 (3) 进行纠错译码验证,纠错比较及误码率相关因素分析。 毕业设计(论文)专题部分: 题目: 设计或论文专题的基本内容: 学生接受毕业设计(论文)题目日期 第2周 指导教师签字: 2010年3月8日

基于MATLAB的卷积码的分析与应用 摘要 随着现代通信的发展,特别是在未来4G通信网络中,高速信息传输和高可靠性传输成为信息传输的两个主要方面,而可靠性尤其重要。因为信道状况的恶劣,信号不可避免会受到干扰而出错。为实现可靠性通信,主要有两种途径:一种是增加发送信号的功率,提高接收端的信号噪声比;另一种是采用编码的方法对信道差错进行控制。前者常常受条件限制,不是所有情况都能采用。因此差错控制编码得到了广泛应用。 介绍了多种信道编码方式,着重介绍了卷积码的编码方法和解码方式。介绍了MATLAB的使用方法、编程方法、语句、变量、函数、矩阵等。介绍了TD-SCDMA通信系统和该系统下的卷积码,搭建了系统通信模型。编写卷积码的编码和解码程序。用MATLAB仿真软件对TD-SCDMA系统的卷积码编解码进行仿真。对其纠正错码性能进行验证,并且对误码率进行仿真和分析。卷积码的编码解码方式有很多,重点仿真Viterbi算法。Viterbi算法就是利用卷积码编码器的格图来计算路径度量,选择从起始时刻到终止时刻的惟一幸存路径作为最大似然路径。沿着最大似然路径回溯到开始时刻,所走过的路径对应的编码输出就是最大似然译码输出序列。它是一种最大似然译码方法,当编码约束长度不大、或者误码率要求不是很高的情况下,Viterbi译码器设备比较简单,计算速度快,因而Viterbi译码器被广泛应用于各种领域。 关键词:卷积码;信道编码;TD-SCDMA;MATLAB

matlab卷积码程序

1、卷积码编码 function [output]=cnv_encd(input) %output=cnv_encd(g,k0,input) 卷积码编码函数 %g 生成矩阵 %k0 输入码长 %input 输入信源序列 %output 输出卷积编码序列 g=[1 1 1;1 0 1];编码矩阵 k0=1; input=[1 1 0 1]; if rem(length(input),k0)>0 input=[input,zeros(size(1:k0-rem(length(input),k0)))]; end n=length(input)/k0; if rem(size(g,2),k0)>0 error('Error,g is not of the right size.') end li=size(g,2)/k0; n0=size(g,1); u=[zeros(size(1:(li-1)*k0)),input,zeros(size(1:(li-1)*k0))]; u1=u(li*k0:-1:1); for i=1:n+li-2 u1=[u1,u((i+li)*k0:-1:i*k0+1)]; end uu=reshape(u1,li*k0,n+li-1); output=reshape(rem(g*uu,2),1,n0*(n+li-1)); 2、Viterbi译码程序 1) function y=bin2deci(x) l=length(x); y=(l-1:-1:0); y=2.^y; y=x*y'; 2) function y=deci2bin(x,l) y=zeros(1,l);

(完整word版)卷积码的编译码MATLAB程序

%survivor state是一个矩阵,它显T了通过网格的最优路径,这个矩阵通过一个单独的函 数metric(x,y)给出。 %其中G是一个矩阵,它的任一行决定了从移位寄存器到模2加法器的连接方式.为生成矩阵 %这里,我们做了一个简单的(2,1,7)卷积码编码器。 k=1; G=[1 0 1 1 0 1 1;1 1 1 1 0 0 1];%G1=133,G2=171 %以下3种输入序列,可任选一种% %input=[0 0 0 0 0 0 0];%全0输入 %input=[1 1 1 1 1 1 1];%全1输入 input=[round(rand(1,7)*1)];%随机系列输入,也可用 randint(1,7,[0 1]) figure;plot(input,'*r') %figure1:画图:目标input,红色(red,r),形状为* s=input; g1=G(1,:); g2=G(2,:); c1=conv(s,g1);%作卷积 %disp(c1); c2=conv(s,g2); %disp(c2); n=length(c1);%7位输入时n=13 c=zeros(1,2*n);%生成全0矩阵,1*26 %disp(c); for i=1:n c(2*i-1)=c1(i);c(2*i)=c2(i);%两个模2加法器分别输出卷积结果序列后,由旋转开关读取的结果(此时仅为卷积结果,非2进制0/1) end for i=1:2*n if(mod(c(i),2)==0)% mod(c(i),2)==0意思:c(i)除以2,余数为0 c(i)=0; else c(i)=1; end end output=c; channel_output=output;%输出矩阵 %disp(channel_output); figure;plot(output,'*b') %画图:目标:卷积码编码输出,蓝色(blue,b)* %————————————————以上为编码部分,以下为维特比译码———————————————— n=size(G,1);%取矩阵G的行数,故n=2。即得到输出端口,即2个模2加法器 %检验G的维数 if rem(size(G,2),k)~=0 %当矩阵G的列数不为k的整数倍时,rem为求余函数 error('Size of G and k do not agree')%报错 end if rem(size(channel_output,2),n)~=0 %当输出矩阵的列数不是输出端口n的整数倍时。(注:size(channel_output,2)=26,2个模2加法器合成的输出)

相关文档
最新文档