Tag Archives: VirtexU

Modular J-PET delivers data

Sometimes in research it takes a lot of effort, time and patience to get something running. But then when it runs – the satisfaction is granted.

It has been exactly 5 years since the Data Acquisition System  for the first J-PET prototype said *beep* and provided first tomography data from the scanner constructed out of plastic scintillators.

During these 5 years, we designed, constructed and eventually successfully launched  a completely new vision of PET tomography – a lightweight, modular scanner with a compact and powerful data processing system.

24 modules have 13 plastic scintillator strips and 54 SiPMs on each end. The signals they generate are registered by Artix7 based front end boards that digitize the signals and send the data to 4 data concentrators which are Virtex Ultrascale VCU108 boards from Xilinx. The entire system is controlled by a single Zynq Ultrascale+ ZCU102 board – all interconnected and synchronized by a ton of optical links.

The concentrator boards preprocess the raw data extracting time coincidences, applying calibrations and converting it into reconstructed interaction points on the modules. Such data stream is sent to the storage using UDP and 10GbE links but additionally transferred to the controller board for to be developed real-time image reconstruction. At this moment we have the software visualization using J-PET Software Framework which delivers first insight into the data – a radioactive source placed in the center of the barrel.

It’s something! Now we design a system for a Total-Body Tomography – a scanner capable of monitoring radiopharmaceutical marker distribution over the entire human body in a single shot.

[image K.Kacprzak]

D-JPET Readout – Synchronized Aurora Links

Another step towards working system for D-JPET scanner. We have 48 front-end boards that digitize the signals and measure time, readout by 4 concentrator boards. But how synchronize them using a single fiber connection that we have for data transport and control/monitoring?

We have based our data transport infrastructure on default AXI components and Aurora links. One can share a single link between AXI Stream and Memory Mapped applications, which is perfect for our project. This allows to develop a system incredibly fast, basically using block design in Vivado.

But, using the block design, you often get what they give you. So the automatically generated Aurora links have fixed clocking scheme, with no ways to change it using the wizards. One can still take the generated sources and create a custom IP. Then it is easy to change the clocking scheme and synchronize to the clock recovered from the input data stream. And when you realize that there are few bits available in the AXI Stream data bus, you can use them to transport additional information, like synchronization pulses.