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

