⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ffh_syc.m

📁 对整个跳频系统进行了仿真
💻 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('非相干解调后误码率统计')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -