中北大学分校学士学位论文
信源部分:用户把要传输的信息给定,用户输入的信息0101101。
调制部分:采用的是BPSK调制,数据进行调制然后输送出其调制之后的波形。调制后的传输信道选用的是高斯白噪声信道,信噪比可任意设定,在本次仿真中信噪比设定为20。
扩频部分:数据要进行扩频处理。这里选用的是利用PN码与输入的信号进行扩频,扩频后等待送入信道。PN码的产生是由一个PN码发生器来完成的。PN码发生器如图5-22所示。
在信道的接收端进行的过程和输入端刚好是相反的。
首先进行解调,也是选择BPSK的解调。
D1 初始值1 D2 D3 D4 0 1 0 图5-22 PN码发生器
然后是解扩,解扩时使用的PN码和扩频时使用的一致。这样才能保证解扩出相应的信息。 整个仿真过程共设置了八个波形观测设备,运行后可以从这八个波形图中较直观的看到DS-CDMA系统的每一个调制过程。
在两个用户的信息中我们给定的是0和1的信息,为了在调制和扩频中容易计算,将数据中的0用-1来代替。在程序中,每一个过程都用%来注明,程序可以直接复制到M文件编辑框,在图5-1 的MATLAB的默认界面的Commond Window窗口中输入
》dscdmamodem
点击“Enter”键,即可仿真出结果。 DS-CD的MAMATLAB源程序如下:
function dscdmamodem(user,snr_in_dbs) %建立模型:用户信息,snr_in_dbs为信噪比 %设置初始参数
user=[0 1 0 1 1 0 1] ; close all
%定义步长变量%
length_user=length(user); %改变用户数据中的0为-1 for i=1:length_user if user(i)==0 user(i)=-1; end
33
中北大学分校学士学位论文
end
% 用户传输前设置 fc=3; % 载频
eb=2; % 每个字符的能量
tb=1; % 每个信息比特所占的时间
%用户输入的数据信息
t=0.01:0.01:tb*length_user; basebandsig=[];
for i=1:length_user
for j=0.01:0.01:tb if user(i)==1
basebandsig=[basebandsig 1]; else
basebandsig=[basebandsig -1]; end end end figure
plot(basebandsig)
axis([0 100*length_user -1.5 1.5]); title('用户输入的信息')
% 用户的BPSK调制过程 bpskmod=[];
for i=1:length_user for j=0.01:0.01:tb
bpskmod=[bpskmod sqrt(2*eb)*user(i)*cos(2*pi*fc*j)]; end end
length(bpskmod)
%用户BPSK调制后的波形图输出 figure
plot(bpskmod)
axis([0 100*length_user -3 3]);
title(' 用户经BPSK调制之后的波形 ') % 扩频
%PN码发生器
seed=[1 -1 1 -1]; % 设PN码初始值为1000
34
中北大学分校学士学位论文
spreadspectrum=[]; pn=[];
for i=1:length_user
for j=1:10 %PN码和数据比特码的比率设为10:1 pn=[pn seed(4)];
if seed (4)==seed(3) temp=-1; else temp=1; end
seed(4)=seed(3); seed(3)=seed(2); seed(2)=seed(1);
seed(1)=temp; end
spreadspectrum=[spreadspectrum user(i)*pn]; end
%扩频过程
pnupsampled=[]; len_pn=length(pn); for i=1:len_pn
for j=0.1:0.1:tb if pn(i)==1
pnupsampled=[pnupsampled 1]; else
pnupsampled=[pnupsampled -1]; end end end
length_pnupsampled=length(pnupsampled); sigtx=bpskmod.*pnupsampled; %扩频码波形输出 figure
plot(pnupsampled)
axis([0 100*length_user -2 2]) title(' PN码波形图 ') %扩频后的波形图输出 figure
plot(sigtx)
axis([0 100*length_user -3 3]); title(' 用PN码扩频后的波形图 ')
35
中北大学分校学士学位论文
composite_signal=sigtx; %高斯白噪声信道传输
snr_in_dbs=20 %设信噪比为20
composite_signal=awgn(composite_signal,snr_in_dbs);
%从信道中解扩出用户的信息
rx=composite_signal.*pnupsampled; figure plot(rx)
title('用户解扩后的波形')
% BPSK解调过程 demodcar=[];
for i=1:length_user for j=0.01:0.01:tb
demodcar=[demodcar sqrt(2*eb)*cos(2*pi*fc*j)]; end end
bpskdemod=rx.*demodcar; figure
plot(bpskdemod)
title('用户经BPSK解调之后的波形') len_dmod=length(bpskdemod); sum=zeros(1,len_dmod/100); for i=1:len_dmod/100
for j=(i-1)*100+1:i*100
sum(i)=sum(i)+bpskdemod(j); end end
%检波过程
rxbits=[];
for i=1:length_user if sum(i)>0
rxbits=[rxbits 1]; else
rxbits=[rxbits 0]; end end
length_rxbits=length(rxbits);
36
中北大学分校学士学位论文
t=0.01:0.01:tb*length_rxbits; savbandsig=[];
for i=1:length_rxbits for j=0.01:0.01:tb
if user(i)==1
savbandsig=[savbandsig 1]; else
savbandsig=[savbandsig -1]; end end
end figure
plot(savbandsig)
axis([0 100*length_user -2 2]); title('用户经检波之后的波形 ’)
仿真波形的输出如下:
37