目录
💥1 概述
📚2 运行结果
🎉3 参考文献
👨💻4 Matlab代码
💥1 概述
本文的目的是对直接序列扩频(DSSS)技术进行端到端仿真。这是一种将消息信号乘以伪随机序列来扩展消息带宽的技术,从而使消息信号的能量扩展到更宽的频谱,并以噪声的形式出现。直接序列扩频技术的动力来源于信道容量定理。它说,即使信噪比很低,我们也可以通过增加带宽来获得良好的通信性能。[1] DSSS增加了发射信号带宽以消除符号间干扰(ISI)和窄带干扰。它提供了传输的安全性,因为接收机必须知道伪随机序列才能获得传输的数据信号。否则,接收机无法检测到原始消息信号,只能将发送的信号视为噪声。DSSS技术的这一特性使其适用于军事通信系统。DSSS还允许多个用户使用带宽,因为每个用户将其消息信号乘以不同的伪随机序列,并且如果接收机具有发射机伪随机序列则接收机获得其消息信号。DSSS的过程如下所示。
📚2 运行结果
主函数部分代码:
clear all; %% parameters Fs = 1000; fc = 100; fp = 4; bit_t = 0.1; %% message generation with BPSK m = [0 0 1 1 1 1 0 0]; for bit = 1:length(m) if(m(bit)==0) m(bit) = -1; end end message = repmat(m,fp,1); message = reshape(message,1,[]); %% PN generation and multiply with message pn_code = randi([0,1],1,length(m)*fp); for bit = 1:length(pn_code) if(pn_code(bit)==0) pn_code(bit) = -1; end end DSSS = message.*pn_code; %% create carrier and multipy with encoded sequence t = 0:1/Fs:(bit_t-1/Fs); s0 = -1*cos(2*pi*fc*t); s1 = cos(2*pi*fc*t); carrier = []; BPSK = []; for i = 1:length(DSSS) if (DSSS(i) == 1) BPSK = [BPSK s1]; elseif (DSSS(i) == -1) BPSK = [BPSK s0]; end carrier = [carrier s1]; end %% demodulation rx =[]; for i = 1:length(pn_code) if(pn_code(i)==1) rx = [rx BPSK((((i-1)*length(t))+1):i*length(t))]; else rx = [rx (-1)*BPSK((((i-1)*length(t))+1):i*length(t))]; end end demod = rx.*carrier; result = []; for i = 1:length(m) x = length(t)*fp; cx = sum(carrier(((i-1)*x)+1:i*x).*demod(((i-1)*x)+1:i*x)); if(cx>0) result = [result 1]; else result = [result -1]; end end pn_codeWrong = randi([0,1],1,length(m)*fp); resultWrong = []; rx2 =[]; for i = 1:length(pn_code) if(pn_codeWrong(i)==1) rx2 = [rx2 BPSK((((i-1)*length(t))+1):i*length(t))]; else rx2 = [rx2 (-1)*BPSK((((i-1)*length(t))+1):i*length(t))]; end end demod2 = rx2.*carrier; for i = 1:length(m) x = length(t)*fp; cx = sum(carrier(((i-1)*x)+1:i*x).*demod2(((i-1)*x)+1:i*x)); if(cx>0) resultWrong = [resultWrong 1]; else resultWrong = [resultWrong -1]; end end message1 = repmat(result,fp,1); message1 = reshape(message1,1,[]); message2 = repmat(resultWrong,fp,1); message2 = reshape(message2,1,[]);
🎉3 参考文献
[1]石熠. 直接序列扩频通信系统的干扰研究[D].西安电子科技大学,2011.
部分理论引用网络文献,若有侵权联系博主删除。