How to extract I/Q value RRS feed

  • Question

  • Hello-.
    I am coding constellation graph plotting program as a tutorial and have questions.
    What we wanna see are,

      1. Sender sora machine can transmit a frame on 16-QAM or bpsk mode. a Mode can be
          switched easily by pushing a button on application.

      2. Receiver sora machine can receive a frame and plot a constellation graph in real time.

    On receiver side sora machine, I added a few lines in umxsample.c as following.

    void RxRoutine ()

        int index = 0;
        SignalBlock block;
        for (;;)

            if (End.QuadPart - Start.QuadPart > Freq.QuadPart / 2)
                Start = End;
                // almost 1s
                // compute the energy 
                vcs* pSamples = &block[0];

                // single block contains 28 samples or 7 vector cs
                vi sum;
                set_zero (sum);

                // this is an approximated way to calc energy
                for (int i=0; i<7; i++ ) {
                    vi re, im;
                    vcs s = pSamples[i];
                    __int16 re1,im1; //newly added part
                    re1=s[0].re; im1=s[0].im; //newly added part
                    fprinf(f1,"%d   %d \n",re1,im1); //newly added part
                    s = shift_right (s, 3);

                    conj_mul ( re, im, s, s ); // (a+bj) * (a-bj)
                    sum = add (sum, re );

     that is, before calculating energy, I let it save i/q value of signals in a text file.
    And I built a simple application program which plot a graph (x axis is I value, y axis is Q value) with it.

    Then on sender machine, I ran HVT and let it transmit a wave.  On receiver side, I ran above edited 
    umxsample file with 'rx' option.

    the result was not really like what we expected.
     we expected a 16-QAM constellation graph, but the pattern didn't look have any meaning. and it looks
    like there was no difference regardless of whether sender's HVT was turned on or not.

    To see reception actually happens, I made a simple batchfile like following on 'sender' sora machine
     to transmit a frame constantly.

    umxsample tx windowsxp.iso
    umxsample tx windowsxp.iso
    umxsample tx windowsxp.iso
    umxsample tx windowsxp.iso
    umxsample tx windowsxp.iso

    Though file was not a signal file, certainly it sended something anyway and receiver's plotting graph shaw 
    some shape. sometimes it looked like a circle as following.

    (number of points which can be shown in 1 sec is 6 in this application.)
    but still It gave me no significant advance.
    so here are my questions.

     1. Is What I am doing(the way of extracting i/q values) right? and..

     2. Signal block has 7 vectors (vcs structure). and each one contains 4 i/q value pairs. then what s[0].re
        and s[0].im mean in above code? does vcs vector s have just 4 elements like array shape as s[0~4].(re,im)?
        I couldn't get it tough I read codes of vcs vector definition part.

     3. Can't my umxsample.exe receive sender HVT's generating signal? 

     4. How can I generate *.sig file which umx_sample use? What exactly it is? is it just a wave form?

    It would be very helpful if anybody tell me something about this.

    - dk

    • Edited by d_k_fox Wednesday, September 28, 2011 12:30 PM
    Wednesday, September 28, 2011 12:24 PM

All replies

  • a suggestion:

    The difficult part for you to debug your program is to differentiate decoding error caused by wireless channel and display problem of your GUI program. In order to do this, you can first fix all the gain setting, use dut tool to transfer, TX and dump packets to make sure the packets can be decoded. Then try your UMX program.

    Sunday, October 2, 2011 6:06 PM