
To measure the lifetime of short luminescence signals effectively, Time-Correlated Single Photon Counting (TCSPC) is commonly used. TCSPC measures the time intervals between photon pulse detections and a synchronized reference signal, usually from a laser. This data is used to create a histogram of photon arrival times, which helps in calculating luminescence lifetimes.
This module is useful in TCSPC systems, particularly after a Time-to-Digital Converter (TDC) or other time-tagging components. It processes 6-bit time-tagged data by sorting these events into bins. Designed for systems capable of supporting up to 64 bins, our module uses only the odd- numbered bins, mapping data into 32 bins to save space. This approach allows the estimation of missing bins after the decay fitting process.
The main idea is to integrate histogramming functionality within a digital chip to simplify data processing.
Thettumhistogrammingmodule is designed for digital signal processing, particularly for tasks that require data binning based on their values. Implemented in Verilog, this module handles an 8-bit input stream, using the last 6 bits to classify values, and communicates the status and results of its operations through a finite state machine with states IDLE, OUTPUTDATA, and RESETBINS.
1.Initialization and Resetting:Clears bins to zero and sets the module for new data intake.
2.Data Handling and Binning:Receives data, determines the bin index, and updates bin counts according to the input conditions.
3.State Management:Manages data output and resets based on binning outcomes.
The module underwent thorough testing using a testbench that simulated various operational sce- narios, including:
Initial reset and setup.
Ignoring even-numbered inputs.
Filling multiple odd bins and managing overflow conditions.
Checking reset functionality after data output.
Testing operational robustness with manipulated enable signals.
All tests verified the module’s functionality.
| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | ui_in[0] | uo_out[0] | |
| 1 | ui_in[1] | uo_out[1] | |
| 2 | ui_in[2] | uo_out[2] | |
| 3 | ui_in[3] | uo_out[3] | |
| 4 | ui_in[4] | uo_out[4] | |
| 5 | ui_in[5] | uo_out[5] | |
| 6 | ui_in[6] | uo_out[6] | |
| 7 | ui_in[7] | uo_out[7] |