Skip to main content
added 1198 characters in body
Source Link

An FFT-based coarse frequency acquisition block is being tested in GNU Radio. The algorithm used can be found on the GOES satellite user manual and is summarized in the figure below. goes-acquisition The algorithm works by:

  1. Carrier detection by absolute-law, square-law or fourth-power law. Square law detector involves squaring the IQ signal while fourth-power law uses the fourth-power of the IQ signal.
  2. Finding the FFT
  3. Averaging successive FFT sequences
  4. Finding the peak by looking at 8 adjacent bins with the highest magnitude.

I have been able to implement the algorithm in GNU Radio, at least for BPSK. The algorithm is able to recover the carrier at all offset scenarios (offset < 10% symbol rate, offset ~ symbol rate, offset > symbol rate). fft-acquisition-gnuradio fft-acquisition-bpsk

According to the GOES manual, the same algorithm should work for OQPSK, and I assume by extension, QPSK. However, the carrier derived by the algorithm for the case of QPSK is pretty bad, especially in low-SNR scenarios.

I have two questions

  1. Are there any literature sources as to how the frequency detectors (square, fourth-power) work? I have basically implemented the algorithms but I do not fully understand their mathematical derivations.

  2. Is there a more effective frequency detector for QPSK apart from square/fourth-power/absolute laws that could remedy the situation?

Regards, Moses.

EDIT

Disclaimer: Using a fouth-law as proposed by @DanBoschen resulted in expected BER performance. For all intents and purposes, the answer is already accepted. But, I have observed some behavior of the nature of FFT relating to this question. I figured there wouldn't be any need to open a new question since we are already here.

In the flowgraph, the sample rate used is 8Mhz. The fourth-law-derived carrier can be tracked from -4Mhz to +4Mhz. There seems to be an "FFT ambiguity" when the offset frequency is above $\frac{1}{8}$-th the sample rate i.e anything above 1Mhz. Taking, for example, an offset of 1.5Mhz. The fourth-law detector will create a carrier at 6Mhz, which will be wrapped to -2Mhz in the second Nyquist zone. Dividing this by 4 results into an offset of -0.5Mhz, instead of 1.5Mhz, as shown in the figure below (derived carrier in green).

We can solve this problem by simply using a sample rate which is 8x the maximum offset for the fouth-law or 4x the maximum offset for the square-law. But, of course, that's not an ideal solution. I was wondering if there are better ways.

fft-ambiguity

An FFT-based coarse frequency acquisition block is being tested in GNU Radio. The algorithm used can be found on the GOES satellite user manual and is summarized in the figure below. goes-acquisition The algorithm works by:

  1. Carrier detection by absolute-law, square-law or fourth-power law. Square law detector involves squaring the IQ signal while fourth-power law uses the fourth-power of the IQ signal.
  2. Finding the FFT
  3. Averaging successive FFT sequences
  4. Finding the peak by looking at 8 adjacent bins with the highest magnitude.

I have been able to implement the algorithm in GNU Radio, at least for BPSK. The algorithm is able to recover the carrier at all offset scenarios (offset < 10% symbol rate, offset ~ symbol rate, offset > symbol rate). fft-acquisition-gnuradio fft-acquisition-bpsk

According to the GOES manual, the same algorithm should work for OQPSK, and I assume by extension, QPSK. However, the carrier derived by the algorithm for the case of QPSK is pretty bad, especially in low-SNR scenarios.

I have two questions

  1. Are there any literature sources as to how the frequency detectors (square, fourth-power) work? I have basically implemented the algorithms but I do not fully understand their mathematical derivations.

  2. Is there a more effective frequency detector for QPSK apart from square/fourth-power/absolute laws that could remedy the situation?

Regards, Moses.

