discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] constellation algorithm at benchmark


From: yeran
Subject: Re: [Discuss-gnuradio] constellation algorithm at benchmark
Date: Wed, 17 Jul 2013 20:11:12 +0000

Hi Dear Nathan,

Thank you for your reply.

First, you are absolutely right about the decision making, it is based on if the real part is bigger than 0. It is a typo in my last email.

Second, I totally agree with the flow graph you talked about in generic_mod_demod. And I looked into the general_work function in the file digital_constellation_receiver. For BPSK, (I'm not using DBPSK), the decision is made based on the sign of the real part.

When I use logging, I can put into file the result of each block. The rx_time_recov.32fc is the data after time_recov block, and before the receiver block. The rx_unpack.8b is after the unpack block.

But here is my problem. As I didn't use differential or gray_code, and the unpack block is only the format changing, not influence the value of the decision result. So I think the data in rx_unpack.8b should be one-to-one match to the samples in rx_time_recov.32fc. However, it is not always the case.

For instance, I take one packet as an example. Even though I can find the exact packet in rx_unpack.8b, when tracing back to the relevant address in rx_time_recov.32fc (the relevant address is 8 times the address in rx_unpack.8b), the samples not always obey the rule what we assume -- the decision is not always made based on the sign of the real part. And it seems to be irregular.

I read through the c++ file but i think the phase error has no contributions to decision_maker_pe. The advance_loop() function in phase_error_tracking() only records the error instead of updating this information to decision part.

I dont understand how does the gnuradio get the correct decoding result with the samples. do u have any clues about that?

Thanks!

Ada

> Date: Wed, 17 Jul 2013 11:55:19 -0400
> Subject: Re: [Discuss-gnuradio] constellation algorithm at benchmark
> From: address@hidden
> To: address@hidden
> CC: address@hidden
>
> On Wed, Jul 17, 2013 at 11:20 AM, yeran <address@hidden> wrote:
> > Hi Dear All,
> >
> > Recently, I've been working with benchmark_rx.py in narrowband. I'm using
> > bpsk.
> > I don't really understand what happens in the demodulator.
> >
> > In the generic_mod_demod.py, the receiver block act as the constellation or
> > mapping function. Previously, I thought for bpsk, it is just if the sample
> > as complex number's real part is bigger than 1, then it is mapped as 1,
>
> I think you want to make the decision on if the real part is bigger
> than 0. Deciding if real(symbol) > 1 would be more like ASK.
>
> > otherwise, it is mapped as 0. But apparently, it is not what all happens
> > there, since the output of the receiver (rx_unpack.8b) is not the same
> > result.
>
>
> As you probably noticed since you looked at generic_mod_demod the
> demodulator is actually a hierarchical block with the following
> connections:
> input -> agc -> FLL -> RRC filter -> clock sync -> constellation
> receiver [-> differential decoder[ [-> symbol mapper] -> bit unpacker
>
> The RRC filter is a decimating filter that takes number of samples per
> symbol and outputs a symbol (a single complex number). This is (or
> should be) a matched filter to the one on the RRC on the transmitter
> which outputs samples per symbol for every symbol input.
> The constellation receiver is converting that symbol to a bit (in the
> case of BPSK, or bits for higher PSKs). If you look in
> digital_constellation_receiver you'll see the general_work function
> calls d_constellation->decision_maker_pe. For BPSK we gave this block
> a BPSK constellation. It's decision_maker is defined in
> digital_constellation; just search for bpsk in there and you'll see
> the decision is made based on the sign of the real part.
>
> The final part of the generic demod is a bit unpacker which will
> output regular chars the way you would expect (so your whole bit
> stream is the same as what you put in to the modulator).
>
> >
> > I noticed there are some phase error, and frequency error check. Anyone has
> > any idea how these parameters work, how it will effect the mapping result?
>
> I haven't ever touched these, but I think the setup_logging stuff just
> dumps lots of data like phase error to files. I'm not sure if that
> answers your question or not though. What checks are you talking
> about?
>
> >
> > Thanks in advance. Look forward to any suggestions!
> >
> > Ada
> >

reply via email to

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