root/ResearchApps/PHY/MIMO_OFDM/ofdm_rx_init_packetTimingControl.m

Revision 439, 2.7 kB (checked in by murphpo, 2 years ago)

Updated MIMO OFDM with carrier frequency offset correction & real channel inversion

Line 
1%Assumes that a short symbol starts at time 0; everything else is
2% paramaterized below
3pktTiming_controlCounter_bits = 16; %ceil(log2(tx_packetLength))
4
5%Structure of packet following detection
6%Short symbols
7pktTiming_ss_num = 6;
8pktTiming_ss_length = length(shortSymbol_time);
9
10%Long symbols
11pktTiming_ls_num = 2;
12pktTiming_ls_length = length(longSymbol_time);
13
14%Long symbol cyclic prefix
15pktTiming_lscp_length = 32;
16
17%Symbol and Payload length
18pktTiming_symbol_length = numSubcarriers + CPLength;
19%pktTiming_payload_length = tx_symbolLength * tx_numSymbols;
20
21%Counter values for various points in the packet structure
22pktTiming_count_ssStart = 0;
23pktTiming_count_lscpStart = (pktTiming_count_ssStart + pktTiming_ss_num*pktTiming_ss_length);
24pktTiming_count_lsStart = (pktTiming_count_lscpStart + pktTiming_lscp_length);
25pktTiming_count_payloadStart = pktTiming_count_lsStart + pktTiming_ls_num*pktTiming_ls_length;
26%%pktTiming_count_packetDone = pktTiming_count_payloadStart + pktTiming_payload_length;
27
28% Count values at which to capture the accumulator output
29% Generate four ss_latchAccum pulses and one ls_latchAccum pulse
30%  Ignore the last short symbol cross correlation to avoid problems with
31%   possible correlating with the first few samples of the longsym prefix
32freqSync_coarse_count_ss_latchAccum = 2+pktTiming_count_ssStart+pktTiming_ss_length+[pktTiming_ss_length : pktTiming_ss_length : (pktTiming_ss_num-2)*pktTiming_ss_length];
33freqSync_coarse_count_ls_latchAccum = (-18) + 2+pktTiming_count_lsStart+pktTiming_ls_length+[pktTiming_ls_length:pktTiming_ls_length:(pktTiming_ls_num-1)*pktTiming_ls_length];
34freqSync_coarse_count_latchAccum = [freqSync_coarse_count_ss_latchAccum freqSync_coarse_count_ls_latchAccum];
35
36% Count values at which to reset the accumulator; these should precede pktTiming_coarse_ss_length accumulations by one cycle
37%  Normally: [15 31 47 63 127]
38freqSync_coarse_count_ss_accumReset = freqSync_coarse_count_ss_latchAccum - pktTiming_ss_length;
39freqSync_coarse_count_ls_accumReset = freqSync_coarse_count_ls_latchAccum - pktTiming_ls_length;
40freqSync_coarse_count_accumReset = [freqSync_coarse_count_ss_accumReset freqSync_coarse_count_ls_accumReset];
41
42%Skip the first two short symbol accumulations - AGC doesn't settle in time to use all four
43%freqSync_coarse_count_latchAccum = [freqSync_coarse_count_latchAccum(3:end) 0 0];
44%freqSync_coarse_count_accumReset = [freqSync_coarse_count_accumReset(3:end) 0 0];
45
46%Bypass this scheme for triggering the long-symbol calculaion
47freqSync_coarse_count_latchAccum = [freqSync_coarse_count_latchAccum(3:end-1) 0 0 0];
48freqSync_coarse_count_accumReset = [freqSync_coarse_count_accumReset(3:end-1) 0 0 0];
Note: See TracBrowser for help on using the browser.