Astro FFT

Astronomical FFT processing system

Introduction

This is a specification for the Radio Astronomy FFT processing system (AstroFFT). Signals received from the Radio Telescope need to be processed in order to pick out the signature spectrum from the large level of noise. This requires processing large amounts of data at a fast real-time rate, integrating the results over a long period and storing the results in data files that can be further processed by researchers.

Processing System Specification

The system consists of a 4u high 19inch rack-mount processing unit with external monitor, keyboard and mouse.

bfft.gif

The processing system consists of a dual Pentium III host computer system with two FPGA based FFT processing engines mounted in a 19inch rack case. Each FPGA processing engine has two analogue and one digital clock input. The system can be linked to other systems by means of a 10/100 BaseT Ethernet network interface. The host system has a display, keyboard and mouse for local operation and maintenance. It is possible to operate the unit locally or remotely via the network interface.

Most of the high speed processing is performed by the FPGA computer engines. The host system is responsible for overall system control, low speed data post processing and data storage and transfer.

The host runs the Linux operating system and provides the full features of this system including the ability for users to develop applications to control the system and/or process the data. However, the system can also be used as a stand-alone black box system controlled from another computer through the network interface.

Processing Engine Specification

The system consists of two separate FFT processing engines implemented on two separate FPGA based hardware boards. Each processing engine  has two Analogue to Digital samplers, feeding into a large FPGA and is connected to the PCI bus of the host computer.

In order to achieve the high number of frequency sample outputs required an analogue quadrature mixer is employed, prior to the FPGA processing engine, to convert the telescopes 25Mhz bandwidth signal into two signals in quadrature. The quadrature mixer is not required when 2048 frequency samples are required. The two quadrature signals are fed to the two analogue to digital samplers.

bfftengine

Each processing engine has the following features:

clock.gif

FFT Algorithm

The FFT engine's internal data resolution is a minimum of 12 bits for each of the real and imaginary components. Adaptive scaling is used in the FPGA to improve the bit resolution of the overall FFT process. It uses a radix-4 algorithm.

The algorithm uses two's complement fixed point arithmetic. Values are thus in the range +-0.9999. In all cases where bits of data are discarded (fixed point multiplications and scaling of the data) the value of the data is rounded to the nearest value. The radix-4 butterfly operations yield higher resolution (number of bits) results. These results are either scaled down by 4 or the upper bits will be ignored depending on the adaptive scaling's prediction.

The actual adaptive scaling system is as follows: On the first FFT pass the radix-4 butterfly results are divided by 8. Each butterfly result, real and imaginary after scaling, is tested to see if its magnitude is greater than or equal to 0.125. If any result is greater than or equal to this then the butterfly results of the next pass will be divided by 8. If no result is greater than or equal to 0.125 then the butterfly results of the next pass will not be scaled, instead the top 3 bits will be discarded. On each divide by 8 scaling an overall FFT scaling flag is incremented to indicate the scaling of the resultant data.

FFT Basic Mode Functionality

The FPGA processing engine can be able to be set into one of a number of modes as listed below.

FFT Mode: In this mode a single ATD convertor samples a single analogue data stream at 50Mhz. The ATD samples are fed into the real inputs of a 4096 point FFT using fixed point math. The FFT generates 4096 complex frequency samples. The following integrator will integrate all 4096 samples although only the first 2048 are usefull. The magnitude of each complex frequency sample, formed by squareing the real and imaginary parts separately and then adding them, is added to an intergrating buffer. After a given number of FFT runs have been processed and added to the integrator the integrated results are passed to the host.

QFFT Mode: In this mode the twin ATD convertors sample the two analogue data streams at 25Mhz. The ATD samples are fed into the real and imaginary inputs of a 4096 point FFT using fixed point math. The FFT generates 4096 complex frequency samples. The following integrator integrates all of the 4096 samples separately. The magnitude of each complex frequency sample, formed by squareing the real and imaginary parts separately and then adding them, is added to the intergrating buffer. After a given number of FFT runs have been processed and added to the integrator the integrated results are passed to the host.

RFFT Mode: In this mode a single ATD convertor samples the single analogue data stream at 50Mhz. Alternate ATD samples are fed into the real and imaginary inputs of a 4096 point FFT using fixed point math. The FFT will generate 4096 mixed complex frequency samples. A following post processing filter takes these samples and produces the genuine 4096 frequency samples. The following integrator takes all of the 4096 samples. The magnitude of each complex frequency sample, formed by squareing the real and imaginary parts separately and then adding them, is added to the intergrating buffer. After a given number of FFT runs have been processed and added to the integrator the integrated results are passed to the host.

Analogue Mode: In this mode both ATD convertors sample at 50Mhz. The 14 bit samples are bit extended with 0's at the lower end to form 16 bit values. The two 16 bit values are combined into a 32 bit value and fed to the host. The FPGA also calculates the RMS power and the number of ATD peak values of each data stream and passes this to the host with each set of samples.

Processing engine configuration parameters

Parameter

Setting

Description

Clock

0 or 1

Internal clock or external clock

Sample frequency

0 through 5

50Mhz -> 1.5625 MHz

Mode

0,1, 2, 3, 4

FFT, QFFT, CFFT, RFFT, Analogue Mode

Number of Cycles

<number>

This programs how many FFT's will be averaged within the FPGA before a data set is sent to the host.

Run

0 or 1

Start running

Clock

0 or 1

Internal clock or external clock

System Software

The FFT system software consists of a main control process, Astrofft, and two user interface applications. The main control process, Astrofft,  is responsible for managing the FPGA processing engines and data storage. The user interface applications enable users to control the this process.
The Astrofft process starts up when the system is booted and will run continually while the system is in operation. It is responsible for booting and controlling the FPGA processing engines and performing data post processing.

The Astrofft process provides a network socket interface. This enables both local user interface applications and remote computers to send commands and receive data to/from the Astro FFT system. ASCII text based commands are supported that can be sent via a Telnet session or a computer program on the remote computer.

The Astrogui process provides a graphical user Interface to the system. This X-Windows based application allows users to control the FFT system and view interim results.

The main control parameters are as follows:

Parameter

Setting

Description

Clock

0 or 1

Internal clock or external clock

Sample Frequency

0 through 5

50Mhz -> 1.5625 MHz

Mode

0,1, 2, 3, 4

FFT, QFFT, CFFT, RFFT, Analogue Mode

Number of Cycles

<number>

This programs how many FFT's will be averaged within the FPGA before a data set is sent to the host.

Title

String

Title for next run

Base File Name

String

Base File name for next run

File Format

Binary or ASCII

The File format. Either 32bit binary values or ASCII values

Average Number

1 -> n

Sets the number of FPGA averaged results that are further averaged in the software processing.

Number of samples

1 -> 8.64 million

Total number of averaged FFT samples collected in the run. Time from 1s to 10 days.

Run

0 or 1

Start or stop the run

Pause

0 or 1

Pause the storage of data in the file. Saves a time mark describing the paused period.

The system will perform a complete run based on the parameters setup. Information on the run and the raw sample data from each channel is stored into three files on the systems disk drive. The information file contains information on the parameters used and the run start and stop times. The data files contain the data in binary or ASCII formats for each channel. The ASCII format will consists of lines each storing a complete FFT average output with comma separated sample values.

The data files are stored in the /data directory which can be mounted from a remote system using either NFS or Microsoft Windows SMB protocols. This allows remote systems to access the data from the processing runs.