Skip to content

Conversation

@noonafter
Copy link

@noonafter noonafter commented May 25, 2025

Feature Update: Configurable Decimate Delay in FIR PFB Channelizer

I've enhanced the FIR polyphase filter bank (PFB) channelizer to support user-defined decimator delays, enabling flexible sample time shifting for timing recovery applications. Key improvements include:

  1. Added M configurable delay options (where M=number of channels)
  2. Implemented comprehensive test cases verifying all M delay configurations
  3. Maintained backward compatibility by set default delay=1 (equivalent to firpfbch_crcf_set_decimate_delay(q, 1)).

Implementation Notes:

The original implementation represents a special case when delay=1. The new architecture preserves this behavior while expanding functionality through:

// Updated delay configuration interface
firpfbch_crcf_set_decimate_delay(q, user_defined_delay);

Revised FFT Input Order Explanation

Regarding the author's note in firpfbch.proto.c about reversed FFT inputs:

// execute filter outputs, reversing order of output (not sure why this is necessary)

This reversal is fundamentally tied to the delay compensation mechanism when using FFT instead of IFFT.

For a channelizer decimator with delay n₀ samples, the phase compensation mechanism differs between IFFT/FFT implementations(the two are equivalent):

IFFT-based implementation requires: Right-circular shift input by n₀

FFT-based implementation (like ours) requires:

  1. Reverse input order
  2. Left-circular shift by (n₀-1)

In our original implementation (delay n₀=1 special case):

IFFT requires 1-sample right shift

FFT equivalent needs 0 left shift after reversal (explaining the reversed order)

Practical Benefits of Configurable Delay

As emphasized by Fredric J. Harris in Digital Receivers and Transmitters Using Polyphase Filter Banks for Wireless Communications:

"Using the processing origin to shift the sample time relative to the underlying modulation epochs offers fine grain time offsets equal to 1% of symbol interval without the need for additional interpolation."

Future Roadmap

This pattern could extend to:

  • Rational oversampled channelizers (firpfbchr)
  • Half-band channelizers (firpfbch2)

Would appreciate your guidance on these implementation decisions.

@noonafter noonafter changed the title firpfbch: enhanced the channelizer to support user-defined delays firpfbch: enhanced the channelizer to support user-defined decimate delays Jun 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant