www.pudn.com > Spread.zip > DSSS.m


% THIS DEMONSTRATION IS MEANT FOR DIRECT SEQUENE SPREAD SPRECTRUM 
% COMMUNICATION USING CHAOTIC SEQUENCE AS SPREADING CODES FOR BPSK  
% SIGNAL.NOTE HERE FILTER TAKEN IS JUST FOR SAKE OF SHOWING THE EFFECT  
% OF FILTERING ON RECEIVED SIGNAL (APPROPRIATE FILTERS SHOULD BE USED). 
 
clc; close all; clear all; 
 
R = input('TYPE THE FIRST WORD default(MANPAL REDDY) :', 's'); 
 
M = isempty(R); 
 
if M == 1 
   R = 'MANIPAL REDDY'; 
else     
   R = R;      
end    
     
%TRANSMITTER SECTION OF THE DSSS COMMUNICATION SYSTEM. 
RR = double(R);  bb = 1;  Rp = dec2bin(RR,8); 
[TA TC] = size(Rp); 
 
for  ll = 1:1:TA 
  for  lg = 1:1:TC       
      msg(bb) =  Rp(ll,lg);               
      bb = bb + 1; 
  end     
end 
 
msg = msg;                     %RANDOM MESSAGE TO BE TRANSMITTED 
T = 0:(2*pi/239):(2*pi);  
car = cos(T);                  %CARRIER TO BE TRANSMITTED 
Full_msg = []; Carrier = []; 
%-------------------------------------------------------------------------- 
% BERNOULLI MAP 
%-------------------------------------------------------------------------- 
B = 1.75; A = .5; phin = 0.25; phi(1) = (B*phin) - A; 
for ii = 2:1:1000         
if phi(ii-1) > 0         
phi(ii) = (B*phi(ii-1)) - A;             
else       
phi(ii) = (B*phi(ii-1)) + A;         
end 
end 
for tt = 1:1:length(phi)-2     
    XX(tt) =  phi(tt+2); 
    YY(tt) =  phi(tt+1); 
    ZZ(tt) =  phi(tt);     
end   
Acf = xcorr(phi,phi); % Auto Correlation calculation 
%-------------------------------------------------------------------------- 
% LOGISTIC MAP 
%-------------------------------------------------------------------------- 
A1 = .5; B1 = 4; phin1 = -0.35; 
phi1(1) = ( B1*[(A1^2) - (phin1^2)] ) - A1; 
for ih = 2:1:1000 
  phi1(ih) = ( B1*[(A1^2) - (phi1(ih-1)^2)] ) - A1;   
end 
for tt = 1:1:length(phi1)-2     
    XX1(tt) =  phi1(tt+2); 
    YY1(tt) =  phi1(tt+1); 
    ZZ1(tt) =  phi1(tt);     
end   
Acf1 = xcorr(phi1,phi1); % Auto Correlation calculation 
%------------------------------------------------------------------------- 
% QUADRATIC MAP 
%------------------------------------------------------------------------- 
A2 = 4; B2 = .5; phin2 = 0.15; 
phi2(1) = B2 - A2*(phin2^2); 
for ib = 2:1:1000 
phi2(ib) = B2- (A2*(phi2(ib-1).^2));     
end 
for tt = 1:1:length(phi2)-2     
    XX2(tt) =  phi1(tt+2); 
    YY2(tt) =  phi1(tt+1); 
    ZZ2(tt) =  phi1(tt);     
end   
Acf2 = xcorr(phi2,phi2); % Auto Correlation calculation 
%------------------------------------------------------------------------- 
%TENT MAP 
%------------------------------------------------------------------------- 
A3 = .5; B3 = 1.99; phin3 = .5; 
phi3(1) = A3 - (B3*phin3); 
for it = 2:1:1000     
 phi3(it) = A3 - (B3*abs(phi3(it-1)));    
end 
for tt = 1:1:length(phi3)-2     
    XX3(tt) =  phi3(tt+2); 
    YY3(tt) =  phi3(tt+1); 
    ZZ3(tt) =  phi3(tt);     
