locked
communication between 2 SORAs in 802.11a mode RRS feed

  • Question

  • Hi all, 

    We success communication between 2 sora boards in 802.11b.

    We use umxsdrab.exe and make 1 SORA board as an ad-mode which transmit becon frame periodically. (umxsdrab.exe -f 2412 -s 44 -b..... then press 'p')

    Then the other SORA board can receive the becon frame correctly. (umxsdrab.exe -f 2412 -s 44 -b.)

    However if we use 802.11a, we failed to receive beacon frames.

    SORA 1 : umxsdrab.exe -f 2412 -s 44 ... then press 'p'

    SORA 2 : umxsdrab.exe -f 2412 -s 44

    (I already know that you recommend 40 MHz sample rate in 802.11a mode. However it is not work at all in our board.)

    Anyway, we can capture the beacon frame of SORA1 via commercial WiFi NIC thanks to Up/Down sampling process in SORA sdk 1.6.

    Moreover, SORA2 can receive the beacon frame of the commercial AP which send beacon with OFDM frame as well.

    However SORA2 cannot receive ANY beacon frame of SORA1 :(.

    We find that SORA2 invokes "FD_NEGATIVE: Symbol sync failed" when it receives the beacon of SORA1 as shown in following letter box. 

                

    arx_fd.c

    // Kun: I assume EstablishSync is okay. May revisit later pRxContextA->__iSyncPeakPos = EstablishSync((vi*)pRxContextA->corrRe, pcTemp, (int*)&pRxContextA->__uiSyncMax); if (pRxContextA->__iSyncPeakPos < 0) // sync failed { hr = BB11A_E_SYNC_FAIL; KdPrint(("FD_NEGATIVE: Symbol sync failed.\n")); break; }

    The "pcTemp = pRxContextA->rxFifos->g11a_lbSync.Peek()" includes ...

    16 -1008 628 550 -1251 833 870 -517
    735 2069 -2384 3008 213 -1555 -1381 5612
    -6634 -2139 1207 -4556 2832 -704 3839 3580
    -3301 5722 -3912 -2303 1576 2164 -4640 -27

    The result of EstablishSync is as follows:

    c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 68 ::EstablishSync -> pcorrRe[15] = 773050 pstdSPSF = -2162 pc = 16 16 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 76 ::EstablishSync -> uiThis : 484504 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 81 ::EstablishSync -> uiThis : 1240195 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 86 ::EstablishSync -> uiMax : 1240195 iMaxInd : 1 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 81 ::EstablishSync -> uiThis : 1852150 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 86 ::EstablishSync -> uiMax : 1852150 iMaxInd : 2 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 81 ::EstablishSync -> uiThis : 1116599 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 81 ::EstablishSync -> uiThis : 201491 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 81 ::EstablishSync -> uiThis : 907812 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 81 ::EstablishSync -> uiThis : 1953220 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 86 ::EstablishSync -> uiMax : 1953220 iMaxInd : 6 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 81 ::EstablishSync -> uiThis : 1720997 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 81 ::EstablishSync -> uiThis : 1320338 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 81 ::EstablishSync -> uiThis : 821770 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 81 ::EstablishSync -> uiThis : 523009 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 81 ::EstablishSync -> uiThis : 826350 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 81 ::EstablishSync -> uiThis : 1577958 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 81 ::EstablishSync -> uiThis : 1714098 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 81 ::EstablishSync -> uiThis : 1739370 c:\sorasdk1.6\src\bb\dot11a\inc\bb\mod\async.h 81 ::EstablishSync -> uiThis : 773050 FD_NEGATIVE: Symbol sync failed.

    -----------------------------DEBUG MESSAGE WE USE--------------------------------------------

    async.h

    // Establish Synchronization
    DSP_INLINE1 int EstablishSync(vi *pcorrRe, const vcs *pc, int *puiMax)
    {

    UdPrint(("%-30s\t%-4d::%s -> \n", __FILE__,__LINE__,__FUNCTION__));
        vcs* pstdSPSF = (vcs*)g11a_stdSPSF;

    PrintVcs(pc);

        for (int i = 0; i < 16; i++)
        {
            pcorrRe[i] = GetCrossCorrelation(pc, pstdSPSF);
    //
    UdPrint(("%-30s\t%-4d::%s -> pcorrRe[%d] = %u pstdSPSF = %hi pc = %hi %d\n", __FILE__,__LINE__,__FUNCTION__,i,pcorrRe[i][0],pstdSPSF[0][0],((vs&)pc[0])[0],((vs&)pc[0])[0]));
            pstdSPSF += 8;
        }

        unsigned int uiMax = pcorrRe[0][0];
        unsigned int uiSum = uiMax;
        unsigned int iMaxInd = 0;

    UdPrint(("%-30s\t%-4d::%s -> uiThis : %u\n", __FILE__,__LINE__,__FUNCTION__,uiMax));

        for (int i = 1; i < 16; i++)
        {
            unsigned int uiThis = pcorrRe[i][0];
    UdPrint(("%-30s\t%-4d::%s -> uiThis : %u\n", __FILE__,__LINE__,__FUNCTION__,uiThis));
            if (uiThis > uiMax)
            {
                uiMax = uiThis;
                iMaxInd = i;
    UdPrint(("%-30s\t%-4d::%s -> uiMax : %u iMaxInd : %u\n", __FILE__,__LINE__,__FUNCTION__,uiMax,iMaxInd));
            }
            uiSum += uiThis; 
        }

        if ((uiSum >> 3) > uiMax) 
        {
            // Note: if all noise, uiSum is 16 times of uiMax
            return -1;  // error, no peak
        }
            
        *puiMax = uiMax >> 1;
        return iMaxInd;
    }

    Do you have any idea to solve the sync problem?

    Thank you!!

    p.s. 

    Please, answer for this topic "http://social.microsoft.com/Forums/en-US/sora/thread/96ffc95c-5272-41d0-9df1-e0d44283ee15"


    • Edited by Okhwan Lee Tuesday, October 9, 2012 5:02 AM
    Tuesday, October 9, 2012 4:47 AM

Answers

  • you may need to manually tune frequency offset and tx/rx gain.

    -Jiansong

    • Marked as answer by Okhwan Lee Tuesday, October 16, 2012 1:39 AM
    Thursday, October 11, 2012 3:56 AM

All replies

  • you may need to manually tune frequency offset and tx/rx gain.

    -Jiansong

    • Marked as answer by Okhwan Lee Tuesday, October 16, 2012 1:39 AM
    Thursday, October 11, 2012 3:56 AM
  • Thank you ! 
    Tuesday, October 16, 2012 1:40 AM