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

📄 rx_fine_time_sync.m

📁 ofdm系统仿真
💻 M
字号:
%Fine time synchronization
function fine_time_est = rx_fine_time_sync(input_signal, sys_parm)

     global ofdm_data_parm_const;

     if sys_parm.FineTimeSync
        %Timing search window size
        start_search = sys_parm.TotNumSubc * sys_parm.OverSamp * 2;
        end_search = start_search + 5 * ofdm_data_parm_const.CPLength;

        %Next generate the two long training symbols
        long_str = ofdm_data_parm_const.LongTrainingSymbol;

        %OverSample and IFFT operation
        ifft_in = zeros(1, sys_parm.TotNumSubc);
        ifft_in(ofdm_data_parm_const.UsedSubcIdx) = long_str;
        if sys_parm.OverSamp > 1
            insert_zeros = zeros(1, (sys_parm.OverSamp - 1) * sys_parm.TotNumSubc);
            ifft_in_up = ifft_in(1: sys_parm.TotNumSubc / 2);
            ifft_in_down = ifft_in(sys_parm.TotNumSubc / 2 + 1: sys_parm.TotNumSubc);
            ifft_in = [ifft_in_up, insert_zeros, ifft_in_down];
        end
        ifft_out = ifft(ifft_in);
        long_trs = ifft_out;

        time_corr_long = zeros(1, end_search - start_search + 1);

        %Calculate cross correlation      
        for idx = start_search : end_search
            time_corr_long(idx - start_search + 1) = sum((input_signal(idx : idx + length(long_trs) - 1).* conj(long_trs)));
        end

        %Find the biggest value
        [max_peak_long, long_search_idx] = max(abs(time_corr_long));
	    fine_time_est = start_search - 1 + long_search_idx;
    else
        %Magic numbers
        fine_time_est = (sys_parm.TotNumSubc * sys_parm.OverSamp + ofdm_data_parm_const.CPLength) * 2 + ofdm_data_parm_const.CPLength * 2 + 1;
    end   
end

⌨️ 快捷键说明

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