An FFT-based coarse frequency acquisition block is being tested in GNU Radio. The algorithm used can be found on the GOES satellite user manual and is summarized in the figure below. goes-acquisition The algorithm works by:

  1. Carrier detection by absolute-law, square-law or fourth-power law. Square law detector involves squaring the IQ signal while fourth-power law uses the fourth-power of the IQ signal.
  2. Finding the FFT
  3. Averaging successive FFT sequences
  4. Finding the peak by looking at 8 adjacent bins with the highest magnitude.

I have been able to implement the algorithm in GNU Radio, at least for BPSK. The algorithm is able to recover the carrier at all offset scenarios (offset < 10% symbol rate, offset ~ symbol rate, offset > symbol rate). fft-acquisition-gnuradio fft-acquisition-bpsk

According to the GOES manual, the same algorithm should work for OQPSK, and I assume by extension, QPSK. However, the carrier derived by the algorithm for the case of QPSK is pretty bad, especially in low-SNR scenarios.

I have two questions

  1. Are there any literature sources as to how the frequency detectors (square, fourth-power) work? I have basically implemented the algorithms but I do not fully understand their mathematical derivations.

  2. Is there a more effective frequency detector for QPSK apart from square/fourth-power/absolute laws that could remedy the situation?

Regards, Moses.

EDIT

Disclaimer: Using a fouth-law as proposed by @DanBoschen resulted in expected BER performance. For all intents and purposes, the answer is already accepted. But, I have observed some behavior of the nature of FFT relating to this question. I figured there wouldn't be any need to open a new question since we are already here.

In the flowgraph, the sample rate used is 8Mhz. The fourth-law-derived carrier can be tracked from -4Mhz to +4Mhz. There seems to be an "FFT ambiguity" when the offset frequency is above $\frac{1}{8}$-th the sample rate i.e anything above 1Mhz. Taking, for example, an offset of 1.5Mhz. The fourth-law detector will create a carrier at 6Mhz, which will be wrapped to -2Mhz in the second Nyquist zone. Dividing this by 4 results into an offset of -0.5Mhz, instead of 1.5Mhz, as shown in the figure below (derived carrier in green).

We can solve this problem by simply using a sample rate which is 8x the maximum offset for the fouth-law or 4x the maximum offset for the square-law. But, of course, that's not an ideal solution. I was wondering if there are better ways.

fft-ambiguity

s/course/coarse/
Source Link
MBaz
  • 15.4k
  • 9
  • 32
  • 46

FFT-based coursecoarse carrier recovery for QPSK

An FFT-based coursecoarse frequency acquisition block is being tested in GNU Radio. The algorithm used can be found on the GOES satellite user manual and is summarized in the figure below. goes-acquisition The algorithm works by:

  1. Carrier detection by Absoluteabsolute-law, Squaresquare-law or fourth-power law. Square law detector involves squaring the IQ signal while fourth-power law uses the fourth-power of the IQ signal.
  2. Finding the FFT
  3. Averaging successive FFT sequences
  4. Finding the peak by looking at 8 adjacent bins with the highest magnitude.

I have been able to implement the algorithm in GNU Radio, at least for BPSK. The algorithm is able to recover the carrier at all offset scenarios (offset < 10% symbol rate, offset ~ symbol rate, offset > symbol rate). fft-acquisition-gnuradio fft-acquisition-bpsk

According to the GOES manual, the same algorithm should work for OQPSK, and I assume by extension, QPSK. However, the carrier derived by the algorithm for the case of QPSK is pretty bad, especially in low-SNR scenarios.

I have two questions

  1. Are there any literature sources as to how the frequency detectors (square, fourth-power) work? I have basically implemented the algorithms but I do not fully understand their mathematical derivations.

  2. Is there a more effective frequency detector for QPSK apart from square/fourth-power/absolute laws that could remedy the situation?

Regards, Moses.

FFT-based course carrier recovery for QPSK

