DSPRelated.com
Forums

Qpsk Demodulator

Started by Eshwar varma March 12, 2015
I implemented a qpsk demodulator on NI fpga . When i run the code iam getting correct constellation one  out of 4 succesive runs remaining times constellation is rotating as shown in fig url: https://decibel.ni.com/content/servlet/JiveServlet/showImage/105-32337-135325/Constellation.jpg .

q1. what are the possible causes for constellation rotation?
On Thursday, March 12, 2015 at 4:59:41 PM UTC+5:30, Eshwar varma wrote:
> I implemented a qpsk demodulator on NI fpga . When i run the code iam getting correct constellation one out of 4 succesive runs remaining times constellation is rotating as shown in fig url: https://decibel.ni.com/content/servlet/JiveServlet/showImage/105-32337-135325/Constellation.jpg . > > q1. what are the possible causes for constellation rotation?
These are the steps i followed. Step 1. Frequency offset correction (value from step 4) Step 2. Match filtering Step 3. Automatic Gain control Step 4. Frequency Offset estimation (FFT Based) Step 5. Timing recovery (based on gardener algorithm) Step 6. Fine tuning or removing small offsets in frequency (PLL) Step 7. Demaping
On Thu, 12 Mar 2015 04:29:37 -0700 (PDT), Eshwar varma
<eshwar93.india@gmail.com> wrote:

>I implemented a qpsk demodulator on NI fpga . When i run the code iam getti= >ng correct constellation one out of 4 succesive runs remaining times const= >ellation is rotating as shown in fig url: https://decibel.ni.com/content/se= >rvlet/JiveServlet/showImage/105-32337-135325/Constellation.jpg . > >q1. what are the possible causes for constellation rotation?
Oops, the page can't be found Sorry, the page you requested can't be found. You can go back and try again, or start again at home. Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
On Thu, 12 Mar 2015 04:43:00 -0700 (PDT), Eshwar varma
<eshwar93.india@gmail.com> wrote:

>On Thursday, March 12, 2015 at 4:59:41 PM UTC+5:30, Eshwar varma wrote: >> I implemented a qpsk demodulator on NI fpga . When i run the code iam get= >ting correct constellation one out of 4 succesive runs remaining times con= >stellation is rotating as shown in fig url: https://decibel.ni.com/content/= >servlet/JiveServlet/showImage/105-32337-135325/Constellation.jpg . >>=20 >> q1. what are the possible causes for constellation rotation? > >These are the steps i followed. > >Step 1. Frequency offset correction (value from step 4) >Step 2. Match filtering=20 >Step 3. Automatic Gain control >Step 4. Frequency Offset estimation (FFT Based)=20 >Step 5. Timing recovery (based on gardener algorithm) >Step 6. Fine tuning or removing small offsets in frequency (PLL)=20
Is this PLL actually locking phase or just removing small offsets in frequency? If it's not locking phase, the constellation will rotate.
>Step 7. Demaping=20
Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
On Thu, 12 Mar 2015 04:43:00 -0700, Eshwar varma wrote:

> On Thursday, March 12, 2015 at 4:59:41 PM UTC+5:30, Eshwar varma wrote: >> I implemented a qpsk demodulator on NI fpga . When i run the code iam >> getting correct constellation one out of 4 succesive runs remaining >> times constellation is rotating as shown in fig url: >> https://decibel.ni.com/content/servlet/JiveServlet/
showImage/105-32337-135325/Constellation.jpg
>> . >> >> q1. what are the possible causes for constellation rotation? > > These are the steps i followed. > > Step 1. Frequency offset correction (value from step 4) > Step 2. Match filtering > Step 3. Automatic Gain control > Step 4. Frequency Offset estimation (FFT Based) > Step 5. Timing recovery (based on gardener algorithm) > Step 6. Fine tuning or removing small offsets in frequency (PLL) > Step 7. Demaping
It's not clear from your image how the constellation is rotating. If the constellation is rotated then the phase is wrong; if the constellation is rotating then the phase error is constantly changing, which probably means the frequency is wrong. By "1 out of four runs" do you mean that one out of four bits are correct, or do you mean that the frequency lock seems to work one out of four times? If it's the former, then I would suspect that you're trying to decode DQPSK as QPSK, or visa-versa. If the latter, then something in your frequency loop isn't working correctly. Could you expand on the algorithm you're using for frequency offset estimation and correction? Are you doing something to detect the carrier _phase_ and correct it, or just the frequency -- if just frequency, then that may be your issue. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
On Thu, 12 Mar 2015 19:04:51 +0000, Eric Jacobsen wrote:

> On Thu, 12 Mar 2015 04:29:37 -0700 (PDT), Eshwar varma > <eshwar93.india@gmail.com> wrote: > >>I implemented a qpsk demodulator on NI fpga . When i run the code iam >>getti= >>ng correct constellation one out of 4 succesive runs remaining times >>const= >>ellation is rotating as shown in fig url: >>https://decibel.ni.com/content/se= >>rvlet/JiveServlet/showImage/105-32337-135325/Constellation.jpg . >> >>q1. what are the possible causes for constellation rotation? > > > Oops, the page can't be found Sorry, the page you requested can't be > found. You can go back and try again, or start again at home. > > > Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
Maybe it got truncated? Try this: http://tinyurl.com/kgrfoks. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
On Thu, 12 Mar 2015 15:33:18 -0500, Tim Wescott
<seemywebsite@myfooter.really> wrote:

