当前位置:文档之家› 扩频通信系统仿真实验

扩频通信系统仿真实验

重庆交通大学信息科学与工程学院综合性设计性实验报告专业:通信工程专业11级学号:姓名:实验所属课程:移动通信原理与应用实验室(中心):信息技术软件实验室****:***2013年11月一、题目扩频通信系统仿真实验二、仿真要求扩频通信系统的多用户数据传输①传输的数据随机产生,要求采用频带传输(BPSK调制);②扩频码要求采用周期为63(或127)的m序列;③仿真从基站发送数据到三个不同的用户,各不同用户分别进行数据接收;④设计三种不同的功率延迟分布,从基站到达三个不同的用户分别经过多径衰落(路径数分别为2,3,4);⑤三个用户接收端分别解出各自的数据并与发送前的数据进行差错比较。

三、仿真方案详细设计整个实验主要通过matlab仿真,产生基带信号,产生M序列,并且进行BPSK调制以及扩频和解扩等,实现三个不同用户不同径的数量的多径衰落,最终得出误码率。

整个通信系统的总体框图如下:扩频通信发射机设计信息(1,-1数据流)扩频码产生模块扩频BPSK 调制发射机参数设置扩频通信接收机设计用户1发射机 用户2发射机用户3发射机多径,高斯信道用户1接收机 用户2接收机 用户3接收机由流程图可知,整个设计主要由发送端、信道和接收机组成。

其中发射端主要完成m序列的产生,随机0,1序列的产生。

然后利用m序列对产生的随机序列进行扩频,然后再用cos(wt)对其进行调制。

信道主要模拟信号的多径传输,在这个信道中一共有三个用户的数据进行传输,用户一经过了2径衰落,用户二经过了3径衰落,用户三经过了4径衰落。

接收端接收到的信号是几路多径信号的加噪后的叠加,首先要完成信号的解扩,然后再解调,滤波,抽样判决最后分别与原始信号比较并统计误码率现对主要功能部分进行详细描述:1.主程序流程图2、扩频码(m序列)的产生m序列是最长线性移位寄存器序列的简称。

顾名思义,m序列是由多级移位寄存器或其延迟元件通过线性反馈产生的最长的码序列。

在二进制移位寄存器中,若n为移位寄存器的级数,n级移位寄存器共有2n个状态,除去全零状态外,还剩下2n-1种状态,因此它能产生的最大长度的码序列为2n-1位。

故产生m序列的线性反馈移位寄存器称做最长线性移位寄存器。

3、扩频扩频的主要思想是每一位数据位都扩展成长度为m序列长的信息,其具体做法是将数据信息中的‘1’用m序列代替,而对于‘-1’用-m序列代替,这样对每一个数据位都进行扩展就实现了对原始数据的扩频。

其结构框图如下:4、.BPSK 的调制原理:二进制移相键控是用二进制数字信号0和1去控制载波的两个相位0和π的方法。

在2PSK中,通常用初始相位0和π分别表示二进制1和0。

因此,2PSK信号的时域表达式为:式中,n表示第n 个符号的绝对相位:由于两种码元的波形相同,极性相反,故BPSK信号可以表述为一个双极性全占空矩形脉冲序列与一个正弦载波的相乘:图为 BPSK信号的波形示例5、BPSK 的解调原理:2PSK信号的解调方法是相干解调法。

由于PSK信号本身就是利用相位传递信息的,所以在接收端必须利用信号的相位信息采用相干解调法来解调信号。

经过带通滤波的信号在相乘器中与本地载波相乘,然后用低通滤波器滤除高频分量,再进行抽样判决,判决器是按极性进行判决,得到最终的二进制信息。

6、 在假定扩频码与接收信号同步的情况下, 可对接收信号进行解扩, 其解扩的过程与扩频的过程一样, 也是利用扩频码与接收信号进行相乘即可。

其原理图如下:四、仿真结果及结论20406080-101原始信息时域波形05000100000200400U1扩频后频域波形100200300400-101U1调制后的时域波形0123x 105244U1解扩后频域信息123x 105-505U1解调后的时域波形0123x 105244U1解调后的频域波形20406080-101U2原始信息时域波形05000100000200400U2扩频后频域波形100200300400-101U2调制后的时域波形0123x 10524x 104U2解扩后频域信息123x 105-10010U2解调后的时域波形0123x 10554U2解调后的频域波形20406080-101U3原始信息时域波形05000100000200400U3扩频后频域波形100200300400-101U3调制后的时域波形0123x 10524x 104U3解扩后频域信息123x 105-10010U3解调后的时域波形0123x 105244U3解调后的频域波形0.511.522.53x 105-4-2024延时、衰减后的二径数据0.511.522.53x 105-10-50510接收机收到的有燥的二径数据00.51 1.52 2.53x 105-55延时、衰减后的三径数据0.511.522.53x 105-10-50510接收机收到的有燥的三径数据00.51 1.52 2.53x 105-55延时、衰减后的四径数据0.511.522.53x 105-10-50510接收机收到的有燥的四径数据如上图,每个用户给的5000个基带数据,经过通宵的程序跑动,终于在第二天产生了结果,第一个数据是第一个用户(2径)的误码率,第二个数据是第二个用户(3径)的误码率,第三个数据是第三个用户(4径)的误码率。

