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.

Reply via email to