hi molly,

regarding making a large FFT from small FFT's:

as jason pointed out, there's a way to compute a million point spectrum
from lots of small FFT's.
the technique jason described is to implement a course channelization
polyphase filter bank spectrometer to divide the band into 1024 sub-bands,
and then implement a fine channelizer FFT or PFB to divide each of the
sub-bands up into another 1024 channels.
jason also pointed out this technique results in scalloping.

there's also a way to compute a 1M point FFT without scalloping,
mathematically identical to a 1M point FFT,
but composed of 2048  1Kpoint FFT's:
a) fill a 1024 by 1024 complex array with 2^20 complex points
b) do 1024 1K point FFT's on the columns
c) multiply all million points by twiddle factors  (complex coefficients).
d) do 1024 1K point FFT's on the rows

we used this technique for serendip 3 and 4 seti spectrometers.

there are several variations on this theme of computing large FFT's from
small ones -
i can dig probably up some references if you want...

but i think danny prices and my suggestion of shipping raw ADC samples from
your roach2 to a CPU/GPU for spectral analysis
(done in floating point, easy to implement), will make your life more
enjoyable.
there's some good casper open source code for FPGA/GPU spectrometers...

best wishes,

dan


On Mon, Mar 9, 2020 at 11:47 PM Jason Manley <[email protected]> wrote:

> On FPGAs, ~million channel spectrometers are typically built by doing a
> 1024ch PFB, followed by a matrix transpose (to collect 1024 samples of a
> single channel together) and another FFT. Mostly, you'll find you run out
> of memory if you try to do a million-channel FFT directly on an FPGA.
>
> There are implications for this 2-D approach, though. If you use a
> critically-sampled filterbank in the first stage, your channels cross-over
> at -6dB, and so if you input a signal near this intersection point, you'll
> get some fraction of the power in each of the two adjacent channels. After
> you then do a second FFT on these two channels, you get a spectrum that has
> some power in one channel, and also power in a channel 1024 channels later.
> So it now looks like you've got two CW signals going in, 1024 channels
> apart, even if you only actually had one CW tone.
>
> There was a million channel spectrometer built this way for a ROACH1
> tutorial at the 2009 CASPER workshop. That used to live on the CASPER SVN
> server, but is no longer maintained. On a ROACH2, with about 1GHz
> bandwidth, I'd expect you might possibly achieve something closer to 16M
> channels, if you wanted (4k by 4k). No doubt this won't work in modern
> Simulink toolflows, but it might be a useful reference... try here:
> https://casper.ssl.berkeley.edu/svn/trunk/projects/roach_mspec/
>
> Jason Manley
> DSP Manager
> SKA-SA
>
> Cell: +27 82 662 7726
> Work: +27 21 506 7300
>
> > On 10 Mar 2020, at 08:23, James Smith <[email protected]> wrote:
> >
> > Hello Molly,
> >
> > We have done something broadly similar using ROACH2 and katADC, but only
> 1024 channels:
> >
> https://github.com/ska-sa/AVNRoachGateware/tree/master/WideBandSpectrometer
> >
> > What frequency are you looking at? The only thing I'm thinking is that
> you might struggle to get the design to meet timing if you're clocking the
> board too fast.
> >
> > Shout if you get stuck.
> >
> > Regards,
> > James
> >
> >
> > On Mon, Mar 9, 2020 at 8:34 PM Molly Smith <[email protected]> wrote:
> > Hello,
> >
> > I'm new to CASPER and am trying to implement a million channel
> spectrometer on ROACH2 with the katADC. Does anyone know of any useful
> resources or has done something similar?
> >
> > I have experience using Vivado for newer FPGA development and am
> comfortable with Verilog & VHDL. I'm not familiar with the Simulink/ISE
> workflow and have been relying on the tutorials to come up to speed.
> >
> > I'm currently trying to modify Tutorial 3 (wideband spectrometer) to use
> the katADC instead.
> >
> > Thanks,
> > Molly
> >
> > --
> > 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/ad7c8afb-5775-401a-b53f-e769ba5d53e1%40lists.berkeley.edu
> .
> >
> > --
> > 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/CAG67D35z5XjBi4mu1s8e7EqCKnnV3NDf7r4UUT%2BQHr9LfF6EkQ%40mail.gmail.com
> .
>
> --
> 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/8C7473F8-95E1-4A6D-A2E5-E7A4A314EE3D%40ska.ac.za
> .
>

-- 
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/CAGHS_vHvjkyQ5gbzw%2B8R4Lz-awj%3DZ3%2BKmfeut%2Byp-4sB8nN%3D2g%40mail.gmail.com.

Reply via email to