Build Packages / build:windows:nocuda (push) Successful in 17m20s
Build Packages / build:windows:cuda (push) Successful in 19m52s
Build Packages / build:viewer-tgz:cpu (push) Successful in 9m38s
Build Packages / build:viewer-tgz:cuda (push) Successful in 11m18s
Build Packages / build:rugnux-tgz (x86_64) (push) Successful in 9m34s
Build Packages / build:rugnux:aarch64 (cross) (push) Successful in 5m42s
Build Packages / HDF5 consumer tests (DIALS, XDS) (push) Successful in 20m33s
Build Packages / Create release (push) Successful in 33s
Build Packages / build:rugnux:windows (push) Successful in 12m0s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 15m42s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 14m59s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 16m8s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 14m35s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 16m55s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 16m58s
Build Packages / Generate python client (push) Successful in 16s
Build Packages / build:rpm (rocky8) (push) Successful in 15m21s
Build Packages / Build documentation (push) Successful in 54s
Build Packages / build:rpm (rocky9) (push) Successful in 16m23s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 12m2s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m6s
Build Packages / Unit tests (push) Successful in 1h10m26s
* Rugnux: basic support for CCD images (marCCD, SMV) and for gzipped miniCBF. * `jfjoch_viewer`: opens the CCD formats, and fixes to the dataset plots. * Documentation updates. Reviewed-on: #81 Co-authored-by: Filip Leonarski <filip.leonarski@psi.ch>
22 lines
1.1 KiB
Markdown
22 lines
1.1 KiB
Markdown
# FPGA data flow
|
|
|
|
The following steps are performed on FPGA (in the order of operation):
|
|
|
|
1. UDP header decoding
|
|
2. SLS detector header decoding
|
|
3. State machine that controls data acquisition (start/stop/cancel)
|
|
4. High-bandwidth memory cache to buffer network packets and reorder them to form full modules
|
|
5. ADU histogram for JUNGFRAU
|
|
6. Mask pixels from missing packets with special value
|
|
7. Reorder lines for EIGER to form a proper module
|
|
8. Mask pixels based on provided pixel mask
|
|
9. JUNGFRAU conversion with gain and pedestal corrections
|
|
10. Threshold: pixel values below a set minimum are zeroed, values above a set maximum saturated
|
|
11. Frame summation (up to 256 frames)
|
|
12. Integration according to predefined map (e.g., 1D azimuthal integration)
|
|
13. Spot finding
|
|
14. ROI calculation
|
|
15. Image lossy compression using N*sqrt(pixel) values
|
|
16. Send images, analysis results and metadata to host memory via PCI Express
|
|
|
|
Each step has a dedicated core, written in high-level synthesis. Exact operation of cores for data analysis is explained in dedicated [document](FPGA_DATA_ANALYSIS.md). |