?? sync_cor.c
字號:
0x5fff, 0x6014, 0x6029, 0x603f, 0x6054, 0x6069, 0x607e, 0x6094, 0x60a9,
0x60be, 0x60d3, 0x60e8, 0x60fd, 0x6113, 0x6128, 0x613d, 0x6152, 0x6167,
0x617c, 0x6191, 0x61a6, 0x61bb, 0x61d0, 0x61e5, 0x61fa, 0x620e, 0x6223,
0x6238, 0x624d, 0x6262, 0x6277, 0x628b, 0x62a0, 0x62b5, 0x62ca, 0x62de,
0x62f3, 0x6308, 0x631c, 0x6331, 0x6346, 0x635a, 0x636f, 0x6384, 0x6398,
0x63ad, 0x63c1, 0x63d6, 0x63ea, 0x63ff, 0x6413, 0x6428, 0x643c, 0x6451,
0x6465, 0x6479, 0x648e, 0x64a2, 0x64b6, 0x64cb, 0x64df, 0x64f3, 0x6508,
0x651c, 0x6530, 0x6544, 0x6559, 0x656d, 0x6581, 0x6595, 0x65a9, 0x65bd,
0x65d1, 0x65e6, 0x65fa, 0x660e, 0x6622, 0x6636, 0x664a, 0x665e, 0x6672,
0x6686, 0x669a, 0x66ae, 0x66c2, 0x66d6, 0x66ea, 0x66fd, 0x6711, 0x6725,
0x6739, 0x674d, 0x6761, 0x6774, 0x6788, 0x679c, 0x67b0, 0x67c4, 0x67d7,
0x67eb, 0x67ff, 0x6812, 0x6826, 0x683a, 0x684d, 0x6861, 0x6875, 0x6888,
0x689c, 0x68af, 0x68c3, 0x68d6, 0x68ea, 0x68fd, 0x6911, 0x6924, 0x6938,
0x694b, 0x695f, 0x6972, 0x6986, 0x6999, 0x69ac, 0x69c0, 0x69d3, 0x69e7,
0x69fa, 0x6a0d, 0x6a20, 0x6a34, 0x6a47, 0x6a5a, 0x6a6e, 0x6a81, 0x6a94,
0x6aa7, 0x6aba, 0x6ace, 0x6ae1, 0x6af4, 0x6b07, 0x6b1a, 0x6b2d, 0x6b40,
0x6b53, 0x6b67, 0x6b7a, 0x6b8d, 0x6ba0, 0x6bb3, 0x6bc6, 0x6bd9, 0x6bec,
0x6bff, 0x6c12, 0x6c25, 0x6c37, 0x6c4a, 0x6c5d, 0x6c70, 0x6c83, 0x6c96,
0x6ca9, 0x6cbc, 0x6cce, 0x6ce1, 0x6cf4, 0x6d07, 0x6d1a, 0x6d2c, 0x6d3f,
0x6d52, 0x6d65, 0x6d77, 0x6d8a, 0x6d9d, 0x6daf, 0x6dc2, 0x6dd5, 0x6de7,
0x6dfa, 0x6e0d, 0x6e1f, 0x6e32, 0x6e44, 0x6e57, 0x6e69, 0x6e7c, 0x6e8f,
0x6ea1, 0x6eb4, 0x6ec6, 0x6ed9, 0x6eeb, 0x6efd, 0x6f10, 0x6f22, 0x6f35,
0x6f47, 0x6f5a, 0x6f6c, 0x6f7e, 0x6f91, 0x6fa3, 0x6fb5, 0x6fc8, 0x6fda,
0x6fec, 0x6fff, 0x7011, 0x7023, 0x7035, 0x7048, 0x705a, 0x706c, 0x707e,
0x7091, 0x70a3, 0x70b5, 0x70c7, 0x70d9, 0x70eb, 0x70fd, 0x7110, 0x7122,
0x7134, 0x7146, 0x7158, 0x716a, 0x717c, 0x718e, 0x71a0, 0x71b2, 0x71c4,
0x71d6, 0x71e8, 0x71fa, 0x720c, 0x721e, 0x7230, 0x7242, 0x7254, 0x7266,
0x7278, 0x728a, 0x729b, 0x72ad, 0x72bf, 0x72d1, 0x72e3, 0x72f5, 0x7306,
0x7318, 0x732a, 0x733c, 0x734e, 0x735f, 0x7371, 0x7383, 0x7394, 0x73a6,
0x73b8, 0x73ca, 0x73db, 0x73ed, 0x73ff, 0x7410, 0x7422, 0x7434, 0x7445,
0x7457, 0x7468, 0x747a, 0x748b, 0x749d, 0x74af, 0x74c0, 0x74d2, 0x74e3,
0x74f5, 0x7506, 0x7518, 0x7529, 0x753b, 0x754c, 0x755e, 0x756f, 0x7580,
0x7592, 0x75a3, 0x75b5, 0x75c6, 0x75d8, 0x75e9, 0x75fa, 0x760c, 0x761d,
0x762e, 0x7640, 0x7651, 0x7662, 0x7674, 0x7685, 0x7696, 0x76a7, 0x76b9,
0x76ca, 0x76db, 0x76ec, 0x76fd, 0x770f, 0x7720, 0x7731, 0x7742, 0x7753,
0x7765, 0x7776, 0x7787, 0x7798, 0x77a9, 0x77ba, 0x77cb, 0x77dc, 0x77ed,
0x77ff, 0x7810, 0x7821, 0x7832, 0x7843, 0x7854, 0x7865, 0x7876, 0x7887,
0x7898, 0x78a9, 0x78ba, 0x78cb, 0x78dc, 0x78ed, 0x78fd, 0x790e, 0x791f,
0x7930, 0x7941, 0x7952, 0x7963, 0x7974, 0x7985, 0x7995, 0x79a6, 0x79b7,
0x79c8, 0x79d9, 0x79ea, 0x79fa, 0x7a0b, 0x7a1c, 0x7a2d, 0x7a3d, 0x7a4e,
0x7a5f, 0x7a70, 0x7a80, 0x7a91, 0x7aa2, 0x7ab2, 0x7ac3, 0x7ad4, 0x7ae5,
0x7af5, 0x7b06, 0x7b16, 0x7b27, 0x7b38, 0x7b48, 0x7b59, 0x7b6a, 0x7b7a,
0x7b8b, 0x7b9b, 0x7bac, 0x7bbc, 0x7bcd, 0x7bdd, 0x7bee, 0x7bff, 0x7c0f,
0x7c20, 0x7c30, 0x7c41, 0x7c51, 0x7c61, 0x7c72, 0x7c82, 0x7c93, 0x7ca3,
0x7cb4, 0x7cc4, 0x7cd5, 0x7ce5, 0x7cf5, 0x7d06, 0x7d16, 0x7d26, 0x7d37,
0x7d47, 0x7d57, 0x7d68, 0x7d78, 0x7d88, 0x7d99, 0x7da9, 0x7db9, 0x7dca,
0x7dda, 0x7dea, 0x7dfa, 0x7e0b, 0x7e1b, 0x7e2b, 0x7e3b, 0x7e4c, 0x7e5c,
0x7e6c, 0x7e7c, 0x7e8c, 0x7e9d, 0x7ead, 0x7ebd, 0x7ecd, 0x7edd, 0x7eed,
0x7efe, 0x7f0e, 0x7f1e, 0x7f2e, 0x7f3e, 0x7f4e, 0x7f5e, 0x7f6e, 0x7f7e,
0x7f8e, 0x7f9e, 0x7fae, 0x7fbe, 0x7fce, 0x7fde, 0x7fee};
/* External Data */
/* Code */
int sync_corr( int *I_SRC, int *Q_SRC, int *filt )
{
int i, j, sync_point,index, corr_mag, max, I_temp, Q_temp;
int *sync_ptr, *rc_data, sync_i, sync_q, rc_i, rc_q;
long I_ltemp, Q_ltemp;
/**************************************/
/* Filter just enough data to span */
/* correlation window */
/* */
/* Store resultant 76 I,Q pairs */
/* into temp_rc[] storage. */
/**************************************/
rc_data = temp_rc; /* Set pointer to temporary storage for filter output */
I_SRC += 8; /* Intentional offset to start 2 symbols */
Q_SRC += 8; /* to left of expected sync point. */
for (i = 0 ; i < 76 ; i++)
{
I_ltemp = _lsmpy((*(I_SRC++)), (*filt) );
Q_ltemp = _lsmpy((*(Q_SRC++)), (*filt++) );
for (j = 47 ; j > 0 ; j--)
{
/* I_temp += (*(I_SRC++)) * (*filt); */
/* Q_temp += (*(Q_SRC++)) * ((*filt++)); */;
I_ltemp = _smac(I_ltemp, (*(I_SRC++)), (*filt) );
Q_ltemp = _smac(Q_ltemp, (*(Q_SRC++)), (*filt++) );
}
filt -= 48; /* Set Filter pointer back to start */
I_SRC -= 47; /* Start 1 sample over next time */
Q_SRC -= 47;
*(rc_data++) = (I_ltemp>>18); /* Store Filter Output I term in Q13 format */
*(rc_data++) = (Q_ltemp>>18); /* Store Filter Output Q term in Q13 format */
}
/****************************************/
/* Correlate with Sync Word for Slot #0 */
/* Keep track of correlation peak. */
/****************************************/
max = 0; /* Correlation Magnetude Maximum */
sync_point = 0; /* Index into data to sync point */
rc_data = temp_rc; /* Set pointer to beginning of filtered data */
for (i = 0 ; i < 16 ; i++)
{
/* Zero resultant correlation vector components */
I_ltemp = 0;
Q_ltemp = 0;
/* Point to M.E.P. buffer for slot #0 Sync word */
sync_ptr = cor_sync;
/* Perform Correlation at offset 'i' into data */
for (j = 15 ; j > 0 ; j--)
{
sync_i = *(sync_ptr++);
sync_q = *(sync_ptr++);
rc_i = *(rc_data++);
rc_q = *(rc_data++);
rc_data += 6;
I_ltemp = _smac(I_ltemp, sync_i, rc_i);
I_ltemp = _smac(I_ltemp, sync_q, rc_q);
Q_ltemp = _smac(Q_ltemp, sync_i, rc_q);
Q_ltemp = _smas(Q_ltemp, sync_q, rc_i);
}
rc_data -= 118; /* 120 would set pointer back to start */
/* we will start 1 sample (I,Q pair) over next time */
/* Compute Correlation Magnetude & Maximize */
/* corr_mag = (float)sqrt(I_temp*I_temp + Q_temp*Q_temp); */
I_temp = (I_ltemp>>16);
Q_temp = (Q_ltemp>>16);
I_ltemp = _lsmpy(I_temp, I_temp);
I_ltemp = _smac(I_ltemp, Q_temp, Q_temp);
index = (I_ltemp>>16);
corr_mag = sqrt_tab[index>>5];
if( corr_mag > max )
{
sync_point = i;
max = corr_mag;
}
}
return( sync_point + 8 ); /* Note that we started at offset = 8 */
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -