Tutorial_Wideband_Spec - david-macmahon/wiki_convert_test GitHub Wiki
Tutorial 3: Wideband Spectrometer
Authors: J. Manley and D. Price (Version 1)
Expected completion time: 2 hours
A spectrometer is something that takes a signal in the time domain and converts it to the frequency domain. In digital systems, this is generally achieved by utilising the FFT (Fast Fourier Transform) algorithm. However, with a little bit more effort, the signal to noise performance can be increased greatly by using a Polyphase Filter Bank (PFB) based approach.
When designing a spectrometer for astronomical applications, it's important to consider the science case behind it. For example, pulsar timing searches will need a spectrometer which can dump spectra on short timescales, so the rate of change of the spectra can be observed. In contrast, a deep field HI survey will accumulate multiple spectra to increase the signal to noise ratio. It's also important to note that “bigger isn't always better”; the higher your spectral and time resolution are, the more data your computer (and scientist on the other end) will have to deal with. For now, let's skip the science case and familiarise ourselves with an example spectrometer.
In this tutorial, we will build a 400MHz bandwidth, 2048 channel, PFB based spectrometer on the ROACH. You'll need to have done Tutorial 1, 2 and the iADC tutorial . You should also have installed python, iPython, corr, aipy, numpy and pylab. As far as hardware goes, you'll need:
- a ROACH board;
- an iADC, which should be connected to ZDOK0 on the ROACH; and
- a clock source, such as a signal generator, which should be connected to clk_i on the iADC.
You'll need to be familiar with the basic concepts of sampling, have a solid understanding of what a Fourier transform is, and have a vague idea of what a FFT is. A good reference is Smith's free online DSP guide (at http://www.dspguide.com/); in particular, have a read of chapters 3, 8 and 12.