基于MATLAB的扩频通信仿真 下载本文

内容发布更新时间 : 2024/6/11 3:55:58星期一 下面是文章的全部内容请认真阅读。

电气信息学院 通信工程专业 课程设计报告

2.5 最小相移键控解调 (M-PSK Demodulator Passband) 对解扩后的信号进行解调,恢复基带信号。

2.6 误码率分析仪(Error Rate Calculation)

在误码率计算中,接收到的信号,由于经过扩频解扩、调制解调、相关统计等处理,会存在一个延迟,在误码仪模块的对话框中要设置一个合适的延迟。

6

电气信息学院 通信工程专业 课程设计报告

2.7 其他设置

2.7.1 RELAY 的设置

2.7.1 product的设置

7

电气信息学院 通信工程专业 课程设计报告

2.7.3 display 的设置

2.7.4 频谱分析仪(spectrum scope)的设置

系统中有四个频谱分析仪器,分别命名为:baseband、mod、SS和DSS。其中,baseband能观察基带信号的频谱;mod能观察到基带信号调制到频带后的频谱;SS能观察扩频后的频谱;DSS能观察解扩解调后的接受端输出信号的频谱。这四个频谱分析仪的参数设置大致一致,其前方的零阶保持器的采样时间略有不同。

频谱分析仪名称 采样时间(s)

Baseband 0.001 Mod 1/30000 SS 0.001/31 DSS 0.001 8

电气信息学院 通信工程专业 课程设计报告

3. M文件编写仿真程序

用m文件编写的MATLBA程序来实现观察系统在不同信噪比下的误码率变化情况。此仿真要实现扩频码的产生、发射机部分、接收机部分、信道仿真部分以及误码分析部分,此外还有进行循环仿真以达到绘出信噪比与误码率见的函数图。 3.1 扩频码的产生

选取m序列作为仿真系统的扩频码,产生函数如下:

function [mout] = mseq(stg, taps, inidata, n) %变量含义说明 % stg m序列阶数 % taps 线性移位寄存器的系数 % inidata 序列的初始化 % n 输出序列的数目 % mout 输出的m序列 if nargin < 4 n = 1; end mout = zeros(n,2^stg-1); fpos = zeros(stg,1); fpos(taps) = 1; for ii=1:2^stg-1 mout(1,ii) = inidata(stg); % 输出数据的存储 num = mod(inidata*fpos,2); % 反馈数据的计算 inidata(2:stg) = inidata(1:stg-1); % 线形移位寄存器的一次移位 inidata(1) = num; % 返回反馈值 end if n > 1 for ii=2:n mout(ii,:) = shift(mout(ii-1,:),1,0); end end 9

电气信息学院 通信工程专业 课程设计报告

3.2 发射机部分

发射机部分包括扩频和调制两部分。 3.2.1 QPSK调制部分

此处采用QPSK调制,相比SIMULINK的M-PSK调制的实现要求要低一些。 function [iout,qout]=qpskmod(paradata,para,nd,ml) %各变量含义说明 % paradata 输入数据 % iout 输出的实部数据 % qout 输出的虚部数据 % para 并行信道数 % nd 输入数据个数 % ml 调制阶数 m2=ml./2; paradata2=paradata.*2-1; count2=0; for jj=1:nd isi = zeros(para,1); isq = zeros(para,1); for ii = 1 : m2 isi = isi + 2.^( m2 - ii ) .* paradata2((1:para),ii+count2); isq = isq + 2.^( m2 - ii ) .* paradata2((1:para),m2+ii+count2); end iout((1:para),jj)=isi; qout((1:para),jj)=isq; count2=count2+ml; end 3.2.2 扩频部分

function [iout, qout] = spread(idata, qdata, code1) %变量含义说明 % idata 输入序列实部 % qdata 输入序列虚部 % iout 输出序列实部 % qout 输出序列虚部 % code1 扩频码序列 switch nargin case { 0 , 1 } error('lack of input argument'); case 2 code1 = qdata; qdata = idata; end [hn,vn] = size(idata); 10