1《扩频通信原理》课程设计报告题目:直接扩频系统仿真班级:0110910和0110911姓名:詹晓丹(2009210432)姜微(2009210503)张建华(2009210336)指导老师:李兆玉21.课程设计目的(1)了解、掌握直接扩频通信系统的组成、工作原理;(2)了解、熟悉扩频调制、解调、解扩方法,并分析其性能;(3)学习、掌握Matlab相关编程知识并用其实现仿真的直接扩频通信系统;2.课程设计实验原理直接扩频通信系统工作原理:直接序列扩频,就是直接用高码率的扩频码序列在发端去扩展信号的频谱,在收端用相同的扩频码去解扩,把展宽的扩频信号还原成原始的基带信号。在发端输入的信息与扩频码发生器产生的伪随机码序列(这里使用的是m序列)进行波形相乘,得到复合信号,实现信号频谱的展宽,展宽后的信号再调制射频载波发送出去。由于采用平衡调制可以提高系统抗侦波的能力,所以直接序列扩频调制一般都采用二相平衡调制方式。一般扩频调制时一个信息码包含一个周期的伪码,用扩频后的复合信号对载波进行二相相移监控(BPSK)调制,当gt从“0”变成“1”或从“1”变到“0”时,载波相位发生180度相移。接收端的本振信号与发射端射频载波相差一个中频,接收端收到的宽带射频信号与本振信号混频、低频滤波后得到中频信号,然后与本地产生的与发端相同并且同步的扩频码序列进行波形相乘,实现相关解扩,再经信息解调,恢复出原始信号。3.建立模型描述(1)直接扩频通信系统组成框图:(2)直接扩频通信系统波形图:34.模块功能分析(1)直扩系统的调制功能模块:(都包含模块框图和不同调制、解调方式介绍、分析)(a)扩频调制模块用扩频码发生器产生一个伪随机码pn(这里用的是m序列),与信源信息码序列xt相乘,实现频谱的展宽(b)BPSK调制模块4调制的方式可以有二相相移监控BPSK、四相相移键控QPSK、偏移四相相移监控OQPSK、最小频移监控MSK。QPSK调制的目的是节省频谱,但在扩频系统中有时候带宽的利用并不是最重要的;OQPSK的优点就是调制信号的相位改变没有倒π现象;MSK调制信号时可以避免相位突变,由于以上调制方式实现比较复杂,所以我们选用扩频系统中最常用的BPSK调制方式。(2)直扩系统的解调功能模块:(a)BPSK解调模块在常规数字通信中,解调可以用锁相环解调器、平方环解调器、科斯塔斯环解调器。在直扩系统中,一般扩频调制方式是用抑制载波双平衡调制来产生BPSK信号的,而对于BPSK信号,不管是绝对相移还是差分相移。其载波分量都被抑制了几十分贝,并且直扩信号谱密度都很低,而大气噪声及接收机内部噪声又很大,有用信号常淹没在噪声中,所以用一般的锁相环难以提取载波。而平方环虽然便于载波提取,但环路工作在二倍频后的频率上,工作频率高,环路稳定性较差。我们选用的是科斯塔斯环,因为它的突出优点是能够解调移相键控信号和抑制了载波的信号,且环路的工作频率与输入信号载波频率完全相同。(b)扩频解调模块解扩方式有相关解扩、直接式相关器解扩、外差式相关器解扩、序列匹配滤波器解扩。5直接式相关器的优点是结构简单,缺点是对干扰信号有直通和码速率泄露现象外差式相关器的抗干扰能力较低;由于相关解扩在性能上很好,在接收端产生的本地pn’码,可以用科斯塔斯环实现与发端的pn码精确的同步。5.模块源代码及调试过程(1)直扩系统的调制模块(a)信息码生成模块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([016000-1.51.5]);title('信源信息码序列');gridon;生成信息码的波形图(b)伪随机码生成模块functiony=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;fork=1:Ny(k)=curState(M-1);a=rem(sum(gen(2:end).*curState),2);curState=[acurState(1:M-2)];6endx_code=sign(y-0.5);pn=rectpulse(x_code,8);%每个伪码元内采样8个点plot(pn);axis([0600-1.51.5]);title('伪随机码序列');gridon;生成伪随机码的波形图(c)扩频调制模块gt=x1.*pn;plot(gt);axis([01000-1.51.5]);title('复合码序列');gridon;生成的复合码波形图7(d)BPSK调制模块%用BPSK调制fs=20e6;f0=30e6;fori=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).*cIendplot(x_bpsk);axis([0200-2.52.5]);title('BPSK调制后的波形');gridon;生成BPSK调制后的波形图(2)加噪模块sigma=0.1;nt=sigma*randn(1,20);nt1=rectpulse(nt,800);gt1=gt+nt1;fs=20e6;f0=30e6;fori=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).*cIendplot(x_bpsk1);axis([0200-2.52.5]);8title('加噪后已调波的波形');gridon;生成加噪后已调波的波形图(3)直扩系统的解调模块(a)BPSK解调模块AI=1;dt=fs/f0;n=0:dt/7:dt;%一个载波周期内采样八个点cI=AI*cos(2*pi*f0*n/fs);fori=1:2000s((1+(i-1)*8):i*8)=x_bpsk1((1+(i-1)*8):i*8).*cI;endplot(s);axis([0200-2.52.5]);title('解调后的波形');gridon;生成BPSK解调后的波形图9(b)解扩模块%相关解扩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([016000-1.51.5]);title('解扩并滤波后的波形');gridon;生成解扩后的波形图6.调试分析及结论(1)调试分析(a)信源信息码与收端恢复出的波形的比较10(b)频谱分析(2)调制过程中出现的问题及解决方式:1)在调试程序中出现“undefinedfunctionorvariable‘mgen’”,后来检测是子函数调用格式出现错误,经改正后得以修改;2)复合码产生程序中,出现“vectormustbethesamelengths”,后检测得出原因是信息码和伪随机码长度不相同时不能直接相乘;3)由于所加噪声为高斯白噪声,是用randn函数产生的,具有随机性,所以不同时刻加噪了的已调波具有不同波形;11(3)结论通过调试分析及研究,我们发现直扩系统具有较多的特点,将其运用于通信系统能发挥其很大的优势。首先,直扩系统具有很高的处理增益,因此直扩系统具有抗宽带干扰、抗多频干扰及单频干扰的能力;其次,直扩信号的功率谱密度低,具有隐蔽性和低的截获概率,从而抗截获的能力强,另外功率污染少;第三,直扩伪随机序列的伪随机性和密钥量具有保密性,即系统本身具有加密的能力;第四,利用直扩伪随机序列码型的正交性,可构成直扩码分多址系统;第五,利用直扩信号的相关接收,具有抗多径干扰的能力;第六,利用直扩信号可实现精确的测距定位。7.心得体会通过这次直接扩频系统的仿真实验,我们加深了对扩频理论知识的理解。懂得了直接扩频系统的原理所在,并且经过分析,自己应用MATLAB实现了直接扩频系统的仿真,掌握了一定的软件仿真能力。通过频谱分析,更使我们了解到了直接扩频的抗干扰性能。在实践过程中,我们小组也遇到了一些问题,但是我们通过讨论以及查阅资料,解决了难题。同时,也激发了我们对扩频这门课程学习的积极性。在此次直接扩频系统的仿真实验中,我们收获颇丰,记忆深刻,并全面培养了我们的能力。8.参考文献刘焕淋.扩展频谱通信[M].北京:北京邮电大学出版社,2008田日才.扩频通信[M].北京:清华大学出版社,2007曾一凡,李晖.扩频通信原理[M].北京:机械工业出版社,200512附件一:程序源代码functiony=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;fork=1:Ny(k)=curState(M-1);a=rem(sum(gen(2:end).*curState),2);curState=[acurState(1:M-2)];endx_code=sign(y-0.5);pn=rectpulse(x_code,8);%每个伪码元内采样8个点plot(pn);axis([0600-1.51.5]);title('伪随机码序列');gridon;figure(2)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([016000-1.51.5]);title('信源信息码序列');gridon;figure(3)gt=x1.*pn;plot(gt);axis([01000-1.51.5]);title('复合码序列');gridon;figure(4);%用BPSK调制fs=20e6;13f0=30e6;fori=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).*cIendplot(x_bpsk);axis([0200-2.52.5]);title('BPSK调制后的波形');gridon;figure(5)sigma=0.1;nt=sigma*randn(1,20);nt1=rectpulse(nt,800);gt1=gt+nt1;fs=20e6;f0=30e6;fori=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).*cIendplot(x_bpsk1);axis([0200-2.52.5]);title('加噪后已调波的波形');grido