1.算法描述
联合战术信息分配系统(JTIDS)(Joint Tactical Information Distribution System)具有通信、导航和识别的综合功能,可供海、陆、空三军使用,具有海洋、空中和陆地作战中的互操作性,是一种大容量、抗干扰的数字式信息分配系统。1976年开始研制该系统,1980年开始生产1A级终端,1985年海军计划在其战斗机F/A-18S上使用海军专用JTIDS终端,1991年海湾战争中,美国海军和空军首次全面使用了JTIDS。在1990-2010年期间,JTIDS联合业务将成为美国和盟国作战部队中的战术视距数字通信的基本方法。按照海军战术数据链路计划,80年代使用的数据链路是Linkll、Link4A、Link4C,90年代开始使用Linkl6(即JTIDS),并逐渐加大其数量,大约在2005年,将取消Link4A和Link4C。
JTIDS是大容量时分多址(TDMA)系统,采用跳频技术,具有抗干扰能力。该系统提供机载平台和水面舰船平台的ECCM能力和扩大的通信范围,还提供带有机载中继平台的水面舰船之间的视距通信。JTIDS系统适应于和Linkl4、Link4A,以及Linkll相结合的数字信息通信和保密话通信。其波形由在960MHz到1215MHz频带内的6.4us脉冲系列组成。
JTIDS系统体现了许多高新技术,系统采用的新技术有:时分多址、直接序列扩频、跳频、同步密钥、级联纠错编码、相关检测、动态网管理技术等,该系统实现了突发频率和传输信息离散化、随机化,使发射电波密度降低很多,信号近似随机噪声,因而提高了系统的保密性和抗干扰性。JTIDS具有用户多、容量大、反应速度快、机动性能好、抗干扰能力强、保密性能好、可靠性高、一机多用、顽存性及使用灵活等特点。它除能在美国各军种之间互通外,还能在美军与北约盟军之间互通。该系统与单功能系统相比,其生产和维护费用可以节省三分之一到二分之一。该系统在C3I系统中起着重要作用。
JTIDS链路如下所示:
JTIDS系统体现了许多高新技术,系统采用的新技术有:时分多址、直接序列扩频、跳频、同步密钥、级联纠错编码、相关检测、动态网管理技术等,该系统实现了突发频率和传输信息离散化、随机化,使发射电波密度降低很多,信号近似随机噪声,因而提高了系统的保密性和抗干扰性。JTIDS具有用户多、容量大、反应速度快、机动性能好、抗干扰能力强、保密性能好、可靠性高、一机多用、顽存性及使用灵活等特点。它除能在美国各军种之间互通外,还能在美军与北约盟军之间互通。该系统与单功能系统相比,其生产和维护费用可以节省三分之一到二分之一。该系统在C3I系统中起着重要作用。
本课题采用的JTIDS系统,包括RS编码,ccsk扩频,MSK调制。
2.仿真效果预览
matlab2022a仿真结果如下:
3.MATLAB核心程序
Num = 1;
Lens = 10000;
%rs(31,15)
Rs_N = 31;
Rs_K = 15;
SNRs = [-10:0.5:0];
ERR1 = zeros(1,length(SNRs));
ERR2 = zeros(1,length(SNRs));
ERR3 = zeros(1,length(SNRs));
codek = [0 1 1 1 1 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 1 1 0 0]';
for ii=1:length(SNRs)
ii
Signals = randint(Lens,Num);
%%
%RS
[Signal_Rs,RSc,Fillwords] = func_RS_code(Signals,Rs_N,Rs_K,Num);
%CCSK
Signal_ccsk = func_ccsk(Signal_Rs,codek,Num);
%MSK
y = mskmod(Signal_ccsk,4,[],pi/2*ones(1,Num));
y = awgn(y,SNRs(ii),'measured');
z = mskdemod(y,4,[],pi/2*ones(1,Num));
%解CCSK
Signal_dccsk = func_ccsk_decode(z,codek);
%RS译码
decoder = fec.rsdec(RSc);
[decoded,cnumerr,ccode] = decode(decoder,Signal_dccsk);
decoded = decoded(1:end-Fillwords,:);
%计算误码率
ERR1(ii) = length(find(decoded~=Signals))/Lens;
%%
%单独MSK
y = mskmod(Signals,4,[],pi/2*ones(1,Num));
y = awgn(y,SNRs(ii),'measured');
z = mskdemod(y,4,[],pi/2*ones(1,Num));
ERR2(ii) = length(find(z~=Signals))/Lens;
%%
Signal_Rs = round(31*[rand(1,20677)]');
%CCSK
Signal_ccsk = func_ccsk(Signal_Rs,codek,Num);
%MSK
y = mskmod(Signal_ccsk,4,[],pi/2*ones(1,Num));
y = awgn(y,SNRs(ii),'measured');
z = mskdemod(y,4,[],pi/2*ones(1,Num));
%解CCSK
Signal_dccsk = func_ccsk_decode(z,codek);
%计算误码率
ERR3(ii) = length(find(Signal_dccsk~=Signal_Rs))/Lens;
end