由图可以看出,在信道比较好的情况下,不论是2径3径还是4径,均能达到0误码率,不过是针对于最终用户接收的数据,由于我在还原基带数据的时候,根据的是将M 序列对应的个数来将接收数据分成了N 组,每组代表一个基带数据,那么可以将这每组数据累加,并除以M 序列的个数,再来判决,那么就算是中途失真了几位也不会对基带数据的还原产生影响。

所以能够保证误码率为0或者保持在比较低的情况下。

由仿真得出,扩频通信方案可行,并且在信道比较好的情况下误码率比较低。

不过就是很占用带宽以及信号传输速度较慢。

五、总结与体会通过本次仿真试验,可以知道扩频通信是可行的,并且误码率较低,不过就是带宽占用大,速度慢。

对于民用不适合,但是对于军用却很适合。

通过它,我学会了MATLAB 的技能,还有扩频通信的详细信息,以及对扩频通信的信任。

对于误码率特别低,我很开心,如果不是累加的话,误码率应该不会是0,总体来说,还是不错。

六、主要仿真代码1、主函数:Main.mdataRate = 1;chipRate = 63*dataRate;fc = chipRate * 2;fs = 16*fc;b0 = [1,0,0,0,0,1,1];b1 = [1,1,0,0,1,1,1];b2 = [1,1,0,1,1,0,1];erro0=userOne(b0, Num2, 1, 0.1, 0, 0); erro1=userOne(b1, Num2, 1, 0.5, 0.2, 0); erro2=userOne(b2, Num2, 1, 0.5, 0.2, 0.1);2、产生63位的M序列。

createMQen.mfunction c = createMQen(b)%mQen = [-1,-1,1,-1,1,1,-1];N=length(b)-1;D=ones(1,N);A=b(N:-1:1);c=[];for i=1:2^N-1c1=rem(sum(D.*A),2);c=[c,D(N)];D=[c1,D(1:N-1)];endc=c*2-1; %变为1,-1的序列End3、扩频函数MulFourQenandMQen.mfunction mulQen = MulFourQenandMQen(fourQen, MQen)mulQen = [];hMQen = [];for i=1:length(fourQen)/63hMQen = [hMQen, MQen];endmulQen = fourQen.*hMQen;4、BPSK调制createModuQen.mfunction moduQen = createModuQen(bpsk, divQen)moduQen = [];for i=1: length(divQen)if (divQen(i) == 1)moduQen = [moduQen, bpsk];endif (divQen(i) == -1 || divQen(i) == 0)moduQen = [moduQen, -bpsk];End5、多径衰落xindaoRiLi.mfunction rcvRiLiQen = xindaoRiLi(moduQen, a1, a2, a3, a4);yanChi = 10;le = length(moduQen);r1 = abs(randn(1, le) + j*randn(1, le));r2 = abs(randn(1, le) + j*randn(1, le));r3 = abs(randn(1, le) + j*randn(1, le));r4 = abs(randn(1, le) + j*randn(1, le));r1 = r1*a1;r2 = r2*a2;r3 = r3*a3;r4 = r4*a4;p1 = moduQen.*r1;p2 = moduQen.*r2;p3 = moduQen.*r3;p4 = moduQen.*r4;if (a3 == 0)p = [p1, zeros(1,yanChi)] + [zeros(1,yanChi),p2];endif (a3 ~= 0 && a4 == 0)p = [p1, zeros(1,yanChi*2)] + [zeros(1,yanChi),p2,zeros(1,yanChi)] + [zeros(1,2*yanChi),p3];endif (a3 ~= 0 && a4 ~= 0)p = [p1, zeros(1,3*yanChi)] + [zeros(1,yanChi),p2,zeros(1,2*yanChi)] + [zeros(1,2*yanChi),p3,zeros(1,yanChi)] + [zeros(1,3*yanChi),p4];endrcvRiLiQen = p(1:le);6、解扩函数demoduDivQen.mfunction deModuQen = demoduDivQen (mQen, moduQen, bpsk)hMQen = [];moduLength = length(moduQen)/(63*16);for i=1:63if (mQen(i) == 1)hMQen = [hMQen, bpsk];endif (mQen(i) == -1)hMQen = [hMQen, -bpsk];endendhhMQen = [];for i=1:moduLengthhhMQen = [hhMQen, hMQen]; enddeModuQen = hhMQen.*moduQen;。

相关主题