end   
Acf3 = xcorr(phi3,phi3); % Auto Correlation calculation 
%------------------------------------------------------------------------- 
ccf01 = xcorr(phi,phi1); ccf12 = xcorr(phi1,phi2); ccf23 = xcorr(phi2,phi3); ccf30 = xcorr(phi3,phi1); 
%------------------------------------------------------------------------- 
for ii = 1:1:length(msg)       
         if msg(ii) == '0'     
              Msge = -1*ones(1,240); 
         else 
              Msge =  1*ones(1,240); 
         end 
             Full_msg = [Full_msg Msge]; 
             Carrier  = [Carrier car]; 
end 
 
% BPSK SIGNAL TO BE TRANSMITTED. 
BPSK_SIG = Carrier.*Full_msg; 
 
% SPREADING SIGNAL BENOULLI SEQUENCE MULTIPLICATION WITH BPSK SIGNALS 
BA = 1.75; AA = .5; phinA = 0.25; 
phiA(1) = (BA*phinA) - AA; 
for ii = 2:1:length(BPSK_SIG)        
if phiA(ii-1) > 0         
phiA(ii) = (BA*phiA(ii-1)) - AA;             
else       
phiA(ii) = (BA*phiA(ii-1)) + AA;         
end 
end 
 
% SPREADING SEQUENCE MULTIPLED BY BPSK SIGNAL. 
SPRD_SG = (phiA.*BPSK_SIG); 
 
% UNIFORMLY DISTRIBUTED NOISE ADDED TO SPREAD SIGNAL. ( AFter CHannel SIGnal ) 
AFCH_SIG = 1*SPRD_SG + (rand(1,length(SPRD_SG)))/200; 
 
% DESPREADED SIGNAL AT THE RECEIVER SECTION.(IN CONVENTIONAL DIRECT SEQUENCE SPECTRUM SYSTEM THE CHIP SEQUENCE IS TO BE USED FOR 
% DIVISION, SINCE THESE ARE -1 AND 1,AT THE RECEIVER THEIR INVERSE IS MULTIPLED THAT IS 1/-1 WHICH IS ANYWAY -1 AND 1/1 WHICH IS 1  
% SO WHAT YOU MULTPIPLY AT TRANSMITER SECTION IS THE SAME THING YOU MULTIPLY AT RECEIVER SECTION,SO HERE YOU CAN INTERPRET WHY I  
% DIVIDED SPREAD SIGNAL BY SEQUENCE).(multiplication of chip sequence needs an envelope detector at RECEIVER SECTION). 
DSPD_SG = AFCH_SIG./(phiA); 
 
% FILTERING THE SPIKES USING FILTER AT RECEIVER SECTION. 
data = DSPD_SG;  windowSize = 15; 
AFFILSG = filter(ones(1,windowSize)/windowSize,1,data); 
 
% PSD TO BE CALCULATED. 
FFT_DAT = fft(msg);        FFT_car = fft(Carrier);   FFT_BP  = fft(BPSK_SIG);   FFT_SP  = fft(SPRD_SG); 
FFT_ACS = fft(AFCH_SIG);   FFT_DSP = fft(DSPD_SG);   FFT_AFS = fft(AFFILSG); 
 
% USING CARRIER TO RETRIEVE SENT BINARY INFORMATION. 
MMDK = (AFFILSG./Carrier); 
 
% FILTERING THE SPIKES USING FILTER AT RECEIVER SECTION. 
dataT = MMDK;  windowSize = 120; 
RTDT = filter(ones(1,windowSize)/windowSize,1,dataT); 
 
% Time calculation. 
Time = 0; 
for te = 2:1:length(Carrier) 
    Time(te) =  Time(te-1) + 1;    
end 
 
figure(1); 
subplot(511);     plot(Full_msg);   title('\bf message');   axis([0 length(Carrier) -2 2]);         
subplot(512);     plot(Carrier);    title('\bf Carrier to be used for ');         axis([0 length(Carrier) -2 2]);  
subplot(513);     plot(BPSK_SIG);   title('\bf BPSK SIGNAL TO BE TRANSMITTED');   axis([0 length(Carrier) -2 2]); 
subplot(514);     plot(SPRD_SG);    title('\bf SPREAD SIGNAL');                     
subplot(515);     plot(Time,Full_msg,'b',Time,Carrier,'r');      title('\bf COMPARISON'); axis([0 length(Carrier) -2 2]); 
  
