On Mon, Jul 15, 2013 at 4:50 PM, yeran <yeran0...@hotmail.com> wrote:
> Hi everyone,
>
> I have a question about benchmark decoding. I'm using bpsk mod and demod.
>
> In order to understand what's happening in the demodulation process, I added
> a file sink after time_recov block and after unpack block respectively.
> According to my understanding, the receiver block does the mapping and
> decision making process. It maps the complex number in rx_time_recov.32fc to
> 1 if the complex number is bigger than zero. It will map the complex number
> in rx_time_recov.32fc to 0 if the complex number is smaller than zero. And
> this mapping result, 1 or 0, is written into rx_unpack.8b.
>
> However, in real experiment, I found wired result. Sometimes the mapping is
> using the algorithm as above, sometimes it is totally the opposite way.
> (complex number in rx_time_recov.32fc smaller than zero will be mapped as
> 1). Even this algorithm is not the same within one packet. For instance, the
> access code is mapped using one algorithm, and the payload is mapped the
> other way.
>
> I don't understand why this is happening. Is there anything to do with the
> phase error or anything? Can anyone give me some suggestions on how it
> works?
>
> Thanks!
> Ada

What you're seeing is the result of phase rotation due to a frequency
offset. The tracking loops for frequency, timing, and phase have to
search, acquire, and lock. In this process, by the time they are done,
they are locked in a way that has any possible symmetrical rotation.
For BPSK, you can have two rotations (0, 1 or 1, 0). For QPSK, you can
have four possible rotations. There's nothing in the system that
understands the right constellation to symbol map to correct for this.
One reason why we use differential encoding by default since it
doesn't care about this.

Tom

_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to