%2017-10-28 周六
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 本文件生成一个完整的DS-FH发端系统:并且将其与通信系统的参数对应起来
% BPSK映射;
% 跳频频点数目为1023,中频频率为900MHz,跳频间隔100KHz,跳频速率R_fhop=100Khop/s;
% 信息速率为R_bit=10Kbps,相当于1bit数据的载波频率跳变10次;
% 仿真时间为1ms,相当于只取10bit数据
% 已经调试通过
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;
clc;
N_carrier = 1023;
%% 跳频频点设计
for i=1:N_carrier
f_hop(i)=900e6+100e3*i; %跳频载波频率
end
%% 参数设置
% fs=4*f_hop(N_carrier); %采样频率,至少大于2倍的最大载波频率
fs=102.3e6;f_BPSK=100e3; %BPSK映射使用的载波频率
R_bit=10e3; %基带bit速率为10Kbps
tend=20e-3;%取0.001s时间的信号,对应1bit
tstart=0;
t=tstart:tend;
n = tstart:1/fs:tend-1/fs;%离散样点n
% n_perbit = tstart:1/fs:tend/Nbit-1/fs; %每个bit的离散样点序列
% Nsample_perBit = length(n_perbit);
%% 产生bit数据
Nbit = R_bit*(tend-tstart);
n_perbit = tstart:1/fs:tend/Nbit-1/fs; %每个bit的离散样点序列
Nsample_perBit = length(n_perbit); %每个bit的采样点数
bits=round(rand(1,Nbit)); % Generating 20 bits,round四舍五入
%% 用fs对每个bit数据进行采样
signal=[]; %存放采样后的bit数据
f_BPSK=1e3; %BPSK映射使用的载波频率
BPSKcarrier=[]; %存放采样后的BPSK载波数据
for k=1:Nbit
if bits(1,k)==0
sig=-ones(1,Nsample_perBit); % Nsample个-1for bit 0
else
sig=ones(1,Nsample_perBit); % Nsample个1 for bit 1
end
c_BPSK=cos(2*pi*f_BPSK*n_perbit);
BPSKcarrier=[BPSKcarrier c_BPSK];
signal=[signal sig];
end
figure(1)
subplot(4,1,1);
plot(signal);
axis([-100 length(signal)+100 -1.5 1.5]);
title('\bf\it Original Bit Sequence');
%% 直序扩频
% 1.产生扩频PN码 调用mgen函数
Rc=10.23e6;%伪码频率10.23MHz
PN_length=Nbit*Rc/R_bit;%伪码频率10.23MHz,每个信息码内含有Rc/Ra=1023个伪码
PN_order = 10;%PN码的本原多项式阶数 PN码周期=2^n-1
x_code=sign(mgen(PN_order,8,PN_length)-0.5);%把0,1码变换成-1,1调制码
for i=1:PN_length
PN_code((i-1)*fs/Rc+1:i*fs/Rc)=x_code(i);%每个伪码码元内含有fs/Rc个采样点,采样频率fs=40MHz
end
% 2.扩频调制,每个原始Bit*扩频PN码
ds_sig = signal.*PN_code;
%% BPSK Modulation of the signal
bpsk_sig=ds_sig.*BPSKcarrier; % Modulating the signal
subplot(4,1,2);
plot(bpsk_sig)
axis([-100 length(bpsk_sig)+100 -1.5 1.5]);
title('\bf\it BPSK Modulated Signal');
%% 产生跳频图案:以1023为周期的m序列
%% 跳频参数设置
PNforHop_order = 10; %跳频伪码本原多项式的阶数
period_of_PNforHop = 2^PNforHop_order-1;%跳频伪码的周期chip长度
RegState = 8;%跳频伪码移位寄存器的初始状态
R_fhop=100e3;%跳频速率hop/s=80KHz指的是频点变换的速率
R_PNforHop = R_fhop*PNforHop_order;% 跳频速率hop/s=8KHz指的是频点变换的速率,这里Rhop表示的是跳频PN码的chip速率
% tend=1e-3;%取0.001s时间的信号,对应1bit
tstart=0;
N_PNforHop = R_PNforHop*(tend-tstart);%仿真时间内产生的跳频chip数目,每PNforHop_order个chip对应到一个频点上
%% 生成跳频载波
hop_carrier_perBit=[];%存放每个bit数据的跳变载波数据,每个Bit使用完后,下个Bit使用之前要清零
hop_carrier=[];%存放所有bit的跳变载波数据
f_all = []; %存放跳变到的载波频点的频率值
PNforHop_all = mgen(PNforHop_order,RegState,N_PNforHop); %产生所有需要的跳频PN序列,然后每次从里面取3个chip用来对应频点
Ncarrier_perBit = R_fhop/R_bit;
time_per_carrier = length(n_perbit)/Ncarrier_perBit; %每bit数据内每个carrier对应的离散时间长度
m=1;k=1;
for k=1:Nbit
for m=1:R_fhop/R_bit %每个bit内载波频率跳变的次数
PNforHop_once = PNforHop_all((m-1)*PNforHop_order+1:m*PNforHop_order);
temp = num2str(PNforHop_once); %中间操作,将double数组先转换成01字符串
PNforHop_once = bin2dec(temp); %将二进制字符串转换成10进制整数
f_use = f_hop(PNforHop_once); %利用十进制整数表示的PN序列的值对应相应的频点
f_all = [f_all f_use];
n_temp = n_perbit((m-1)*time_per_carrier+1:m*time_per_carrier);%存放每个载波对应的时间序列值
carrier_once = cos(2*pi*f_use*n_temp);
hop_carrier_perBit=[hop_carrier_perBit carrier_once];
end
hop_carrier=[hop_carrier hop_carrier_perBit];
hop_carrier_perBit = [];%每次使用完后,下一Bit使用前要清零
end
subplot(4,1,3)
plot(hop_carrier);
axis([-100 length(hop_carrier)+100 -1.5 1.5]);
title('随机变化的时域跳频载波');%随机变化的时域跳频载波
%% 随机跳频载波的fft分析
spread_signal_fft=abs(fft(hop_carrier));
subplot(4,1,4)
n1=0:Nbit*Nsample_perBit-1;
f_axis1=n1*fs/(Nbit*Nsample_perBit);
plot(f_axis1(1:length(f_axis1)/2),spread_signal_fft(1:length(spread_signal_fft)/2));%只取0~fs/2范围内的频谱
title('随机跳频载波的fft分析,能跳出的频点数目是随机的')
xlabel('频率/Hz');
ylabel('幅度');
%% 将BPSK信号加到跳变的载波上
% Spreading BPSK Signal into wider band with total of 12 frequencies
freq_hopped_sig=bpsk_sig.*hop_carrier;
figure(2)
subplot(2,1,1)
plot([1:length(freq_hopped_sig)],freq_hopped_sig);
axis([-100 length(freq_hopped_sig)+100 -1.5 1.5]);
title('BPSK跳频信号');
% Expressing the FFTs,BPSK跳频信号的FFT分析
subplot(2,1,2);
freq_hopped_sig_fft = abs(fft(freq_hopped_sig));
plot(f_axis1(1:length(f_axis1)/2),freq_hopped_sig_fft(1:length(freq_hopped_sig_fft)/2));
title('BPSK跳频信号的FFT分析'); %每个载波调制后的BPSK信号对应两条谱线,幅度减半。因为BPSK相当于双边带调制
xlabel('频率/Hz');
ylabel('幅度');
直扩跳频混合系统(DSFH)的发送端代码matlab
需积分: 14 62 浏览量
2017-12-09
17:34:07
上传
评论 4
收藏 3KB ZIP 举报
RachelWYJ
- 粉丝: 1
- 资源: 2