一、背景
扩频通信就是通过增加带宽来换取较低的信噪比,这就是扩频通信的基本思想和理论依据。当信噪比无法提高时,可以加大带宽,达到提高信道容量的目的。扩频是一种宽带技术,由于扩频占用更宽的频带,看起来是浪费有限的频率资源,然而所占用的频带可以通过多用户共享频带得到补偿。
二、系统组成
在发射端把有用信号与伪随机序列相乘(或者模二加),使信号的频谱展宽到一个很宽的范围,然后用扩展后的序列去调制载波。在接收端,把接收到的信号用相同的伪随机序列相乘,有用信号与伪随机码相关,相乘后恢复为扩频前的信号。直接序列扩频系统的组成原理框图如图所示。
三、代码实现
clear
clc
r=round(rand(1,5000)); %产生5000个随机码元
r=2*r-1; %码序列变为双极性
SNR=-10:1:10; % 信噪比
L=length(r);for m=1:1:5 %扩频增益的类型a=repmat(r,1,m);b=(reshape(a,L,m))';x=reshape(b,1,L*m);len=length(x);x_code=sign(mgen(19,11,len)-0.5);msout=x.* x_code; % 已扩频信号%信道噪声for SNR1=1:21Eb = 1;N0= Eb/(10^((SNR1-11)/10));sig=msout+sqrt(N0)*randn(size(msout));for i=1:LA=randi([1,3],1,1);for g=1:mt=(i-1)*m+g;sig(t)=sig(t)+A*sin(t);endendmsint=sig.* x_code; %开始解扩Err=0;for j=1:Ly=0;for pp=1:my=y+msint(m*j+pp-m);endz=y/m; %解扩得到用户信码if z>0z=1;elsez=-1;endif z~=r(j) %用户错误计数Err=Err+1;endendBER(m,SNR1)=Err/L ; % 误码率实际值endsemilogy(SNR,BER(m,:));hold on
end
title('扩频增益与误码率关系曲线')
xlabel('信噪比/dB')
ylabel('误码率')
grid on
legend('Gain=1','Gain=2','Gain=3','Gain=4','Gain=5')function[out]=mgen(g,state,N)
gen=dec2bin(g)-48;
M=length(gen);
curState=dec2bin(state,M-1)-48;
for k=1:Nout(k)=curState(M-1);a=rem(sum(gen(2:end).*curState),2);curState=[a curState(1:M-2)];
end
end
在相同扩频增益的条件下,系统的误码率随着系统信噪比的增加呈现出对数形状的减小;在相同信噪比的情况下,系统的误码率随着系统扩频增益的增大呈现出直线型的下降,即系统的误码率与系统的扩频增益和信噪比呈负相关,当系统的扩频增益足够大时,系统的误码率可以达到0。
最后:
如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!