On Fri, 4 Feb 2022 at 15:04, Nikhil Mahajan <[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]> wrote: > >> >> >> On Fri, 4 Feb 2022 at 07:08, Morag Brown <[email protected]> wrote: >> >>> Hey Nikhail, >>> >>> The FFT is a Hermitian function, which means that it has the property: >>> >>> [image: 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 >>> <http://www.hyperdynelabs.com/dspdude/papers/COMPUTING%20THE%20FFT%20OF%20TWO%20REAL%20SIGNALS%20USING%20A%20SINGLE%20FFT.pdf> >>> 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]> >>> 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]" 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/CAA39X0%2B3z051d%2B%2BAB0D%3D1LHNHdOSDJp6JEYzzRXatj-ij11_qA%40mail.gmail.com >>>> <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> >>>> . >>>> >>> -- >>> 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/CAGH-0Tc%2BWk1JExurEHYFPM8MarkmTY_TnjFqPpjy2a%3D7zqxvng%40mail.gmail.com >>> <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> >>> . >>> >> -- >> 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/CAG1GKSnnp18TS5YfGmS9W5dDHyOf7GsMNjYtWVKkRrbn2GJCmw%40mail.gmail.com >> <https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAG1GKSnnp18TS5YfGmS9W5dDHyOf7GsMNjYtWVKkRrbn2GJCmw%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/CAA39X0JSeX2niz0AtuXS3Dh51LcVqf%2B6BrDSF9He3mreK3pONw%40mail.gmail.com > <https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAA39X0JSeX2niz0AtuXS3Dh51LcVqf%2B6BrDSF9He3mreK3pONw%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/CAG1GKSnhQFDh3vaHV%2B0ftP7RcFpzDUcq7K3s7scEPNLfymC_Wg%40mail.gmail.com.

