OFDM在光纤通信中的卷积编码.docx

上传人:小飞机 文档编号:4886968 上传时间:2023-05-21 格式:DOCX 页数:21 大小:515.25KB
返回 下载 相关 举报
OFDM在光纤通信中的卷积编码.docx_第1页
第1页 / 共21页
OFDM在光纤通信中的卷积编码.docx_第2页
第2页 / 共21页
OFDM在光纤通信中的卷积编码.docx_第3页
第3页 / 共21页
OFDM在光纤通信中的卷积编码.docx_第4页
第4页 / 共21页
OFDM在光纤通信中的卷积编码.docx_第5页
第5页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《OFDM在光纤通信中的卷积编码.docx》由会员分享,可在线阅读,更多相关《OFDM在光纤通信中的卷积编码.docx(21页珍藏版)》请在三一办公上搜索。

1、OFDM在光纤通信中的卷积编码的研究一、实验工具: Mathworks Matlab二、实验目的:掌握信道编码,卷积编码的编码与解码方式,熟练操作Matlab软件;三、实验要求:1、Matlab完成简单的OFDM信号的产生与解调程序;2、信道编码采用卷积编码,解码采用维特比译码;3、OFDM符号采用QPSK映射方式;4、采用不同的编码速率进行编码,如:1/3, 1/2, 5/8, or 3/4;5、在AWG信道下,比较卷积编码的OFDM系统的误比特率性能;6、具体的编码要求,见参考文献pp55-59。五、实验内容3.1 OFDM3.1.1 OFDM基本原理OFDM(Orthogonal Fre

2、quency Division Multiplexing)即正交频分 复用技术, OFDM是一种无线环境下的高速传输技术。无线信道的频率响应曲线大多是非平坦 的,而OFDM技术的主要思想就是在频域内将给定信道分成许多正交子信道,在每 个子信道上使用一个子载波进行调制信号带宽小于信道的相应带宽,因此就可以 大大消除信号波形间的干扰。由于在OFDM系统中各个子信道的载波相互正交,它 们的频谱是相互重叠的,这样不但减小了子载波间的相互干扰,同时又提高了频 谱利用率。OFDM的基本思想是把高速率的信源信息流通过串并变换,变换成低速率的N路并 行数据流,然后将这N路数据流分别调到N个相互正交的子载波上,

3、再将N路调制 后的信号相加即得发射信号。3.1.2、OFDM调制原理框图其主要思想是:将信道分成若干正交子信道,将高速数据信号转换成并行的低速 子数据流,调制到在每个子信道上进行传输。正交信号可以通过在接收端采用相 关技术来分开,这样可以减少子信道之间的相互干扰ici。每个子信道上的信 号带宽小于信道的相关带宽,因此每个子信道上的可以看成平坦性衰落,从而可 以消除符号间干扰。而且由于每个子信道的带宽仅仅是原信道带宽的一小部分, 信道均衡变得相对容易。OFDM通过把需要发射的数据流分解为若干个 并行的数据子流,这样每个数据子流在速率上就会降低很多,然后再进 行相关调制,将它们调制到一组总数为N,