figure(2); 
subplot(431);     plot(phi);        title('\bf Time series');  ylabel('\bf BERNOULLI');   subplot(432);  plot(Acf,'r');  title('\bf ACF');  subplot(433);     plot(ccf01,'g'); title('\bf CCF'); 
subplot(434);     plot(phi1);       ylabel('\bf LOGISTIC ');   subplot(435);     plot(Acf1,'r');     subplot(436);     plot(ccf12,'g'); 
subplot(437);     plot(phi2);       ylabel('\bf QUADRATIC'):   subplot(438);     plot(Acf2,'r');     subplot(439);     plot(ccf23,'g'); 
subplot(4,3,10);  plot(phi3);       ylabel('\bf TENT');        subplot(4,3,11);  plot(Acf3,'r');     subplot(4,3,12);  plot(ccf30,'g'); 
 
figure(3); 
subplot(421);     plot3(ZZ,YY,XX,'k.');      title('\bf Pseudo phase space trajectories');   zlabel('\bf BERNOULLI'); grid on; 
subplot(422);     plot(ZZ,YY,'r.');          title('\bf Mapping');   xlabel('X(n)');    ylabel('X(n+1)'); 
subplot(423);     plot3(ZZ1,YY1,XX1,'k.');   zlabel('\bf LOGISTIC'); grid on;    xlabel('\bf X(n)');   ylabel('\bf X(n+1)'); zlabel('\bf X(n+2)'); 
subplot(424);     plot(ZZ1,YY1,'r.');        xlabel('X(n)');    ylabel('X(n+1)'); 
subplot(425);     plot3(ZZ2,YY2,XX2,'k.');   zlabel('\bf QUADRATIC'); grid on;  xlabel('\bf X(n)');    ylabel('\bf X(n+1)'); zlabel('\bf X(n+2)'); 
subplot(426);     plot(ZZ2,YY2,'r.');        xlabel('X(n)');    ylabel('X(n+1)'); 
subplot(427);     plot3(ZZ3,YY3,XX3,'k.');   zlabel('\bf TENT'); grid on;        xlabel('\bf X(n)');   ylabel('\bf X(n+1)'); zlabel('\bf X(n+2)'); 
subplot(428);     plot(ZZ3,YY3,'r.');        xlabel('X(n)');    ylabel('X(n+1)'); 
 
figure(4); 
subplot(411);     plot(abs(FFT_DAT));   title('\bf PSD of message');           
subplot(412);     plot(abs(FFT_car));   title('\bf PSD of Carrier');    
subplot(413);     plot(abs(FFT_BP));    title('\bf PSD of BPSK SIGNAL');   
subplot(414);     plot(abs(FFT_SP));    title('\bf PSD of SPREAD SIGNAL');  
 
figure(5); 
subplot(411);     plot(DSPD_SG);  title('SENT BPSK SIGNAL \it \bf WATCH CLOSELY PLEASE');   
subplot(412);     plot(AFFILSG);  title('\bf AFTER FILTERING'); 
subplot(413);     plot(DSPD_SG);  axis([0 length(DSPD_SG) -2 2]);  title('\bf BEFORE FILTERING');   
subplot(414);     plot(AFFILSG);  axis([0 length(AFFILSG) -2 2]);  title('\bf AFTER FILTERING');  
 
figure(6);     
subplot(311);     plot(abs(FFT_ACS));   title('\bf PSD OF SIGNAL AFTER RECEPTION'); 
subplot(312);     plot(abs(FFT_DSP));   title('\bf PSD OF SIGNAL AFTER DESPREAD AT TRANSMITTER'); 
subplot(313);     plot(abs(FFT_AFS));   title('\bf PSD OF SIGNAL AFTER FILTERING'); 
 
figure(7);  
subplot(311);     plot(Full_msg);     title('\bf \it ORIGINAL  MESSAGE'); axis([0 length(Full_msg) -2 2]); 
subplot(312);     plot(MMDK);         title('\bf \it RETRIEVED MESSAGE'); axis([0 length(Full_msg) -22 22]); 
subplot(313);     plot(RTDT);         title('\bf \it FILTERED  MESSAGE'); axis([0 length(Full_msg) -2 2 ]);