A proccessing cycle lasts about 1.2 seconds but can be up to 2 seconds. Cycles can be consecutive.
The frequency of beam rotation will normally be between 437 and 477 kHz but can be down to 177 kHz for ions. 477Khz is about a 2us period.
There can be up to 25 bunches of particles flying around the ring.
The ADC sample rate will be 125MHz (8ns period).
The amount of data per second after integration per bunch is: (437000 * 8) = 3.33 MBytes/sec.
The size of a typical chunk of data, per bunch would be about: (437000 * 8 * 0.2) = 0.66 MBytes.
FPGA Firmware
One thing we will have to consider is how fast we need to get at the data in memory. CERN will want to be able to take out a selection of data before the next machine cycle. With the paging registers, the table indirection (Cycle Timing to Data) and the fact that they may only want 6bytes here and there over a PCI bus this may be slow. We thus may need to add a data gathering factility in the FPGA itself such as a function that would DMA every 21st set of 6byte samples stating from a given address to the host.
An option on the data, as we have more memory that the original spec, is to store data timing information with the data itself rather than have a seperate table. We could packetise the data with a simple header containing the channel number and time followed by 21 sets of Sigma/DeltaX/DeltaY data. This would make finding a particular time a bit harder/slower but we could store more acurate times on the data.
Some of the requests for data involve calculating the mean of the data values over a number of particle bunch orbits. It might be worth implementing this in the FPGA on the fly.