DSPRelated.com
Forums

Sampling frequency offset correction & estimation Speth et al.

Started by bobo...@gmx.de February 27, 2011
Hello everyone,

I'm having troubles with SFO estimation and its correction on Speth algorithm, since I don't get correct estimated values neither in AWGN nor in ideal case.
Basically, I add SFO to OFDM signal through interpolation in time domain. Then trying to estimate with following code:

temp_pilots_rx=[pos_pilot_symbols_rx_neg; 0; pos_pilot_symbols_rx_pos;]; % separate negative & positive pilots
temp_split_position=find((temp_pilots_rx==0));

Zt_pilots(pilot_positions,k).*conj(fft_pilots(pilot_positions,k-1)); % k is the last OFDM symbol; calulates rotation in frequency domain

sum_pos_neg= sum(Z(temp_pilots_rx(1:temp_split_position-1)));
sum_pos_pos= sum(Z(temp_pilots_rx(temp_split_position+1:end)));
phi_1= angle(sum_pos_neg);
phi_2= angle(sum_pos_pos);

f_SFO_estimated= 1/ 2 / pi *f_sampling * t_u * 1 / (min(real(Z(temp_pilots_rx(temp_split_position+1:end))))+ max(real(Z(temp_pilots_rx(temp_split_position+1:end)))))*( phi_2 - phi_1) % t_u useful data portion

Afterwards I tried either back rotating the subcarriers or interpolating in time to compensate the signal, but up to now with no great luck. Even without compensation and no AWGN, I don't get the artificial added SFO i.e the problem is somewhere in the implementation.

Does any one of you see a problem in the above impementation or idea what else still have to be considered?