An FFT-based course frequency acquisition block is being tested in GNU Radio. The algorithm used can be found on the GOES satellite user manual and is summarized in the figure below. goes-acquisition The algorithm works by:

  1. Carrier detection by Absolute-law, Square-law or fourth-power law. Square law detector involves squaring the IQ signal while fourth-power law uses the fourth-power of the IQ signal.
  2. Finding the FFT
  3. Averaging successive FFT sequences
  4. Finding the peak by looking at 8 adjacent bins with the highest magnitude.

I have been able to implement the algorithm in GNU Radio, at least for BPSK. The algorithm is able to recover the carrier at all offset scenarios (offset < 10% symbol rate, offset ~ symbol rate, offset > symbol rate). fft-acquisition-gnuradio fft-acquisition-bpsk

According to the GOES manual, the same algorithm should work for OQPSK, and I assume by extension, QPSK. However, the carrier derived by the algorithm for the case of QPSK is pretty bad, especially in low-SNR scenarios.

I have two questions

  1. Are there any literature sources as to how the frequency detectors (square, fourth-power) work? I have basically implemented the algorithms but I do not fully understand their mathematical derivations.

  2. Is there a more effective frequency detector for QPSK apart from square/fourth-power/absolute laws that could remedy the situation?

Regards, Moses.

FFT-based coarse carrier recovery for QPSK

An FFT-based coarse frequency acquisition block is being tested in GNU Radio. The algorithm used can be found on the GOES satellite user manual and is summarized in the figure below. goes-acquisition The algorithm works by:

  1. Carrier detection by absolute-law, square-law or fourth-power law. Square law detector involves squaring the IQ signal while fourth-power law uses the fourth-power of the IQ signal.
  2. Finding the FFT
  3. Averaging successive FFT sequences
  4. Finding the peak by looking at 8 adjacent bins with the highest magnitude.

I have been able to implement the algorithm in GNU Radio, at least for BPSK. The algorithm is able to recover the carrier at all offset scenarios (offset < 10% symbol rate, offset ~ symbol rate, offset > symbol rate). fft-acquisition-gnuradio fft-acquisition-bpsk

According to the GOES manual, the same algorithm should work for OQPSK, and I assume by extension, QPSK. However, the carrier derived by the algorithm for the case of QPSK is pretty bad, especially in low-SNR scenarios.

I have two questions

  1. Are there any literature sources as to how the frequency detectors (square, fourth-power) work? I have basically implemented the algorithms but I do not fully understand their mathematical derivations.

  2. Is there a more effective frequency detector for QPSK apart from square/fourth-power/absolute laws that could remedy the situation?

Regards, Moses.

Source Link

FFT-based course carrier recovery for QPSK

An FFT-based course frequency acquisition block is being tested in GNU Radio. The algorithm used can be found on the GOES satellite user manual and is summarized in the figure below. goes-acquisition The algorithm works by:

  1. Carrier detection by Absolute-law, Square-law or fourth-power law. Square law detector involves squaring the IQ signal while fourth-power law uses the fourth-power of the IQ signal.
  2. Finding the FFT
  3. Averaging successive FFT sequences
  4. Finding the peak by looking at 8 adjacent bins with the highest magnitude.

I have been able to implement the algorithm in GNU Radio, at least for BPSK. The algorithm is able to recover the carrier at all offset scenarios (offset < 10% symbol rate, offset ~ symbol rate, offset > symbol rate). fft-acquisition-gnuradio fft-acquisition-bpsk

According to the GOES manual, the same algorithm should work for OQPSK, and I assume by extension, QPSK. However, the carrier derived by the algorithm for the case of QPSK is pretty bad, especially in low-SNR scenarios.

I have two questions

  1. Are there any literature sources as to how the frequency detectors (square, fourth-power) work? I have basically implemented the algorithms but I do not fully understand their mathematical derivations.

  2. Is there a more effective frequency detector for QPSK apart from square/fourth-power/absolute laws that could remedy the situation?

Regards, Moses.