基于卷积编码的扩频通信系统软件平台设计班级:通信131姓名:崔校通学号:201300484316目录一设计内容及要求 (3)1.1 设计目的 (3)1.2 设计任务 (4)1.3 设计内容 (4)二设计原理 (5)2.1 数据源 (5)2.2卷积编码 (5)2.3 M序列发生器 (6)2.4 扩频与解扩 (6)2.4.1扩频 (6)2.4.2解扩 (7)2.5 VITERBI译码 (7)2.6 可靠度评估 (8)三软件仿真及结果分析 (9)3.1信源调制 (9)3.1.1信息码生成模块 (9)3.1.2卷积编码 (9)3.1.3伪随机码生成模块 (10)3.1.4扩频调制模块 (11)3.1.5BPSK调制模块 (12)3.2信息传输 (13)3.2.1加噪模块 (13)3.3信宿解调 (14)3.3.1BPSK解调模块 (14)3.3.2解扩模块 (15)3.3.3V ITERBI译码 (16)3.4性能分析 (19)3.4.1卷积扩频分析 (19)3.4.2信源信宿比较 (20)3.4.3频谱分析 (20)四心得体会 (22)参考文献 (23)前言扩频通信是现代通信系统中新的通信方式,它具有较强的抗干扰、抗衰落和抗多径性能,频谱利用率高。
扩频信号是不可预测的、伪随机的宽带信号,其带宽远大于要传输的数据(信息)带宽,同时接收机中必须有与宽带载波同步的副本。
在发端输人的信息先调制形成数字信号,然后由扩频码发生器产生的扩频码序列去调制数字信号以展宽信号的频谱,展宽后的信号再调制到射频发送出去。
在接收端收到的宽带射频信号,变频至中频,然后由本地产生的与发端相同的扩频码序列去相关解扩,再经信息解调,恢复成原始信息输出。
通信系统都要进行3次调制和相应的解调。
一次调制为信息调制。
与一般通信系统比较,多了扩频调制和解扩部分。
扩频通信具备如下特征:(1)数字传输方式;(2)传输信号的带宽远大于被传信息带宽;(3)带宽的展宽,是利用与被传信息无关的函数(扩频函数)对被传信息的信元重新进行调制实现的;(4)接收端用相同的扩频函数进行相关解调(解扩),求解出被传信息的数据。
用扩频函数(也称伪随机码)调制和对信号相关处理是扩频通信有别于其他通信的两大特点。
一设计内容及要求1.1 设计目的(1)学习通信中的纠错编码技术及其主要应用;(2)掌握扩频通信原理技术及其特点,了解其在通信系统中特别是第三代移动通信系统所采用的码分多址(CDMA )技术中的应用;(3)学会用C 或MATLAB 软件方法设计一般通信系统;(4)学习CDMA 手机的信息处理过程,掌握其基带电路主要组成部分和工作原理及功能;模拟CDMA 手机的信息处理过程。
完成基带电路主要组成部分的软件平台设计并评估系统的可靠性。
1.2 设计任务(1)建立CDMA 手机处理信息的卷积编码扩频通信系统(2)软件实现卷积编码和Viterbi 译码的算法(3)软件实现扩频通信系统的扩频与解扩(4)评估卷积编码扩频通信系统的可靠性1.3 设计内容本次课程设计主要实现的任务有:建立卷积编码扩频通信系统;软件实现卷积编码和Viterbi 译码的算法;软件实现扩频通信系统的扩频与解扩;评估卷积编码扩频通信系统的可靠性。
系统设计的总体框图如图1-1:卷积编码 扩频 信道 解扩Viterbi 译码 数据源 判决数据m 序列发生器图1-1二设计原理2.1 数据源随机产生b(t)={b(0),b(1),b(2),……}的二进制数据2.2卷积编码卷积码(又称连环码),是由伊莱亚斯(P.Elis)提出的一种非分组码。
它把k比特信息段编成n比特的码组,该码组不仅同当前的k 比特信息段有关,而且还同前面的(N-1)个信息段有关联(N为大于1的整数)。
通常,把卷积码记作(n,k,N),其中k为输入码元数,n为输出码元数,N为约束长度,表示编码器的存储器级数。
卷积编码属于信道编码,主要用来纠正码元的随机差错,它是以牺牲效率来换取可靠性,利用增加监督位,进行检错和纠错。
卷积码编码器是一个由k个输入端、n个输出端,且具有(N-1)或m节移位寄存器构成的有限状态记忆系统,通常称为时序网络,其原理如图2-1所示。
图2-12.3 m序列发生器二进制的m序列是一种重要的伪随机序列,有良好的自相关特性,有时称为伪噪声序列。
m序列是最长线性移位寄存器序列的简称。
顾名思义,m序列是由多级移位寄存器或其延迟元件通过线性反馈产生的最长的码序列。
它能产生的的最大长度的码序列为2^n-1位。
2.4 扩频与解扩将编码输出与扩频码相乘,即完成扩频;将扩频后的信号(叠加有噪声)与扩频码相乘,即为解扩。
2.4.1 扩频扩频通信的基本特点是传输信号所占用的频带宽度(W)远大于原始信息本身实际所需的最小(有效)带宽(DF),其比值称为处理增益Gp,其中 Gp = W/DF。
任何信息的有效传输都需要一定的频率宽度,为了充分利用有限的频率资源,增加通路数目,人们广泛选择不同调制方式,采用宽频信道(同轴电缆、微波和光纤等)和压缩频带等措施,同时力求使传输的媒介中传输的信号占用尽量窄的带宽。
因现今使用的电话、广播系统中,无论是采用调幅、调频或脉冲编码调制制式,Gp值一般都在十多倍范围内,统称为“窄带通信”,而扩频通信的Gp值,高达数百、上千,称为“宽带通信”。
如图图2-2为扩频系统能够一般原理图:图2-22.4.2 解扩正如在一般的窄带通信中,已调信号在接收端都要进行解调来恢复所传的信息。
在扩频通信中接收端则用与发送端相同的扩频码序列与收到的扩频信号进行相关解调,恢复所传的信息。
换句话说,这种相关解调起到解扩的作用。
即把扩展以后的信号又恢复成原来所传的信息。
这种在发端把窄带信息扩展成宽带信号,而在收端又将其解扩成窄带信息的处理过程,会带来一系列好处。
弄清楚扩频和解扩处理过程的机制,是理解扩频通信本质的关键所在。
基本的扩频过程就是在收端产生与发端完全相同的PN码,对收到的扩频信号,在平衡调制器中再一次进行二相相移键控调制。
可以看出发端相移键控调制后的信号在收端又被恢复成原来的载波信号。
当然一个必要的条件是本地的PN码信号的相位必须和收到的相移后的信号在相移点对准,才能正确地将相移后的信号再翻转过来。
2.5 Viterbi译码Viterbi译码算法是一种卷积码的解码算法。
卷积码的 Viterbi译码是根据接收码字序列寻找编码时通过网格图最佳路径的过程 ,找到最佳路径即完成了译码过程 ,并可以纠正接收码字中的错误比特。
所谓“最佳”,是指最大后验条件概率:P( C/ R) = maxj[ P ( Cj/ R) ] ,其译码流程为:(1)根据接收码符号计算出相应的分支量度值;(2)进入某一状态的分支量度与其前状态路径量度累加求和;(3)比较到达当前状态的新的路径量度的大小,选择最大者作为新的状态路径量度存储起来,并保存与此路径对应的码字;(4)对所有状态都实施上述加、比、选运算;(5)在每一译码时刻,满足延时就从 256 条留存路径中,选择路径量度最大的一条路径作为译码数输出;(6)进入下一译码时刻,重复以上步骤,直至译码结束。
2.6 可靠度评估用误码率(BER )指标,计算公式)(数据量尽可能大总输入数据检测到的数据错误数 BER ……比较两个数据数据源 发射端 接收端 判决数据三软件仿真及结果分析3.1信源调制3.1.1信息码生成模块code_length=20; %信息码元个数N=1:code_length;rand('seed',0);x=sign(rand(1,code_length)-0.5); %信息码从0、1序列变成-1、1序列x1=rectpulse(x,800);%每个码元内采样800个点plot(x1);axis([0 16000 -1.5 1.5]);title('信源信息码序列');grid on;生成信息码的波形图3.1.2卷积编码function output=cnv_encd(g,k0,input)if rem(length(input),k0)>0input=[input,zeros(size(1:k0-rem(length(input),k0)))];endn=length(input)/k0;if rem(size(g,2),k0)>0error('Error,g is not of the right size.')endl=size(g,2)/k0;n0=size(g,1);u=[zeros(size(1:(l-1)*k0)),input,zeros(size(1:(l-1)*k0))];u1=u(l*k0:-1:1);for i=1:n+l-2u1=[u1,u((i+l)*k0:-1:i*k0+1)];enduu=reshape(u1,l*k0,n+l-1);output=reshape(rem(g*uu,2),1,n0*(l+n-1));********************************************************g=[0 0 1 0 1 0 0 1;0 0 0 0 0 0 0 1;1 0 0 0 0 0 0 1];k0=2;input=[1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1];output=cnv_encd(g,k0,input)********************************************************g=[1 0 1;1 1 1];k0=1;channel_output=[0 1 1 0 1 1 1 1 0 1 0 0 0 1];[decoder_output,survivor_state,cumulated_metric]=viterbi(g,k,channel_o utput)3.1.3伪随机码生成模块function y = mgen(g,state,N)%输入g:m序列生成多项式(10进制输入)%state:寄存器初始状态(10进制输入)%N:输出序列长度figure(1)g=19;state=8;N=2000;gen = dec2bin(g)-48;M = length(gen);curState = dec2bin(state,M-1) - 48;for k =1:Ny(k) = curState(M-1);a = rem(sum( gen(2:end).*curState),2);curState = [a curState(1:M-2)];endx_code=sign(y-0.5);pn=rectpulse(x_code,8);%每个伪码元内采样8个点plot(pn);axis([0 600 -1.5 1.5]);title('伪随机码序列');grid on;生成伪随机码的波形图3.1.4扩频调制模块gt=x1.*pn;plot(gt);axis([0 1000 -1.5 1.5]);title('复合码序列');grid on;生成的复合码波形图3.1.5BPSK调制模块%用BPSK调制fs=20e6;f0=30e6;for i=1:2000AI=2;dt=fs/f0;n=0:dt/7:dt; %一个载波周期内采样8个点cI=AI*cos(2*pi*f0*n/fs);x_bpsk((1+(i-1)*8):i*8)=gt((1+(i-1)*8):i*8).*cI endplot(x_bpsk);axis([0 200 -2.5 2.5]);title('BPSK调制后的波形');grid on;生成BPSK调制后的波形图3.2信息传输3.2.1加噪模块sigma=0.1;nt=sigma*randn(1,20);nt1=rectpulse(nt,800);gt1=gt+nt1;fs=20e6;f0=30e6;for i=1:2000AI=2;dt=fs/f0;n=0:dt/7:dt; %一个载波周期内采样8个点cI=AI*cos(2*pi*f0*n/fs);x_bpsk1((1+(i-1)*8):i*8)=gt1((1+(i-1)*8):i*8).*cI endplot(x_bpsk1);axis([0 200 -2.5 2.5]);title('加噪后已调波的波形');grid on;生成加噪后已调波的波形图3.3信宿解调3.3.1 BPSK解调模块AI=1;dt=fs/f0;n=0:dt/7:dt; %一个载波周期内采样八个点cI=AI*cos(2*pi*f0*n/fs);for i=1:2000s((1+(i-1)*8):i*8)= x_bpsk1((1+(i-1)*8):i*8).*cI;endplot(s);axis([0 200 -2.5 2.5]);title('解调后的波形');grid on;生成BPSK解调后的波形图3.3.2解扩模块%相关解扩jk_code=s.*pn;%低通滤波wn=5/1000000; %截止频率wn=fn/(fs/2),这里fn为扩频码的带宽5Mb=fir1(16,wn);H=freqz(b,1,16000);xx=filter(b,1,jk_code);plot(xx);axis([0 16000 -1.5 1.5]);title('解扩并滤波后的波形');grid on;生成解扩后的波形图3.3.3 Viterbi译码function[decoder_output,survivor_state,cumulated_metric]=viterbi(g,k,ch annel_output)n=size(g,1);if rem(size(g,2),k)~=0error('Size of g and k do not agree')endif rem(size(channel_output,2),n)~=0error('channel output not of the right size')endL=size(g,2)/k;number_of_states=2^((L-1)*k);for j=0:number_of_states-1for l=0:2^k-1[next_state,memory_contents]=nxt_stat(j,l,L,k);input(j+1,next_state+1)=l;branch_output=rem(memory_contents*g',2);nextstate(j+1,l+1)=next_state;output(j+1,l+1)=int_state(branch_output);endendstate_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(number_of_states,depth_of_trellis+1);for i=1:depth_of_trellis-L+1flag=zeros(1,number_of_states);if i<=Lstep=2^((L-i)*k);elsestep=1;endfor j=0:step:number_of_states-1for l=0:2^k-1branch_metric=0;binary_output=bin_state(output(j+1,l+1),n);for ll=1:nbranch_metric=branch_metric+metric(channel_output_matrix(ll,i),binary _output(ll));endif((state_metric(nextstate(j+1,l+1)+1,2)>state_metric(j+1,1)+branch_metri c)|flag(nextstate(j+1,l+1)+1)==0)state_metric(nextstate(j+1,l+1)+1,2)=state_metric(j+1,1)+branch_metric;survivor_state(nextstate(j+1,l+1)+1,i+1)=j;flag(nextstate(j+1,l+1)+1)=1;endendendstate_metric=state_metric(:,2:-1:1);endfor 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-1branch_metric=0;binary_output=bin_state(output(j+1,1),n);for ll=1:nbranch_metric=branch_metric+metric(channel_output_matrix(ll,i),binary _output(ll));endif((state_metric(nextstate(j+1,1)+1,2)>state_metric(j+1,1)+branch_metric)| flag(nextstate(j+1,1)+1)==0)state_metric(nextstate(j+1,1)+1,2)=state_metric(j+1,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);endstate_sequence=zeros(1,depth_of_trellis+1);state_sequence(1,depth_of_trellis)=survivor_state(1,depth_of_trellis+1); for i=1:depth_of_trellisstate_sequence(1,depth_of_trellis-i+1)=survivor_state((state_sequence(1, depth_of_trellis+2-i)+1),depth_of_trellis-i+2);enddecoder_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_sequence(1,i+1)+1);dec_output_bin=bin_state(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.4性能分析3.4.1卷积扩频分析-12-11-10-9-8-7-6-5-4-310-310-210-110无卷积,无扩频无卷积,L=15无卷积,L=31-12-11-10-9-8-7-6-5-4-310-410-310-210-110有卷积,L=15改变卷积,L=15-12-11-10-9-8-7-6-5-4-310-310-210-1100无卷积,L=15有卷积,L=153.4.2信源信宿比较3.4.3频谱分析通过以上图形可以得出的结论如下:在加入卷积后,系统的抗干扰能力比没有加卷积的时候强;加入扩频比不加扩频的时候抗干扰能力强,并且扩频因子越大,系统的抗干扰能力越强。