Prev: Separating Harmonic Spectra
Next: a problem about TS101
From: mizer03 on 11 Jan 2008 07:25 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 11 Jan 2008 09:55 "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 11 Jan 2008 10:08 "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 11 Jan 2008 13:48 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 14 Jan 2008 00:56
> >"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 > > > |