DPTC - firmware for FPGA trace compression

General Information

DPTC, difference predicted trace compression, compresses flash-ADC data (or other smooth series-data) on-the-fly on FPGAs, with fast CPU decompression.

Type
Scientific firmware and software.
Language
Firmware: VHDL. Decompression: C.
License
DPTC is free software; distributed under the 3-clause BSD license.
See the accompanying LICENSE file.
Main developers
Giovanni Bruni and Håkan T. Johansson, Chalmers University of Technology, Sweden.
Distributor
Experimental subatomic physics group, Chalmers University of Technology, Sweden.
Acknowledgment
The research leading to these results was supported by the Swedish Research Council: the Scientific Council for Natural and Engineering Sciences under grant 2017-03839 and the Council for Research infrastructure under grant 822-2014-6644.
Reference
The recommended way to refer to DPTC, when used for work that is published in a research article, is to cite the following paper:
G. Bruni and H. T. Johansson, DPTC - an FPGA-based trace compression, IEEE Transactions on Circuits and Systems I: Regular Papers, 67(1) (2020), 189-197. eprint https://doi.org/10.1109/TCSI.2019.2945179
Pre-print (2019) at arXiv:1903.10984

Download

Location
http://fy.chalmers.se/subatom/dptc/dptc-0.7.1.tar.gz
Contact
Håkan T. Johansson (f96hajo@chalmers.se) and Giovanni Bruni (bruni.gvn@gmail.com)
Version
0.7.1 (CHANGELOG)
Support
No formal support.
Lossy compression extension
ADS - Adaptive Downsampling of traces by Anton Fredriksson and Lukas Rahmn.

Documentation

See README (included with download).

Interfaces

FPGA compression module in VHDL
Data is compressed, one value per clock cycle, delivering 32-bit data data words:
entity dptc_module is
  port (clk:      in  std_logic;
        reset:    in  std_logic;

        data_in:  in  std_logic_vector;  -- Input value.
        dv_in:    in  std_logic;         -- Input value is valid.
        flush:    in  std_logic;         -- Flush pipeline.

        dv_out:   out std_logic;         -- New output word.
        out_word: out std_logic_vector;  -- Output data.
        done:     out std_logic          -- All data produced.
        );
end;
CPU decompression in C
Decompression of a trace is performed by a C routine:
int dptc_unpack(uint32_t *compr,   /* Pointer to compressed data (input). */
                size_t ncompr,     /* Number of compressed data words. */
                uint16_t *output,  /* Pointer to decompressed data (output). */
                size_t ndata,      /* Number of decompressed data words. */
                int bits           /* Number of bits in original data. */
                );

Comments? f96hajo@chalmers.se

Last modified: Tue Mar 00:32:53 CEST 2020