>On Thu, 12 Mar 2015 19:04:51 +0000, Eric Jacobsen wrote: > >> On Thu, 12 Mar 2015 04:29:37 -0700 (PDT), Eshwar varma >> <eshwar93.india@gmail.com> wrote: >> >>>I implemented a qpsk demodulator on NI fpga . When i run the code iam >>>getti= >>>ng correct constellation one out of 4 succesive runs remaining times >>>const= >>>ellation is rotating as shown in fig url: >>>https://decibel.ni.com/content/se= >>>rvlet/JiveServlet/showImage/105-32337-135325/Constellation.jpg . >>> >>>q1. what are the possible causes for constellation rotation? >> >> >> Oops, the page can't be found Sorry, the page you requested can't be >> found. You can go back and try again, or start again at home. >> >> >> Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com > >Maybe it got truncated? Try this: http://tinyurl.com/kgrfoks.
That worked. No idea what's going on there, as it's not clear what's going on. That appears to be more of a cartoon than a data plot. Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
On Thursday, March 12, 2015 at 4:59:41 PM UTC+5:30, Eshwar varma wrote:
> I implemented a qpsk demodulator on NI fpga . When i run the code iam getting correct constellation one out of 4 succesive runs remaining times constellation is rotating as shown in fig url: https://decibel.ni.com/content/servlet/JiveServlet/showImage/105-32337-135325/Constellation.jpg . > > q1. what are the possible causes for constellation rotation?
@ tim 1. frequency lock is working one out of four times. 2. The pll in step 6 removes small offsets . From your comments i understood that constellation rotation is due to coarse (step 1 , 4) and fine (step 6) frequency offset estimation. Am i correct. Demodulation is done at base band. Coarse Frequency Offset : Estimation : I used FFT based frequency offset estimation. firstly i raised input signal to the power of four and then calculated 8192 FFT and i searched for the peak and calculated frequency from bin value and divided frequency value by 4. Correction : Let S(t)= s(t)*e^iwt Where S(t) is incoming signal at the input of the receiver , s(t) is original signal transmitted and e^iwt is the offset added in channel. To correct frequency offset i multiplied incoming signal with same frequency offset but opposite frequency. s(t) = S(t) * e^-iwt . Fine Frequency Offset Estimation (DD PLL) : It removes small frequency offsets. The incoming signal is complex IQ signal i calculated arc tan and compared with ideal phase values (of symbol Map) and i calculated error by subtracting phase of hard decisioned symbol from phase of incoming signal. I applied phase error to a loop filter . On next iteration incoming signal phase (arc tan )is subtracted with phase error.
Eshwar varma <eshwar93.india@gmail.com> writes:

> On Thursday, March 12, 2015 at 4:59:41 PM UTC+5:30, Eshwar varma wrote: >> I implemented a qpsk demodulator on NI fpga . When i run the code >> iam getting correct constellation one out of 4 succesive runs >> remaining times constellation is rotating as shown in fig url: >> https://decibel.ni.com/content/servlet/JiveServlet/showImage/105-32337-135325/Constellation.jpg >> . >> >> q1. what are the possible causes for constellation rotation? > > @ tim > > 1. frequency lock is working one out of four times. > 2. The pll in step 6 removes small offsets . > > From your comments i understood that constellation rotation is due to coarse (step 1 , 4) and fine (step 6) frequency offset estimation. Am i correct. > > Demodulation is done at base band. > > Coarse Frequency Offset : > > Estimation : > I used FFT based frequency offset estimation. firstly i raised input signal to the power of four and then calculated 8192 FFT and i searched for the peak and calculated frequency from bin value and divided frequency value by 4. > > Correction : > Let > S(t)= s(t)*e^iwt > Where S(t) is incoming signal at the input of the receiver , s(t) is original signal transmitted and e^iwt is the offset added in channel. > To correct frequency offset i multiplied incoming signal with same frequency offset but opposite frequency. > s(t) = S(t) * e^-iwt . > > > > Fine Frequency Offset Estimation (DD PLL) : > > It removes small frequency offsets. > > The incoming signal is complex IQ signal i calculated arc tan and compared with ideal phase values (of symbol Map) and i calculated error by subtracting phase of hard decisioned symbol from phase of incoming signal. I applied phase error to a loop filter . On next iteration incoming signal phase (arc tan )is subtracted with phase error. >
I haven't followed this thread too closely, and Tim, forgive me if I'm stepping on you, but Eshwar, you do know that QPSK demodulation, without some sort of synchronization (e.g., a known frame preamble), has an inherent 90 degree ambiguity? -- Randy Yates Digital Signal Labs http://www.digitalsignallabs.com
On Thu, 12 Mar 2015 23:22:21 +0000, Eric Jacobsen wrote:

> On Thu, 12 Mar 2015 15:33:18 -0500, Tim Wescott > <seemywebsite@myfooter.really> wrote: > >>On Thu, 12 Mar 2015 19:04:51 +0000, Eric Jacobsen wrote: >> >>> On Thu, 12 Mar 2015 04:29:37 -0700 (PDT), Eshwar varma >>> <eshwar93.india@gmail.com> wrote: >>> >>>>I implemented a qpsk demodulator on NI fpga . When i run the code iam >>>>getti= >>>>ng correct constellation one out of 4 succesive runs remaining times >>>>const= >>>>ellation is rotating as shown in fig url: >>>>https://decibel.ni.com/content/se= >>>>rvlet/JiveServlet/showImage/105-32337-135325/Constellation.jpg . >>>> >>>>q1. what are the possible causes for constellation rotation? >>> >>> >>> Oops, the page can't be found Sorry, the page you requested can't be >>> found. You can go back and try again, or start again at home. >>> >>> >>> Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com >> >>Maybe it got truncated? Try this: http://tinyurl.com/kgrfoks. > > That worked. No idea what's going on there, as it's not clear what's > going on. That appears to be more of a cartoon than a data plot.
It's not terribly useful, no. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com