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]> Sent: Friday, February 4, 2022 7:10 AM To: casper <[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: [Screenshot from 2022-02-04 08-34-24.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]" 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/4fd4163543144ce99a76194c9bd462e5%40jpl.nasa.gov.