4、频率之间的间隔相等,且又两两正交 的子载波上。设一个OFDM符号之内包含N个经过相移键控(PSK)或者正交幅度 调制(QAM)的子载波。T表示OFDM符号的持续时间(周期),则OFDM的基带信 号为s(,)空-d产()对于信号s(t)以T/N的速率进行抽样,即令t=kT/N(k=0,1,N-1),则 可得: 七=s(kT / N) = d e兀孕(0 k 0input=input,zeros(size(1:k0-rem(length(input),k0);endn=length(input)/k0;%检查生成矩阵G的维数是否和k0一致 if rem(size(G,2),k0)0error(Er

5、ror,G is not of the right size.) end%得到约束长度L和输出比特数n0L=size(G,2)/k0;n0=size(G,1);%在信息前后加0,使存贮器归0,加0个数为(L-1)*k0个 u=zeros(size(1:(L-1)*k0),input,zeros(size(1:(L-1)*k0);%得到uu矩阵,它的各列是编码器各个存贮器在各时钟周期的内容 u1=u(L*k0:-1:1);%将加0后的输入序列按每组L*k0个分组,分组是按k0比特增加%从1到L*k0比特为第一组,从1+k0到L*k0+k0为第二组,。,%并将分组按倒序排列。for i=1:n+L

6、-2u1=u1,u(i+L)*k0:-1:i*k0+1);enduu=reshape(u1,L*k0,n+L-1);%得到输出,输出由生成矩阵G*uu得到3.2 .2 QPSK 技术1 QPSK原理四相相移调制是利用载波的四种不同相位差来表征输入的数字信息,是四进制移相键控。QPSK是在M=4时的调相技术,它规定了四种载波相位,分别为45,135,225,315,调制器输入的数据是二进制数字序列,为了能和四进制的载波相位配合起来,则需要把二进制数据变换为四进制数据,这就是说需要把二进制数字序列中每两个比特分成一组,共有四种组合,即00,01,10,11,其中每一组称为双比特码元。每一个双比特码

7、元是由两位二进制信息比特组成,它们分别代表10000111四进制四个符号中的一个符号。QPSK中每次调制可传输2个 信息比特,这些信息比特是 通过载波的四种相位来传递 的。解调器根据星座图及接 收到的载波信号的相位来判 断发送端发送的信息比特。图2-1 QPSK相位图以n/4 QPSK信号来分析当输入的数字信息为“10”码元时,输出已调载波A cos/兀2 兀 f c t +(2-1)当输入的数字信息为“00”码元时输出已调载波A cos(2-2)A cos输出已调载波5 n 当输入的数字信息为“01 ”码元时 r2 n f t +(2-3)当输入的数字信息为“11 ”码元时,输出已调载波A

8、cos2 兀 f c t + Z4L(2-4)000Q(t)QPSK调制规则接收机收到某一码元的QPSK信号可表示为:(2-5)yi(t)=a cos(2n fct+q n) 其中中nQPSK解调原理分析由QPSK的解调框图得到:(2-6)y (t) = y (t) = y (t) = a cos(2nf t +中)A B ic nz (t) = a cos(2nf t +中)cos 2nf t =巴 cos(4nf t + 中)+ a cos 中 (27)Ac ncgc n nn、- aa .z (t) = a cos(2 nf t +。) cos(2 nf t + _) =sin(4 nf

9、 t +。) + sin。Bc nc 22c n 2 n(2-8),八 aa -(2-9)a (t) = _cos中,xB (t) = _sin中符号相位中 ncos中的极性sin中.的极性判决器输出AB兀/ 4+113兀/4-+015兀/4-007兀/4+-10QSK信号解调器的判决准则3.2.3维特比译码原理由于卷积码的编码输出序列一定对应着网格图(或码树)中的一条路径,因此 卷积码的最大似然译码,就是根据收到的序列R,按照最大似然译码的准则,力 图在网格图上找到原来编码器编码时所走过的路径,这个过程就是译码器计算、 寻找最大似然函数的过程,即得到max tog P (RC )-(j =

10、1,2,2 kL)(2 一 5)对于BSC信道而言,就是寻找与R有最小汉明距离的路径,即得到mind(R., C.) j = 1,2,2l)(2 一 6)最大似然译码的性能固然很好,但它是以整个译码长度为(L+m)n作为整体 考虑的,这就给实际应用带来了困难。例如,若采用,L=50, k=2,可能的路径 大于1030条,对于每一个接收序列R都要与大约1030条码序列进行比较,这在 实际应用中几乎是不可能的。因此,必须寻找一种新的最大似然译码算法, Viterbi译码方法正是为了解决这一困难提出来的。它不是在网格图上一次比较 所有可能的个序列(路径),而是接收一段,就比较、计算一段,选择一条最可

11、能 的路径,从而使整个码序列是一个有最大似然函数的序列。用Viterbi译码的方 法具体步骤如下:(1) 从S0状态开始,时间单位j=1,计算并存储进入每一个状态的部分路径 及其度量值。(2) j增加1,计算此时刻进入各状态的部分路径及其度量值,经过比较后, 挑出并存储每个状态中一条有最大度量的那个部分路径及该部分路径对应的度 量值,称此部分路径为幸存路径。(3) 如果jL以后,由于输入码元开始为0,故网格图的状态数 减少,幸存路径也减少,到第(L+m)单位时间,网格图回到S0状态,最后只剩一 条幸存路径,这条路径就是我们需要的有最大似然函数的路径C。简单流程图如图2-7。开始图2-7译码流程

12、图%viterbi.m%viterbi解码程序functiondecoder_output,survivor_state,cumulated_metric=viterbi(G,k,channel_ou tput)%decoder_output,survivor_state,cumulated_metric=viterbi(G,k,channel_output)%其中G是一个n行L*k列矩阵,它的每一行决定了从移位寄存器到输入码字的连接方式 %survivor_state是一个矩阵,它显示了通过网格的最优路径,这个矩阵通过一个单独 %的函数metric(x,y)给出。n=size(G,1);%检

13、验G的维数if rem(size(G,2),k)=0error(Size of G and k do not agree)endif rem(size(channel_output,2),n)=0error(channle output not of the right size)endL=size(G,2)/k;number_of_states=2”(LT)*k);%产生状态转移矩阵,输出矩阵和输入矩阵for j=0:number_of_states-1for t=0:2kTnext_state,memory_contents=nxt_stat(j,t,L,k);input(j+1,next

14、_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);endendinput;state_metric=zeros(number_of_states,2);depth_of_trellis=length(channel_output)/n;channel_output_matrix=reshape(channel_output,n,depth_of_trellis);survivor_state=zeros(

15、number_of_states,depth_of_trellis+1);row_survivor col_survivor=size(survivor_state);%开始非尾信道输出的解码%i为段,j为每一阶段的状态,t为输入for i=1:depth_of_trellis-L+1flag=zeros(1,number_of_states);if istate_metric(j+1,1)+branch_metric)|flag( nextstate(j+1,t+1)+1)=0)state_metric(nextstate(j+1,t+1)+1,2)=state_metric(j+1,1)+

