www.pudn.com > ffh_syc.rar > ffh_syc.m


clear all 
clc 
close all 
 
Fd=20; %码元速率 20KHz 
FsFd=600; %每符号采样点数 Fs/Fd 
Fs=Fd*FsFd; %系统采样率 12MHz 
f0=20; %空号频率 "0" 20KHz 
f1=40; %传号频率 "1" 40KHz 
Fc=(f0+f1)/2; %载频 30KHz 
tone=f1-f0; %载波频率间隔 20KHz 
M=2; %进制数 
n0=20; %仿真符号数 
 
%产生20个二进制随机码 
bits=randsrc(n0,1,[0:M-1]);%产生20个二进制随机码 
%figure(1) 
%stem([0:n0-1],bits(1:n0),'bx') 
%title('二进制随机序列') 
%xlabel('Time'),ylabel('Amplitude'); 
%ylim([0 1.1]) 
 
%---------- FSK调制 --------------------- 
[s_fsk,t]=dmod(bits,Fc,Fd,Fs,'fsk',M,tone); 
td=t*Fd;  
figure(1) 
plot(td,s_fsk,'b-') 
title('调制后的信号') 
xlabel('Symbols'),ylabel('s_{FSK}') 
ylim([-1.1 1.1]) 
 
%--------- FSK调制后,低通滤波 -------------- 
cof_low=fir1(64,60/Fs); 
s_fir=filter(cof_low,1,s_fsk); 
%figure(3) 
%plot(td,s_fir) 
%title('FSK信号经过低通滤波的波形') 
%xlabel('Symbols'),ylabel('s_{FIR}') 
%ylim([-1.1 1.1]) 
 
%--------- 跳频信号产生 --------------- 
Rh=2*Fd; % 跳频速率 40000 hops/s, 2跳/符号 
hopNum=4; % 跳频点数 4 
Fh=[1000 1200 1400 1600]; % 跳频频率 KHz 
k=linspace(0,1/n0/2,1/n0/2*Fs); 
carrier1=cos(2*pi*Fh(1)*k);   % 产生扩频载波 
carrier2=cos(2*pi*Fh(2)*k); 
carrier3=cos(2*pi*Fh(3)*k); 
carrier4=cos(2*pi*Fh(4)*k); 
hop_sequence=[1 3 2 3 2 4 1 4 1 3 2 3 2 4 1 4 1 3 2 3 2 4 1 4 1 3 2 3 2 4 1 4 1 3 2 3 2 4 1 4]; %跳频序列周期为 8 
s_hop=[]; 
for i=1:2*n0 
    switch(hop_sequence(i)) 
        case(1) 
            s_mix=s_fir((FsFd/2*(i-1)+1):(FsFd/2*i)).*carrier1'; 
            cof_passband=fir1(64,[Fh(1)-30,Fh(1)+30]/Fs); 
            s_mix_fir=filter(cof_passband,1,s_mix); 
            s_hop=[s_hop s_mix']; 
        case(2) 
            s_mix=s_fir((FsFd/2*(i-1)+1):(FsFd/2*i)).*carrier2'; 
            cof_passband=fir1(64,[Fh(2)-30,Fh(2)+30]/Fs); 
            s_mix_fir=filter(cof_passband,1,s_mix); 
            s_hop=[s_hop s_mix']; 
        case(3) 
            s_mix=s_fir((FsFd/2*(i-1)+1):(FsFd/2*i)).*carrier3'; 
            cof_passband=fir1(64,[Fh(3)-30,Fh(3)+30]/Fs); 
            s_mix_fir=filter(cof_passband,1,s_mix); 
            s_hop=[s_hop s_mix']; 
        case(4) 
            s_mix=s_fir((FsFd/2*(i-1)+1):(FsFd/2*i)).*carrier4'; 
            cof_passband=fir1(64,[Fh(4)-30,Fh(4)+30]/Fs); 
            s_mix_fir=filter(cof_passband,1,s_mix); 
            s_hop=[s_hop s_mix']; 
    end 
end 
%------------- 跳频信号及频谱观察 ---------------- 
figure(2) 
plot(td,s_hop) 
title('混频器输出的跳频信号') 
xlabel('time (seconds)') 
axis([0 n0 -1.1 1.1]) 
nfft=Fs+1; 
y_signal_hop = fft(s_hop,nfft); 
p_signal_hop = y_signal_hop.* conj(y_signal_hop) / nfft; 
f = Fs*(0:nfft/2)/nfft; 
figure(3) 
plot(f,p_signal_hop(1:nfft/2+1)) 
title('混频信号的频谱') 
xlabel('frequency (Hz)') 
axis([0 3200 -inf inf]) 
 
%----------- AWGN信道模拟 ----------- 
snr=10.^8; 
s_mix=awgn(s_hop,snr,'measured'); 
figure(4)             
plot(td,s_mix) 
title('通过信道的信号') 
axis([0 n0 -1.1 1.1]) 
 
%------------ 同步捕获 ------------- 
 
 
 
 
 
%----------- 解跳 ---------------- 
spread_signal=[]; 
for i=1:2*n0 
    switch(hop_sequence(i)) 
        case(1) 
            spread_signal=[spread_signal carrier1]; 
        case(2) 
            spread_signal=[spread_signal carrier2]; 
        case(3) 
            spread_signal=[spread_signal carrier3]; 
        case(4) 
            spread_signal=[spread_signal carrier4]; 
    end 
end 
s_rcv=s_mix.*spread_signal; 
%figure(7) 
%plot(td,s_rcv) 
%title('解跳以后的信号') 
%xlabel('time (seconds)') 
%axis([0 n0 -1.1 1.1]) 
 
%%---------- 2FSK信号非相干解调 ---------------- 
z2=ddemod(s_rcv,Fc,Fd,Fs,'fsk/noncoh',M,tone)'; 
figure(5) 
stem([0:n0-1],bits(1:n0),'bx'); 
hold on; 
stem([0:n0-1],z2(1:n0),'ro'); 
hold off; 
axis([0 n0 0 1.2]); 
title('非相干解调后的信号') 
legend('原输入二进制随机序列','非相干解调后的信号') 
xlabel('Time'),ylabel('Amplitude') 
 
%----------- 误码率统计 --------------- 
%[errorSym ratioSym]=symerr(bits,z2); 
%figure(6) 
%simbasebandex([0:1:5]); 
%title('非相干解调后误码率统计')