hi John,

you asked about SPEAD FPGA implementations:

Jason added SPEAD to the packetized correlator.
i'm appending Jason's November 26 update on correlators,
which includes a section on SPEAD.

also, i think a recent pocket correlator, developed by Zaki,
uses SPEAD.   Zaki and Aaron have also developed code to
read and process SPEAD packets.

best wishes,

dan


Hello correlator mailing list

There have been a number of correlator developments since the last update (some 
of which you may have heard about at the CASPER workshop):
  * Switch to all ROACH design.
  * Integrated 10GbE cores into the F engines and done away with the 
complicated XAUI loopback (though this is still supported if you want this 
optimisation).
  * The X engines now output SPEAD over 10GbE natively (no more corr_tx.py on 
the PPCs and automated start/stop/sync without user intervention).
  * The X engines process contiguous frequency channels (though the old 
interleaved mode is still supported).
  * Fringe rotation and delay compensation is now fully functional.
  * Support for iADC and KATADC.

Known bugs:
  * Upon intialisation (FPGA reprogram) the ADC clock demuxes come up in 
different clock offset states (all the pocket correlators and any current 
packetised system also have this same bug). They can be up to four clock cycles 
out of sync. So you'll need to do a delay calibration every time you reinit the 
system. We have a plan to fix this and should have it ready in the next week or 
so by using the infrastructure for the existing coarse delay block.


CORR
====
The Python correlator control package, corr, has matured nicely and is in daily 
use at KAT for debugging. Although probably not deployment quality, it is a 
nice simple way to test new features and fiddle with the design. We have 
released it on PyPI herehttp://pypi.python.org/pypi/katcp. Development has 
moved out of the CASPER SVN RCS and I hope to get it into git soon. I have 
attempted to keep backwards compatibility from version 0.5.0 onwards but I am 
no longer actively working on certain configurations, so YMMV if your setup is 
different to mine. I welcome any support to add features, clean up code and fix 
bugs. We have moved to using the iniparse package for reading the config file. 
You might need to install this python package if you upgrade your corr package 
from a very early version.


SPEAD
=====
Since version 0.4.0, corr has relied on KATCP for control communications. You 
can always get the latest version of KATCP 
here:http://pypi.python.org/pypi/katcp
Experimental support for the SPEAD protocol was added in version 0.5.x and is 
now fully supported since version 0.6.0. This protocol is used for high speed 
UDP data exchange (completely separate and complimentary to the TCP/IP-based 
KATCP for control and monitoring).

SPEAD will be the native data format for all future KAT instruments and I'd encourage you 
to take a look at the spec (attached) for any future instruments you may build. It is 
highly flexible and of course all open source. SPEAD is a self-describing format suitable 
for propagating data across network links or for on-disk storage of data. It is supports 
complex structures and multidimensional arrays of such structures, including on-the-fly 
resizing and redefinition of data products along with machine and human readable 
descriptions allowing the receiver to not only reassemble, but also interpret the data 
without any additional metadata. The protocol is able to receive data from multiple 
sources simultaneously. It was designed with high efficiencies in mind and so only 
changes in data products are propagated across data links and these done with little 
header overhead. A subset of the protocol is also simple enough to implement on low-level 
logic devices such as FPGAs and 8bit microprocessors. PAPER and KAT7 are already using it 
and it will also be used for inter-node transport in AIPY. The reference implementation 
of SPEAD is still experimental but is functional. It is not yet in PyPI but you can get 
it from Simon's GIT repo:http://github.com/sratcliffe/PySPEAD   Included are a few 
examples in the "tests" directory showing you how to use it.

As a reference receiver, corr now includes two new corr_rx scripts (depending 
on your system's output configuration). They capture SPEAD heaps and stores 
them to disk in HDF5 format using existing Python libraries. It can optionally 
send realtime signal display data to another computer too, mating to an 
external package, katsdisp, for realtime signal visualisation.

FUTURE
======
Until we figure out what do with with the revision control system, I can email 
individuals the lastest ROACH model files or bitstreams if you want them. If 
you have 16 ROACH boards and a 10GbE switch, you can assemble a duplicate of 
our system to play with or scale it up or down to suit your needs. This 
reference 16 FPGA version is mostly empty (about 50% full), processing 512 
channels over 400MHz bandwidth, full stokes.  So there's lots of room to add 
features and things. It has 10GbE output and can do high speed dumps (well 
below 100ms) or up to about 1min integrations before integer overflows. Note 
that our F engines expect KATADCs. You might need to recompile for iADC and 
update the config file as appropriate.

Next year we will be adding beamformers to the X engines.


Jason



On 11/29/2010 8:12 AM, John Ford wrote:
Hi all.

Do any of you have any xilinx designs that implement SPEAD protocol
packets over 10 GbE?

John






Reply via email to