Roach Ultimate Pulsar Processing Instrument (RUPPI)
Introduction
The
RUPPI is developed to upgrade from IBOB's and BEE2 in the WUPPI system to the ROACH. It is a hardware which was developed from reconfigurable off-the-shelf hardware platforms (ROACH) and software tools that allow deployment of astronomical signal processing systems. We built a single design that was put together all the designs form the WUPPI system. One of the main applications is upgrading to ROACH. The main difference between WUPPI and
RUPPI would be the hardware they used and the data acquisition machine
RUPPI uses (cicada2).
Project Goal
The goal of this project is to upgrade the WUPPI system with ROACH boards which can act as a pulsar machine for observations using the 43m telescope.
RUPPI User's Guide
The Roach Ultimate Pulsar Processing Instrument is a backend hardware and has a custom FPGA.
RUPPI is implemented using the custom "Gateware" that is compiled and loaded into the FPGA's.
RUPPI's specifications are:
- Full Stokes parameters available
- Frequency and time down sampling
User defined parameters
When using
RUPPI, there are quite a few parameters that you can change to affect the way that
RUPPI takes data. The vast majority of these parameters are passed to
RUPPI (or the data acquisition software) by defining or setting FITS-header-like keyword/value pairs in a shared memory on "TOFU", the data acquisition machine. But when the whole system is moved to the 43m telescope we will be changing the server to "cicada2".
RUPPI software user's guide
Below are the instructions to get things up and running. This documentation is from Shilpa Bollineni and Glen Langston.
We donot have a
RUPPI interpreter setup like WUPPI. Therefore any change in the parameters or with loading the designs has to be done manually on the xterm windows.
A - Try communicating with roach via telnet
1. Open a xterm window and connect to tofu. Login as yourself, and ping roach with the command:
[user@tofu ~]$ ping 169.254.128.42
PING 169.254.128.41 (169.254.128.42) 56(84) bytes of data.
64 bytes from 169.254.128.42: icmp_seq=1 ttl=64 time=0.173 ms
64 bytes from 169.254.128.42: icmp_seq=2 ttl=64 time=0.123 ms
64 bytes from 169.254.128.42: icmp_seq=3 ttl=64 time=0.115 ms
169.254.128.42 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 5000ms rtt min/avg/max/mdev = .097/0.123/0.173/0.026 ms
This implies that the communication with the roach is good.
B - Open the xterm/console window to use for the ruppi software
1. Open a xterm window and connect to tofu. Login as yourself, and source the wuppi startup file. The WUPPI and RUPPI uses the same shared.
user@tofu ~]$ source /opt/64bit/wuppi/wuppi.csh
You should do that in each xterm that you will be using. Source wuppi.csh or wuppi.bash as appropriate for your login shell.
2. Programming the ROACH. First we have to make sure that the required bof file is copied into the roach network.
a) Open ipython on a ssh terminal in tofu and transfer the use the following commands to program command
[user@tofu ~]$ ipython
Python 2.5.1 (r251, Oct 1 2007, 12:04:58)
Type "copyright", "credits" or "license" for more information.
IPython 0.9.1 -- An enhanced Interactive
Python. ? -> Introduction and overview of IPython's features.
%quickref -> Quick reference. help -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.
In [1]: import corr
In [2]: fpga=corr.katcp_wrapper.FpgaClient('169.254.128.42',7147)
note: 169.254.128.42 is the IP address of the roach and 7147 is the KATCP port.
In [3]: fpga.listbof() Out[3]: ['tut2_in_1ppstest_2010_Apr_25_2244.bof',
'parkes10may4mdl_2010_May_03_2139.bof', ...................................']
In [4]: fpga.progdev('filename.bof')
Out[4]: 'ok'
Now the bof file is running in the ROACH.
b) Go to part D below to start the ruppi monitor software
c) To exit out of this, press CTRL+D, then type exit
Here is the ROACHUser'sGuide.
C - Open the putty window to check the 10gig packet flow
Log into TOFU as root and give the command
[root@cicada2]$ tcpdump -i eth2 (the response when the packets are flowing)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 96 bytes
10:07:24.584486 IP 192.168.3.14.10002 > cicada2_10.10002: UDP, length 4096
10:07:24.626416 IP 192.168.3.14.10002 > cicada2_10.10002: UDP, length 4096
10:07:26.052479 IP 192.168.3.14.10002 > cicada2_10.10002: UDP, length 4096
36 packets captured 37 packets received by filter 0 packets dropped by kernel
root@tofu]$ tcpdump -i eth2 (the response when the packets are not flowing)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening
on eth2, link-type EN10MB (Ethernet), capture size 96 bytes.
D - Open the putty window to start the 10gig data monitor
We have worked with different designs for which we have different methods of 10Gbe data transfer and data monitoring.
1. RUPPI million spectrometer design procedure:
open a ssh terminal on tofu and execute the following python script to see the spectrum
python2.5 roach_original.py
Note: a. Do not have the scale of the graph set to log format.
b. The script file roach_original_1k.py is available in the directory /users/glangsto.
2. Parkes Spectrometer design procedure:
This design has the 1SFA packet format feature incorporated into it. Spectra of the RUPPI million Spectrometer:
After you are done with step B and we are sure about the .bof file loaded in the FPGA.
A step by step procedure for the RUPPI instrument with parkes spectrometer is available at RUPPIDataTakingGuide.