From: mizer03 on
Hello all!
I want to implement QPSK modulation in software. But i know that QPSK
signals can only be detected coherently. i.e knowledge of the carrier
frequency and phase is mandatory for correct detection. How is possible to
recover the carrier synchronization in software? Is it possible to
implement PLL for carrier recovery and synchronization using software?
(the programming language i'm using is C++ or C#)
Thanks in advance!
mizer


From: Vladimir Vassilevsky on

"mizer03" <belet_mes(a)hotmail.com> wrote in message
news:wrGdnXP7urnW_RranZ2dnUVZ_jidnZ2d(a)giganews.com...

> I want to implement QPSK modulation in software. But i know that QPSK
> signals can only be detected coherently. i.e knowledge of the carrier
> frequency and phase is mandatory for correct detection.

If you can tolerate the loss of 2...3dB, the QPSK can be demodulated
incoherently.

> How is possible to
> recover the carrier synchronization in software? Is it possible to
> implement PLL for carrier recovery and synchronization using software?

Everything is possible.

> (the programming language i'm using is C++ or C#)

It doesn't matter.

Vladimir Vassilevsky
DSP and Mixed Signal Consultant
www.abvolt.com




From: Randy Yates on
"mizer03" <belet_mes(a)hotmail.com> writes:

> Hello all!
> I want to implement QPSK modulation in software. But i know that QPSK
> signals can only be detected coherently. i.e knowledge of the carrier
> frequency and phase is mandatory for correct detection. How is possible to
> recover the carrier synchronization in software?

It's pretty easy for M-ary PSKs when using a complex baseband signal. In
such case mth symbol is modeled (ideally) as

S_m = a * exp[j * ((m * 2 * pi / M) + phi + theta)],

where a is the theoretically irrelevent magnitude, phi is an
arbitrary phase offset (typically pi / M), and theta is the carrier
offset. Thus

(S_m)^M = a^M * exp[j * (m * 2 * pi + (M * phi) + (M * theta))]
= a^M * exp[j * ((M * phi) + (M * theta))].

Thus

phase((S_m)^M) = (M * phi) + (M * theta).

Since phi is systematic, (M * phi) can be subtracted out, leaving
a multiplied phase error (M * theta). This can be used in to drive
the loop in a PLL.

> Is it possible to implement PLL for carrier recovery and
> synchronization using software?

Of course it is. The hard part is coming up with the signal-theoretic
aspects of the PLL, such as the loop bandwidth, overshoot, settling time,
architecture (PI, PID?), etc. The rest is just coding, and perhaps some
fixed-point considerations.
--
% Randy Yates % "Rollin' and riding and slippin' and
%% Fuquay-Varina, NC % sliding, it's magic."
%%% 919-577-9882 %
%%%% <yates(a)ieee.org> % 'Living' Thing', *A New World Record*, ELO
http://www.digitalsignallabs.com
From: PARTICLEREDDY (STRAYDOG) on
yes it can be implemented,
my suggestion go for second
order lead lag based one..

thanks
particlereddy



On Jan 11, 8:08 pm, Randy Yates <ya...(a)ieee.org> wrote:
> "mizer03" <belet_...(a)hotmail.com> writes:
> > Hello all!
> > I want to implement QPSK modulation in software. But i know that QPSK
> > signals can only be detected coherently. i.e knowledge of the carrier
> > frequency and phase is mandatory for correct detection. How is possible to
> > recover the carrier synchronization in software?
>
> It's pretty easy for M-ary PSKs when using a complex baseband signal. In
> such case mth symbol is modeled (ideally) as
>
>   S_m = a * exp[j * ((m * 2 * pi / M) + phi + theta)],
>
> where a is the theoretically irrelevent magnitude, phi is an
> arbitrary phase offset (typically pi / M), and theta is the carrier
> offset. Thus
>
>   (S_m)^M = a^M * exp[j * (m * 2 * pi + (M * phi) + (M * theta))]
>           = a^M * exp[j * ((M * phi) + (M * theta))].
>
> Thus
>
>   phase((S_m)^M) = (M * phi) + (M * theta).
>
> Since phi is systematic, (M * phi) can be subtracted out, leaving
> a multiplied phase error (M * theta). This can be used in to drive
> the loop in a PLL.
>
> > Is it possible to implement PLL for carrier recovery and
> > synchronization using software?
>
> Of course it is. The hard part is coming up with the signal-theoretic
> aspects of the PLL, such as the loop bandwidth, overshoot, settling time,
> architecture (PI, PID?), etc. The rest is just coding, and perhaps some
> fixed-point considerations.
> --
> %  Randy Yates                  % "Rollin' and riding and slippin' and
> %% Fuquay-Varina, NC            %  sliding, it's magic."
> %%% 919-577-9882                %  
> %%%% <ya...(a)ieee.org>           % 'Living' Thing', *A New World Record*, ELOhttp://www.digitalsignallabs.com

From: mizer03 on
>
>"mizer03" <belet_mes(a)hotmail.com> wrote in message
>news:wrGdnXP7urnW_RranZ2dnUVZ_jidnZ2d(a)giganews.com...
>
>> I want to implement QPSK modulation in software. But i know that QPSK
>> signals can only be detected coherently. i.e knowledge of the carrier
>> frequency and phase is mandatory for correct detection.
>
>If you can tolerate the loss of 2...3dB, the QPSK can be demodulated
>incoherently.
>
>> How is possible to
>> recover the carrier synchronization in software? Is it possible to
>> implement PLL for carrier recovery and synchronization using software?
>
>Everything is possible.
>
>> (the programming language i'm using is C++ or C#)
>
>It doesn't matter.
>
>Vladimir Vassilevsky
>DSP and Mixed Signal Consultant
>www.abvolt.com
>
>Thanks for your reply, But my question was:
1. How is possible to recover the carrier using software?
2. Is there a code in c++/C# to implement PLL for carrier recovery,
especially for QPSK detection?
Thanks in advance!
mizer
>
>
>
 |  Next  |  Last
Pages: 1 2
Prev: Separating Harmonic Spectra
Next: a problem about TS101