discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] help with QAM demodulation


From: Ben Reynwar
Subject: Re: [Discuss-gnuradio] help with QAM demodulation
Date: Mon, 27 Feb 2012 10:50:17 -0700

On Mon, Feb 27, 2012 at 10:00 AM, Ben Reynwar <address@hidden> wrote:
> On Mon, Feb 27, 2012 at 7:36 AM, Jeff Hodges <address@hidden> wrote:
>> Does anyone know if the QAM demodulator code is working properly?  I would
>> like to get a QAM demodulator working for a symbol rate of 300ksym/s. I
>> don't know whether I am just using the wrong parameters or if the blocks do
>> not work properly, but I am not getting the results I expect.
>>
>> To test the code out I am using the GRC. I have a vector source with a known
>> data sequence running into the qam mod block and then the output of that
>> into a QAM demod block. The output of the QAM demod is running into a Uchar
>> to Float, and I am plotting the results on a WX GUI Scope.  I have the exact
>> same settings on both the QAM mod and demod blocks.  The output I am seeing
>> on the scope looks completely random. (I also tried other vector source
>> data: When the input is 0x0F, repeating, the output I see is 00001010
>> repeating. But when I use 0x0E, the results are random again.)
>>
>> I have also tried demodulating a real QAM signal with a known data sequence,
>> also to no avail.
>>
>> I have been working on this for about a month now and haven't had any
>> success.  I have examined the underlying QAM.py and generic_mod,
>> generic_demod codes, and they seem to be written properly. But I am not
>> getting the expected results.
>>
>> Any help with this problem or advice you can give will be greatly
>> appreciated, and I will return the favor by helping out in any way that I
>> can.
>>
>> Thank you very much in advance,
>>
>> Jeff
>>
>> _______________________________________________
>> Discuss-gnuradio mailing list
>> address@hidden
>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>
>
> If it's not working it's probably my fault, so I'll do some tests
> myself today and get back to you.
>
> Cheers,
> Ben

I found a bug in the xml file for the demodulator that would cause
problems if you requested no gray-coding.
It cause gnuradio-companion to pass an incorrect parameter name.
A fix is at 
https://github.com/benreynwar/gnuradio/commit/e68ab8589ca235563f8c061fbb79d13793d1f21f

In case that wasn't your problem I'll post an example that works for me:

from gnuradio import gr, digital

class qam_mod_demod(gr.top_block):

    def __init__(self):
        super(qam_mod_demod, self).__init__()
        src = gr.vector_source_b([1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0,
0, 0]*1000)
        packer = gr.unpacked_to_packed_bb(1, gr.GR_MSB_FIRST)
        self.snk = gr.vector_sink_b()
        mod = digital.qam.qam_mod(constellation_points=16,
mod_code="gray",
                                  differential=True,
samples_per_symbol=2,
                                  excess_bw=0.35)
        demod = digital.qam.qam_demod(constellation_points=16,
mod_code="gray",
                                      differential=True,
samples_per_symbol=2,
                                      excess_bw=0.35,
freq_bw=6.28/100.0,
                                      timing_bw=6.28/100.0,
phase_bw=6.28/100.0)
        unpacker = gr.packed_to_unpacked_bb(8, gr.GR_MSB_FIRST)
        self.connect(src, packer, mod, demod, unpacker, self.snk)

if __name__ == '__main__':
    qmd = qam_mod_demod()
    qmd.run()
    data = qmd.snk.data()
    print(data)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]