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.
Together with the official annoucement of the J-PET Lab opening [link] we are shifting up a gear: there is plenty of FPGA related development, both in low level RTL and HLS. If you are interested, have a look at diploma projects tab or email directly at email@example.com
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.
Our processing rack is growing up. Today we have installed Virtex Ultrascale based data concentrators inside the rack and connected to the DAQ server. Integrated processing, real time processing and a screen will give an instant overview of the measurement.
Do not be fooled by the photo, there are wheels under the rack.
Enhanced image reconstruction, including 3D and TOF functionalities has been successfully implemented entirely in the FPGA!
In programmable logic, we are finding LOR candidates and reconstruct the annihilation point coordinates. Then, only X, Y, Z values are being sent from the JPET Controller to the server that produces 3D canvas with the scanner visualization.
You can find a video showing it in action under [this] link.