16、branch_metric;survivor_state(nextstate(j+1,t+1)+1,i+1)=j;flag(nextstate(j+1,t+1)+1)=1;endendendstate_metric=state_metric(:,2:-1:1);end%开始尾信道输出的解码for i=depth_of_trellis-L+2:depth_of_trellisflag=zeros(1,number_of_states);last_stop=number_of_states/(2”(i-depth_of_trellis+L-2)*k);for j=0:last_stop-1bran

17、ch_metric=0;binary_output=deci2bin(output(j+1,1),n);for tt=1:nbranch_metric=branch_metric+metric(channel_output_matrix(tt,i),binary_output(tt );endif(state_metric(nextstate(j+1,1)+1,2)state_metric(j+1,1)+branch_metric)|flag(ne xtstate(j+1,1)+1)=0) state_metric(nextstate(j+1,1)+1,2)=state_metric(j+1,

18、1)+branch_metric;survivor_state(nextstate(j+1,1)+1,i+1)=j;flag(nextstate(j+1,1)+1)=1;endendstate_metric=state_metric(:,2:-1:1);end%从最优路径产生解码输出%由段得到状态序列,再由状序列从input矩阵中得到该段的输出 state_sequence=zeros(1,depth_of_trellis+1);size(state_sequence);state_sequence(1,depth_of_trellis)=survivor_state(1,depth_of_t

19、rellis+1);for i=1:depth_of_trellisstate_sequence(1,depth_of_trellis-i+1)=survivor_state(state_sequence(1,depth_o f_trellis+2-i)+1),depth_of_trellis-i+2);endstate_sequence;decoder_output_matrix=zeros(k,depth_of_trellis-L+1);for i=1:depth_of_trellis-L+1dec_output_deci=input(state_sequence(1,i)+1,state

20、_sequence(1,i+1)+1);dec_output_bin=deci2bin(dec_output_deci,k);decoder_output_matrix(:,i)=dec_output_bin(k:-1:1);enddecoder_output=reshape(decoder_output_matrix,1,k*(depth_of_trellis-L+1);cumulated_metric=state_metric(1,1);3.3卷积编码的OFDM系统的误比特率性能信道编码,又称差错控制编码,它是按一定的规则给数字序列M增加一些 多余的码元,使不具有规律性的信息序列M变换为具

21、有某种规律的数字序列Y。 也就是说,码序列中信息序列的各码元与多余码元之间是相关的。在接收端,译 码器利用这种预知的编码规则来译码,或者说检验接收到的数字序列R是否符 合既定的规则,从而发现R中是否有无码而纠正其中的差错。根据相关性来检 查和纠正传输过程中产生的差错,这就是信道编码的基本思想。Figure 1图 3-3-1卷积File Edit View Insert Tools Desktop Window Help0 050.0060.010.0150.0350.040 045信噪比性能分析3 5 20 2 0O.L0-O.O这里仿真所使用的信道编码为(L3)卷积编码,仿真参数如下:=40

22、;信喋比三NumLoop = 60;NumSubc = 128;NumCP = 8;SyncDelay = 0;在卷积编码中,每k0个信息比特序列映射为一个长为n0的信息输入序列, 但是这个信道输入序列不仅决定于最当前的k0个信息比特,而且还与编码的 前(L - 1) k0个输入有关。因此,这种编码器有一种有限状态机的结构,在这 里每一时刻,输出序列不但与输入序列有关,而且还与编码器的状态有关,这 个状态是由编码器的前(L - 1) k0个输入决定的。参数L称为该卷积码的约 束长度。因此,一个二进制卷积码就是一个具有2 V 个状态的有限状态机。卷积编码的译码一般有两种方式:一种是代数解码,它利

23、用编码本身的代 数结构进行解码,不考虑信道的统计特性;一种是概率解码,这种解码方法在 计算时要用到信道的统计特性。Viterbi译码属于概率解码,它的基本思想是 最大似然算法:把接收到得序列与所有可能的发送序列进行比较,选择一种距 离最小的序列作为发送序列。这里仿真所采用就是Viterbi译码方法。由图4-6在低信噪比部分出现了采用信道编码的误码率高于未采用信道编 码的误码率的情况,这是由于在低信噪比时,进行信道解码前的误码率已经很 高,超出了卷积码的有效纠错范围,导致正确的码在译码时纠错,使得误码率 升高,但是这种低信噪比的可能性是很小的。随着信噪比的增加,信道编解码 的优势显现了出来,采用

24、信道编解码的误码率小于未采用信道编解码的误码 率。3.3.1.2不同编码的系统性能仿真本文对不同的信道编码分别进行了仿真,采用了( 7,4)线性分组码与卷积 码的比较,仿真结果如图4-6。仿真参数如下:Nums=40;NumLoop = 70;NumSubc = 128;NumCP = 8;SyncDelay = 0; io110210(n,k)线性分组码在编码时,将一个长为k的信息分组映射为一个长为n 的码字,R = k / m称为编码速率。每个分组码都有相应的校验矩阵H = Pt,Ink I其中P为生成矩阵的监督阵列,用来生成冗余的n - k位校验 位。(n,k)分组码可以用k bit线性

25、移位寄存器和n - k个模2加法器实现。分组码的译码采用标准阵译码。标准阵是由差错图样与码字组成的阵,其 陪集首项的集合为可纠正的错误图样集合,译码的过程中先计算接收矢量v的 伴随式s = vHT,然后由伴随式决定标准阵的陪集首e,最后将接收码字译为c =v + e。对于二元对称信道,分组码的误组率为P 2 n Pi (1 - P)n-ii=t+1,),译码的误比特率为P - X 用 Pi (1 - P) n-i P - P(1 - P) n-ib ni!(n - i)!i=t+1其中P为信道码元错误概率。卷积码将分组码加以推广,使增加的多余数字不仅与本组的信息有关,还 与前面若干组的信息有关

26、,可以起到更好的校验作用。由图3-3-2可知卷积编 码的性能明显比(4, 7)线性分组码的要好,随着信噪比的增加卷积码的性能优 越性越发明显。六、实验心得通过这次光纤的实验我有了很大的进步,以前都是别人做我去请教,当看到 这个实验题目时发现没人可以请教,所以必须自己干,通过看书查资料,上网查 询获得了一些收获,尤其在MATLAB的函数编写方面,有了很大的进步,以前就 只知道去调用,可能是电脑的原因,没办法成功的调用函数,就尝试着自己编写, 最终还是成功的编出来了卷积编码和部分的维特比译码,这是最大的收获,这次 实验以后我的MATLAB有了很大的进步,发现做实验不能只是照猫画虎,要加入 一些自己的思想和看法。团队协作也很重要,经常一个人的代码有问题结果都编 不出来,就需要我们合作去解决,这个实验我学到很多。赵玮 通信四班20110803416

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号