Hi Nikhil,

What you want to look for is non-critically-sampled PFBs and their inverses.  
Unfortunately they go by many names, such as PFBs, analysis/synthesis filter 
banks, WOLA filters, Channelizers, FFT Filter Banks, etc.

The issues that Jon and Matt raised are specific to critically-sampled PFBs.  
These issues can be entirely avoided by using PFBs that use oversampling.  With 
oversampled PFBs and IPFBs, it’s possible without great difficulty to get 
reconstruction with as low as 0.01dB of ripple.  Aliasing error levels that are 
120dB down are also achievable without great stress, and in rare cases, 
aliasing errors can be achieved that are 250dB down.

To do this correctly requires the correct PFB design as well as the correct 
IPFB design, and they must be matched.  Of course, if your PFB is already 
designed and you already have the data, you just have to do the best you can to 
invert it.

Regards,

Ross


> On Feb 4, 2022, at 9:52 AM, Nikhil Mahajan <[email protected]> wrote:
> 
> Hi Dave,
> 
> That sounds like the best solution here. In my case, I am lucky that the 
> analog bandpass is a lot smaller than the overall bandwidth - so the Nyquist 
> bin contained mostly noise and assuming it is zero shouldn't hurt 
> reconstruction efforts too much.
> 
> > If you want to Google the terminology, a PFB is an analysis filter bank, 
> > and the inverse is a synthesis filter bank.
> Thanks for pointing this out - I find DSP terminology confusingly named for 
> newcomers, so it helps to know what to look for!
> 
> Thanks to the CASPER group - I am quite grateful for the many helpful and 
> prompt responses!
> 
> Reconstructing imperfectly,
> Nikhil
> 
> On Fri, 4 Feb 2022 at 11:26, 'Hawkins, David W (US 334B)' via 
> [email protected] <mailto:[email protected]> 
> <[email protected] <mailto:[email protected]>> wrote:
> Hi Nikhil,
> 
>  
> 
> >> perfect reconstruction / inversion is not possible because the information 
> >> in the Nyquist bin is thrown away?
> 
>  
> 
> Correct, but imperfect reconstruction should work.
> 
>  
> 
> A real-valued signal has a Hermitian spectrum, and an FFT has a cyclic 
> response. That results in two things;
> 
> The negative frequencies are the complex-conjugate of the positive frequencies
> The frequency bin at -N/2 must be real (since that bin is also the value at 
> +N/2)
>  
> 
> So the -N/2 and N/2 channels have been corrupted/aliased by the cyclic nature 
> of the FFT … of by the sampling from the continuous Laplace domain into the 
> Z-domain … whichever way you want to think about it.
> 
>  
> 
> Given N/2 channels of a S[n], for n = 0 to N/2-1, you just need to …
> 
> Put a zero at S[-N/2]
> Populate the negative frequency channels with S*[-n] = S[n] for n 1 to N/2-1
> And maybe throw a factor of 2 or 1/2 in there somewhere for good measure …
>  
> 
> In a practical system, if the analog signal aliases about Nyquist anyways … 
> so that last channel is not that interesting. If you have interlaced ADCs, 
> then that channel gets corrupted by gain/offset errors in the ADC.
> 
>  
> 
> So … imperfect reconstruction should work just fine.
> 
>  
> 
> If you want to Google the terminology, a PFB is an analysis filter bank, and 
> the inverse is a synthesis filter bank.
> 
>  
> 
> Regards,
> 
> Dave
> 
>  
> 
> From: Jack Hickish <[email protected] <mailto:[email protected]>> 
> Sent: Friday, February 4, 2022 7:10 AM
> To: casper <[email protected] <mailto:[email protected]>>
> Subject: [EXTERNAL] Re: [casper] Inverting the Polyphase Filter Bank
> 
>  
> 
>  
> 
>  
> 
> On Fri, 4 Feb 2022 at 15:04, Nikhil Mahajan <[email protected] 
> <mailto:[email protected]>> wrote:
> 
> Hi Morag and Jack,
> 
>  
> 
> Thank you for the prompt response. It was great to learn about the Hermitian 
> trick to combine 2 real FFTs - that's very interesting.
> 
>  
> 
> So, unless I am wrong, perfect reconstruction / inversion is not possible 
> because the information in the Nyquist bin is thrown away? (I hope I am wrong)
> 
>  
> 
> I am sorry to say that I don't think you are wrong. (Though maybe we are both 
> wrong!)
> 
>  
> 
>  
> 
> Cheers,
> 
> Nikhil
> 
>  
> 
> On Fri, 4 Feb 2022 at 05:41, Jack Hickish <[email protected] 
> <mailto:[email protected]>> wrote:
> 
>  
> 
>  
> 
> On Fri, 4 Feb 2022 at 07:08, Morag Brown <[email protected] 
> <mailto:[email protected]>> wrote:
> 
> Hey Nikhail,
> 
>  
> 
> The FFT is a Hermitian function, which means that it has the property:
> 
>  
> 
> <image001.png>
> 
>  
> 
> This principle is used in the real wideband FFT to compute 2 real FFTs using 
> one complex FFT core - this 
> <https://urldefense.us/v3/__http:/www.hyperdynelabs.com/dspdude/papers/COMPUTING*20THE*20FFT*20OF*20TWO*20REAL*20SIGNALS*20USING*20A*20SINGLE*20FFT.pdf__;JSUlJSUlJSUlJQ!!PvBDto6Hs4WbVuu7!Y44aeZoQoU3wVLMKYsmyIn2Y3LAB_IckGbbemtWHONs8VE2HI6eEpsKNJv7Cy3NhfeHsjg5nVg$>
>  paper explains it well. For a detailed explanation on how the CASPER FFT 
> works specifically, Ryan Monroe's paper on Improving the Performance and 
> Resource Utilization of the CASPER FFT and Polyphase FIlterbank goes into 
> quite a lot of detail. 
> 
>  
> 
>  
> 
> Hi Mikhil, Morag,
> 
>  
> 
> You only get 32 output channels because the CASPER wideband FFT discards all 
> negative frequency components as they're just a mirror of positive frequency 
> components and aren't needed.
> 
>  
> 
> This is completely right, but to address the subtlety Mikhil raised about N/2 
> vs N/2+1 chans --
> 
>  
> 
> The CASPER FFT doesn't give you the "last" FFT bin (the one whose edge is at 
> the Nyquist frequency). This bin, like the DC bin, contains real-valued 
> output for real-valued input (since the DC bin coefficients are all 1 and the 
> Nyquist bin coefficients are +/-1), so I think the CASPER FFT could use the 
> DC bin that it does output to encode both the DC and Nyquist bin contents 
> (one in the real part, one in the imag). I'm fairly sure the CASPER FFT 
> doesn't do this but I also vaguely recall this coming up in conversation 
> before. I think the issue is not that the FFT internals don't compute the 
> relevant numbers but is simply that outputting N/2+1 channels would lead to 
> an annoying input:output data ratio. 
> 
>  
> 
> Cheers
> 
> Jack
> 
>  
> 
>  
> 
> Morag
> 
>  
> 
> On Fri, Feb 4, 2022 at 7:10 AM Nikhil Mahajan <[email protected] 
> <mailto:[email protected]>> wrote:
> 
> Dear CASPERites,
> 
>  
> 
> I am a graduate student at the University of Toronto (working with Marten van 
> Kerkwijk) and I have some raw baseband data collected using PUPPI (Arecibo) - 
> and I am on a quest to invert the polyphase filter bank. I have 32 channels 
> of complex-baseband that I would very much like to combine into a single 100 
> MHz bandwidth stream.
> 
>  
> 
> To do this, I would need to understand some of the specifics of the filter 
> bank pipeline (so that I can successfully invert each step). This is my 
> current understanding of what happened to the data I have:
> 
>  
> 
> 1. Real-valued data sampled at 200 MS/s arrives at the Casper BEE2 board.
> 
> 2. This goes through a real-input PFB implementation such as `pfb_fir_real` 
> and using a 12-tap, 64-branch polyphase filter (I have the filter 
> coefficients that were used here). This step outputs 64 streams of 
> real-valued data.
> 
> 3. Then, for the DFT step of the filterbank, the 64 real-valued streams are 
> passed through the `fft_wideband_real` block to get 32 channels of 
> complex-valued data.
> 
> 4. This is then saved to disk.
> 
>  
> 
> (I hope someone familiar with PUPPI can correct me here if I am wrong about 
> any of the above)
> 
>  
> 
> Step 3 is the step I am confused about. `fft_wideband_real` does not appear 
> to be a conventional real-input N-point FFT implementation (Else I would have 
> N/2 + 1 channels instead of just N/2). Some documentation on this block says 
> that it "computes the real-sampled Fast Fourier Transform using the standard 
> Hermitian conjugation trick". What is this standard Hermitian conjugation 
> trick? I am totally unfamiliar with this. Would I be wrong in guessing it 
> uses some sort of trick to convert 64 real numbers to 32 complex numbers and 
> then applies a regular ol' complex-valued FFT on them?
> 
>  
> 
> Thank you so much! I appreciate any and all guidance this mailing list can 
> provide.
> 
>  
> 
> Cheers,
> Nikhil Mahajan
> 
>  
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "[email protected] <mailto:[email protected]>" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAA39X0%2B3z051d%2B%2BAB0D%3D1LHNHdOSDJp6JEYzzRXatj-ij11_qA%40mail.gmail.com
>  
> <https://urldefense.us/v3/__https:/groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAA39X0*2B3z051d*2B*2BAB0D*3D1LHNHdOSDJp6JEYzzRXatj-ij11_qA*40mail.gmail.com?utm_medium=email&utm_source=footer__;JSUlJSU!!PvBDto6Hs4WbVuu7!Y44aeZoQoU3wVLMKYsmyIn2Y3LAB_IckGbbemtWHONs8VE2HI6eEpsKNJv7Cy3NhfeEfnPk7lg$>.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "[email protected] <mailto:[email protected]>" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAGH-0Tc%2BWk1JExurEHYFPM8MarkmTY_TnjFqPpjy2a%3D7zqxvng%40mail.gmail.com
>  
> <https://urldefense.us/v3/__https:/groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAGH-0Tc*2BWk1JExurEHYFPM8MarkmTY_TnjFqPpjy2a*3D7zqxvng*40mail.gmail.com?utm_medium=email&utm_source=footer__;JSUl!!PvBDto6Hs4WbVuu7!Y44aeZoQoU3wVLMKYsmyIn2Y3LAB_IckGbbemtWHONs8VE2HI6eEpsKNJv7Cy3NhfeHJUel3Cw$>.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "[email protected] <mailto:[email protected]>" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAG1GKSnnp18TS5YfGmS9W5dDHyOf7GsMNjYtWVKkRrbn2GJCmw%40mail.gmail.com
>  
> <https://urldefense.us/v3/__https:/groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAG1GKSnnp18TS5YfGmS9W5dDHyOf7GsMNjYtWVKkRrbn2GJCmw*40mail.gmail.com?utm_medium=email&utm_source=footer__;JQ!!PvBDto6Hs4WbVuu7!Y44aeZoQoU3wVLMKYsmyIn2Y3LAB_IckGbbemtWHONs8VE2HI6eEpsKNJv7Cy3NhfeE0bkl4-w$>.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "[email protected] <mailto:[email protected]>" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAA39X0JSeX2niz0AtuXS3Dh51LcVqf%2B6BrDSF9He3mreK3pONw%40mail.gmail.com
>  
> <https://urldefense.us/v3/__https:/groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAA39X0JSeX2niz0AtuXS3Dh51LcVqf*2B6BrDSF9He3mreK3pONw*40mail.gmail.com?utm_medium=email&utm_source=footer__;JSU!!PvBDto6Hs4WbVuu7!Y44aeZoQoU3wVLMKYsmyIn2Y3LAB_IckGbbemtWHONs8VE2HI6eEpsKNJv7Cy3NhfeGLE1N_zw$>.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "[email protected] <mailto:[email protected]>" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAG1GKSnhQFDh3vaHV%2B0ftP7RcFpzDUcq7K3s7scEPNLfymC_Wg%40mail.gmail.com
>  
> <https://urldefense.us/v3/__https:/groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAG1GKSnhQFDh3vaHV*2B0ftP7RcFpzDUcq7K3s7scEPNLfymC_Wg*40mail.gmail.com?utm_medium=email&utm_source=footer__;JSU!!PvBDto6Hs4WbVuu7!Y44aeZoQoU3wVLMKYsmyIn2Y3LAB_IckGbbemtWHONs8VE2HI6eEpsKNJv7Cy3NhfeE0bAkq-g$>.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "[email protected] <mailto:[email protected]>" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/4fd4163543144ce99a76194c9bd462e5%40jpl.nasa.gov
>  
> <https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/4fd4163543144ce99a76194c9bd462e5%40jpl.nasa.gov?utm_medium=email&utm_source=footer>.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "[email protected]" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAA39X0LqakcyqLfwxXrLRzrnc7nYrkfisn%3DG0q2gVpTJ3wzyRg%40mail.gmail.com
>  
> <https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAA39X0LqakcyqLfwxXrLRzrnc7nYrkfisn%3DG0q2gVpTJ3wzyRg%40mail.gmail.com?utm_medium=email&utm_source=footer>.

-- 
You received this message because you are subscribed to the Google Groups 
"[email protected]" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/6E03B783-4879-4B7D-9A6C-E6B037AD8D8E%40ieee.org.

Reply via email to