%定时同步估计
clear all;
close all;
clc;
tic;
Tc = 1/3.84e6;
%一个10ms无线帧
symbol_len = 5000;
symbol = randint(1,symbol_len,2)*2-1;
SAMP_RATE = 32;%过采样率8
inter_zero = eye(1,SAMP_RATE);
inter_ones = ones(1,SAMP_RATE);
s_tmp = kron(symbol,inter_zero);
%% 成型滤波。
B=rcosfir(1,[-4 +4],SAMP_RATE,Tc,'normal');
send_wave=filter(B,1,s_tmp);
SNR = 30;
rsv_wave = awgn(send_wave,SNR,'measured',1234,'db');
rsv_wave = rsv_wave(99:end);
%% AD
rsv_wave_AD = rsv_wave(1:8:end);
%% 内插
len = length(rsv_wave_AD);
ti = 1:len;
to = 1:1/8:len;
%%
interp_mode = 'linear';% 'nearest','linear','spline','pchip','cubic'
rsv_wave_intp = interp1(ti,rsv_wave_AD,to,interp_mode);
%%
rsv_wave = rsv_wave_intp;
%%
%码环所用的参数
samp_len = length(rsv_wave);
init_phase = 1;
syn_dot = init_phase;
acc = 0;
G1 = 0.6;
G2 = G1/8;
er_t = SAMP_RATE/2;
kk=0;
for i = 1:1:symbol_len-100
i
y1 = rsv_wave(i*SAMP_RATE + syn_dot - er_t);
y2 = rsv_wave(i*SAMP_RATE + syn_dot + er_t);
y0 = rsv_wave(i*SAMP_RATE + syn_dot);
%%相干早迟积分同步
err(i) = (y1-y2)*y0;
acc = acc + err(i);
syn_dot1(i) = G1*err(i) + G2*acc+init_phase;
syn_dot = round(syn_dot1(i));
syn(i) = syn_dot;
end
plot(syn_dot1)
hold on;
plot(syn,'r');
title('定时同步点');
legend('实际获得定时同步点','取整后定时同步点');
grid on;
figure;
plot(err);
title('定时误差');
grid on;