Getting Started
Downloads
Below are the links to the latest software versions for both Windows and Linux. Both software versions should run standalone and feature the same functionalities. The Windows version has been tested on Windows 10 and 11. The Linux version is tested on Ubuntu 20.04 and 22.04.
Installation
Windows:
- Unzip the downloaded package. It contains the following folders:
Drivers
pSPAD_standalone_win64
- Install the drivers and the Visual C++ Redistributables from the
Drivers
folder. - Connect the USB-C cable to the detector.
- Connect the 5V power plug to the detector.
- Run the software by double clicking the
pSPAD.exe
in thepSPAD_standalone_win64
folder. - You should now be able to see the live view with the photon counts in each detector.
Linux:
- Unzip the downloaded package. It contains the following folders:
Install
pSPAD_standalone_linux64
- Open a terminal in the
Install
folder and execute the following command:sudo ./install.sh
. You might be prompted for your administrator password to proceed with the installation. The installation file might require execution permissions, set this withsudo chmod +x install.sh
- Connect the USB-C cable to the detector.
- Connect the 5V power plug to the detector.
- Run the software by double clicking the
pSPAD
executable in thepSPAD_standalone_linux64
folder. Alternatively, open a terminal in thepSPAD_standalone_linux64
folder and execute:./pSPAD
. The application might require execution permissions, set this withsudo chmod +x pSPAD
- You should now be able to see the live view with the photon counts in each detector.
Setting up
Now that the detector is connected and the software is running, we recommend to check if the basic measurement routines in the tabs photoncounting and timestamping are operational. For some of these functions to operate correctly, additional clock synchronization signals need to be connected to the four SMA connectors on the system.
The settings tab provides easy access to the main configuration parameters. It also shows a real-time reading of the temperatures and the detected frequencies of the signals connected to the SMAs on the system.
The software will regularly check for updates and prompt in case new updates are available. One can force an update check from the dropdown menu in the top left corner of the software interface. To use the new software, remove the old software from the PC and extract the files from the new package as described in Installation.
Safety
Since our systems are single-photon sensitive, they are susceptible to higher light intensities. Therefore, our systems will automatically shutdown and bring the detector in a safe state when such a condition is detected. Although the detection of such a condition is quite fast, triggering the shutdown should ideally be avoided at all costs; since damage can still occur to the device in the short time that it is over-exposed.
The following count rates are used as a threshold for this shutdown:
- 23G - 6.7Mcps/pixel
- 23R - 12.5Mcps/pixel
- 93G - 12.5Mcps/pixel
Hardware
The pSPAD software offers support for our offering of point detectors. Currently, there is support for SPAD23G, SPAD23R and SPAD93G.
Sensors
SPAD23G
The SPAD23G system contains a sensor with 23 SPAD pixels arranged in a hexagonal configuration (optimized for green detection wavelengths). The spacings and dimensions of the pixels are highlighted in the drawing on the right. Pixel 0 is oriented towards the top left corner of the system (towards the USB-C connector).
SPAD23R
The SPAD23R system contains a sensor with 25 SPAD pixels arranged in a manhattan configuration (optimized for red detection wavelengths). The spacings and dimensions of the pixels are highlighted in the drawing on the right. Pixel 0 is oriented towards the top right corner of the system and the array is rotated by 90 degrees.
SPAD93G
The SPAD93G system contains a sensor with 153 SPAD pixels arranged in a hexagonal configuration (optimized for green detection wavelengths). Only the center 93 pixels are active and connected to sensor outputs. The spacings and dimensions of the pixels are highlighted in the drawing on the right. Pixel 0 is oriented towards the top left corner of the system (towards the USB-C connector).
System
All systems are housed in a small aluminium enclosure measuring 58×91×39.5 mm (23G/23R) or 58×91×41.5 (93G). The mechanical drawing below shows the different connectors together with relevant mounting information.
It is powered from a single 5V adapter and data can be read from the USB-C port. The SMA connectors on the top of the package have the following functionality:
- Dwell clock input
High impedance, maximum input voltage: 3.3V. - Laser clock input
Frequency: 1—97MHz, 50Ω input impedance, maximum input voltage: 3.3V. - Line clock input
High impedance, maximum input voltage: 3.3V. - Frame clock input
High impedance, maximum input voltage: 3.3V.
Acceptable input voltage ranges: 0—2.5V, 0—3.3V, and 0—5V (5V only when the driving system has a 50Ω output impedance, making the amplitude effectively 2.5V). The laser clock should have a duty cycle of at least 25%. The minimum detectable pulse width for the frame/line/dwell clocks is 12ns.
For systems generating negative pulses (such as the NIM synchronization output on several laser drivers), we recommend the use of an active NIM to TTL inverter. We have obtained good results with the following active inverters:
The system, FPGA + sensor, consumes in idle operation mode around 1.8W. This is mainly static power consumed by the FPGA resources. Under measurement operation, the power consumption increases to maximum 2W. For optimal thermal performance, the system can be shutdown when unused for an elongated period of time. A proper metal support on the box can help to absorb part of the heat in the large thermal mass of an optical table. Alternatively, a fan can be placed adjacent to the system, in order to actively cool the detector.
Graphical user interface
The description below uses the term [pixels] as a definition of the maximum number of pixels in each of the systems. It is defined as following:
- 23G - [pixels] = 23
- 23R - [pixels] = 25
- 93G - [pixels] = 93
Menu
The options menu is available in the top left corner of the user interface. There are the following options:
- Set save path
Changes the folder in which the software is saving the data to a user selected one. - Set time-out
Changes the default 5 seconds time-out for measurements that use an external trigger. Value changes with 5 seconds increments. - Toggle live view to linear/log
Switch between the display of the count rate in the live views in a linear or logarithmic fashion. - Toggle histogram to linear/log
[TDC version] Switch the histogram displayed on the timestamping tab to have either a linear or logarithmic y-axis. - Calibrate breakdown
Measures the breakdown point of the SPADs. This ensures each detector will always be biased at the same excess bias voltage with respect to the breakdown point. The breakdown voltage is stored and loaded on startup. - Change clock SMA mapping [23G/23R]
Opens a secondary window in which the user can reassign the SMA ports to a different frame/line/dwell clock.
Example mapping for the default configuration. - Disable/enable VOP
Turn on and off the detectors high-voltage supply. Disabling the VOP brings the detector in a safe state and protects it from over-exposure and potential damage to the SPAD pixels. - Disable/enable dummy clock markers
By default the firmware will not generate dummy clock markers for frame/line/dwell clocks. However, for debugging purposes, the internal generation of dummy markers can be activated with this toggle. - Check for updates
Forces an online check for a new software version. - Help
Opens this online documentation portal. - Quit
Closes the software and reduces the SPAD operating voltage to a save condition.
Live view

The live view tab shows a graphical representation of the current photon counts on the SPAD pixels. The view is adjusted proportionally to the brightest pixel, which is completely white. A black—red—yellow—white colour scale shows the intensity variation over the array. Clicking on one of the pixels in the live view will disable the pixel's visual output. Hovering over any of the pixels will reveal its current count rate in counts per second (cps) in the bottom status bar. Otherwise the integrated photon count rate over the whole array will be displayed.
A small version of the live view is also available on the photoncounting and timestamping tabs in the bottom left corners.
Photoncounting


The second tab provides the photoncounting capabilities of the system. On the left is a control panel to setup the parameters for the measurements that are printed in the window on the right. The measurement progression is indicated in the bottom status bar. The following options are available:
- Classical button
Set the measurement window for classical single-shot intensity measurements. - Scanning button
Set to scanning mode, this mode allows to continuously measure with the help of the provided line / dwell clocks on the systems SMA connectors. This mode does not function without a line clock! - Integration time
Set the measurement integration time either in milliseconds for classical operation mode, or microseconds for scanning operation mode. - The following options are only available in scanning operation mode:
- Frames
Set the number of frames. - X
Set the number of pixels or dwells in a single line. - Y
Set the number of lines. - Ext. dwell clk checkbox
Enable the use of the external dwell clock provided through the SMA connector and override the internal integration time. - Ext. frame clk checkbox
Enable the use of the external frame clock provided through the SMA connector. The scan will wait at the beginning of each frame for the rising edge of the frame clock. - Live view checkbox
Enables the live view. In this mode, the system will continuously take a new scan and display the image, until the stop button is pressed. - Image checkbox
Enable the conversion of the raw data to a set of images. - Raw data checkbox
Process and print/save the raw data in text format.
- Frames
- Save checkbox
Saves the measurements to a file or an image. A folderdata/counters
is created in the run directory and files are saved with the nameRun_classicalXXX.txt
,Run_scanningXXX.txt
orIMGXXX-YY.png
.XXX
denotes the run iteration,YY
is the pixel number 0—[pixels-1] and [pixels] for the combined result. The combined result is always scaled to the highest intensity pixel in the image. - Start button
Launches the chosen measurement.
The standard measurement data is formatted with the first column being the pixel number and the second being the measured counts in the given measurement time. The scanning measurement principle is shown below. If the external frame clock is used, the scan will halt at the beginning of each frame, until the rising edge of the frame clock. The rising edge of the next line clock starts the integration of the first dwell of that line, each consecutive rising edge of the dwell clock increments the dwell counter by one. The final dwell in the line is finished at the rising edge of the dwell clock. At the end of the line, the dwell counter is reset to zero and the system waits until the next rising edge of the line clock. Once the system has integrated the requested number of lines, the frame counter is incremented and the system will wait for the next rising edge of the frame clock (if external frame clock is used) or proceed directly to wait for the next rising edge of the line clock.
The scanning data is formatted as (Frame number Z, Line number Y, Dwell number X), [pixels] pixel count values. See below for an example with 23G and Z*=2, Y*=64, X*=128.
(0,0,1),6,1,1,1,3,3,7,1,1,0,1,1,3,2,2,2,2,3,4,1,3,1,5
(0,0,2),2,2,2,2,3,0,3,5,4,0,1,3,1,2,2,0,2,3,0,0,6,1,4
(1,63,126),0,2,0,4,2,3,2,4,2,0,2,0,2,0,2,1,1,2,1,4,0,2,1
(1,63,127),0,2,1,2,1,3,1,1,1,0,1,3,2,0,1,5,2,1,1,3,6,1,1
The generated image with a size of X* × Y* is displayed on the right hand side of the screen. One can scroll through the frames with the slider on top of the image or play the sequence with the play button. By default, a scaled image with the summation of the pixel counts from all [pixels] detectors is shown. The generated image for each individual SPAD detector can be displayed by clicking on the pixel in the mini-live view in the left side of the window. When saving, all [pixels+1] images will be generated in the data/counters
folder for each frame.
Timestamping
The third tab gives access to the timestamping capabilities. This interface is adapted according to the detected firmware version. The first system version features coarse (10ns) timestamping. The second has time-to-digital converters (TDCs) with a fine resolution (~10ps).

Coarse system
The control panel on the left has the following options:
- Integration time
Set the measurement integration time in milliseconds. Setting a time equal to zero will start an unlimited time measurement. The measurement can be stopped with a click on the stop button. - Pixels to mask [23G/23R]
Set the pixels that are not required, separated with a comma or semicolon:0,1,2,...,22
. - Sort data checkbox
Sorts the timestamps from the detector on the fly to create a time-wise chronological output. The algorithm sorts by both coarse time and fine time (if available) and prioritizes marker data. - Image checkbox
Generate an image for each of the [pixels] pixels + the combined results (currently the images contain just the intensity information). The [pixels+1] images for each frame are written into a new folderdata/timers/RunXXX
. The combined result is always scaled to the highest intensity pixel in the image. Note that this mode requires a dwell, line and frame trigger to operate successfully. The number of frames will be automatically generated according to the number of detected frame triggers, whereas the following image parameters have to be set:- X
Set the number of pixels or dwells in a single line. - Y
Set the number of lines.
- X
- Raw data checkbox
Save the raw data directly in a new folderdata/timers/RunXXX
. - Start button
Launches the chosen measurement.
The progress of the measurement and the processing of the data is shown in the bottom status bar. The measurements are saved to separate files, split per roughly 50MB file sizes. A folder data/timers/RunXXX
is created in the run directory and files are saved with the name dataXXX.txt
.
The data is formatted as two columns with the first column being the pixel/marker address, followed by the value of the coarse clock counter. The real-time streaming data is formatted the same.
The pixel/marker addresses have the following meanings:
-
59
— File header -
[pixels]
— Reset of the coarse clock counter, only the wraparound data is printed (when the clock starts at zero again) -
0 to [pixels-1]
— Pixel number -
[pixels+13]
— USB FIFO overflow, significant loss of data -
[pixels+12]
— USB FIFO almost full, send only markers -
[pixels+11]
— USB FIFO reasonably empty, resume normal operation -
[pixels+8]
— Frame + line + dwell marker -
[pixels+7]
— Frame + line marker -
[pixels+6]
— Frame + dwell marker -
[pixels+5]
— Frame marker -
[pixels+4]
— Line + dwell marker -
[pixels+3]
— Line marker -
[pixels+2]
— Dwell marker
The second column is the value of the coarse clock counter running at 100.8MHz, i.e. this allows to determine the arrival time down to 10ns.
TDC system
The TDC version features additional options compared to the coarse timing version. Main differences are highlighted in this section.
Additional options in the control panel:
- TDC setting dropdown box
The operation of the TDC can be selected here, there are three modes.- Calibrate, runs the calibration of the TDCs. Measures the length of the TDC channels and stores them for further measurements.
- SPAD input, normal operation.
- Align pixels, requires a synchronous light source, measures the histograms of all pixels and calculates the rising edge offsets in each TDC channel for alignment of further measurements. The table is stored and loaded on startup.
- Histogram checkbox
Generate and save a histogram from the measurement data for each pixel (the histogram will update at real-time). The data is saved directly in a new folderdata/tdc_hist/RunXXX
per pixel aspixXX.txt
and the histogram is plotted in the right window. Other pixels can be selected by clicking in the mini-live view on the left. The data is formatted with the first row being the number of counts in that time window. The time axis is saved separately indata/tdc_hist/RunXXX/pixtimeaxis.txt
to save space. - The following options are only available in histogramming mode:
- Bin width
One can set the histogram bin widths to a value different than the default of 10ps. - Split dwells checkbox
Split the histograms for each new dwell. Instead of saving the complete histogram per dwell, only limited information is saved. In the output, the following data is saved per pixel/dwell: total counts, time of the peak in ps, height of the peak, time of the center of mass in ps
- Bin width
- Image checkbox
The only difference with respect to coarse timestamping is that the data is now saved indata/tdc/RunXXX
. - Raw data checkbox
Save the raw data directly in a new folderdata/tdc/RunXXX
.
Before the first measurement, the TDC needs to be calibrated. The software is already setup in calibration mode, which can be run by simply clicking the play button.
The data is formatted very similar to that of the coarse counter system, with the following two exceptions:
- The coarse counter value is now synchronous with the supplied laser clock (instead of being synchronous to the internal 100.8MHz clock).
- The pixel data has an additional column with the converted TDC result (in picoseconds) with respect to the laser clock.
Settings


The last tab shows the system settings. The top half is divided in 7 boxes:
- Top left
Status indication of the USB connection. This is indicated green when the system is connected by USB3. The system can be reinitialized by clicking the reset button. The software gives a warning when the system is not connected with USB3. - Top middle
Speed test for the USB connection. The transfer speed is calculated by transferring the set number of MBs and dividing by the elapsed time. - Top right
Pulse width (i.e. the SPAD dead-time) and pulse distance measurements. On the FPGA, a histogram is generated during the set integration time for the selected SPAD pixel. The data is formatted with the first column being the time in nanoseconds, the second being the number of counts in that time window. The data can be saved with the save button into a fileRunXXX.txt
in a newdata/debug
folder. With the default operating voltages, the average pulse width should be in the order of 50ns for 23G, 20-30ns for 23R and 10-20ns for 93G. - Bottom left
Current operating voltages. The operating voltages can be changed on the fly. Vex tunes the detectors sensitivity and noise. A higher value will increase the sensitivity, but it will also result in a higher dark count rate. Therefore, the optimal value might depend on your application. - Bottom middle (I)
Current operating temperatures of the FPGA and the PCB on which the sensor is located. In 23G, the PCB temperature should be a good indication of the sensors current operating temperature. In 23R and 93G, the temperature of the sensor is actively controlled and can be controlled by setting the chip temperature. The green color of the box indicates that the temperature is stable. If the box gets red, it means that the system is no longer capable of maintaining the current sensors temperature and it will automatically be adjusted to a safer value. Ideally, the sensor temperature should be kept as low as possible. Without air flow, the PCB temperature should be below 40°C. - Bottom middle (II)
Current SMA input frequencies. Shows the current running frequency for the SMA inputs: laser, frame, line, dwell clock. - Bottom right
Status of the remote communication server. The software can be programmed from any capable TCP/IP software package, see the command guide for instructions. The listening port on the localhost can be changed through the dropdown menu.
Mask configurator

[only available for 93G] The mask configurator allows pixels in the array to be physically disconnected. This is useful for the elimination of for example very noisy pixels.
To assign a pixel to be masked, either click on the pixel, or enter the pixel number in the box. [Note that the pixel numbers for masking are slightly different, since the non-activated pixels can be masked.] To enable the mask, one clicks the program button to save the configuration, after which it is loaded onto the FPGA automatically. An old configuration can be loaded with the load from file button. The final button on the right resets the current mask. The masking might not always work perfectly in low count rate scenarios. At start-up the file named Config_mask.txt is loaded automatically when present in the software folder.
Remote command interface
The software can be started with the following optional command line arguments. The command line syntax is either pSPAD.exe arg1 arg2 arg3
on Windows or ./pSPAD arg1 arg2 arg3
on Linux.
arg1
is GUI
Launches the software with the GUI shown (default).arg1
is headless
Launches the software without the GUI shown. A tray icon is visible in the taskbar.arg2
is options
Displays the following options in the tray icons context menu: show, hide, quit (default in headless mode).arg2
is no-options
No context menu available for the tray icon.arg3
is the user defined TCP/IP port
Select a port of free choice. The software will confirm that it is listening on the chosen port. This value will default to 9999 when unused (or the value stored from a previous run).
For example to start the software without a GUI and with a context-menu in the tray icon on windows, execute in the command line: pSPAD.exe headless options
To also specify a custom TCP/IP port, e.g. 2500, we execute on windows, in the command line: pSPAD.exe headless options 2500
The software can be operated over TCP/IP with a simple command protocol. The software is listening for new remote users on the PCs localhost port 9999 by default. This port can be changed on the settings tab. The following sections list the available commands and show some programming examples.
Command guide
All commands start with capital characters, followed by its parameters. Parameters indicated in triangle brackets <> should be replaced by a numerical value, parameters in square brackets [] should be replaced by a string. Commands can be separated by a line feed \n
, so multiple commands can be send at the same time.
- Classical intensity measurement
I,<measurement time in ms>
Command returns the intensity data from all pixels. It is a list of [pixels] lines with on each line <pixel nr.>,<pixel counts>. - Scanning intensity measurement
C,<measurement time in us>,<frames>,<X-elements>,<Y-elements>,<external frame clock>
CI,<measurement time in us>,<frames>,<X-elements>,<Y-elements>,<external frame clock>
CS,<measurement time in us>,<frames>,<X-elements>,<Y-elements>,<external frame clock>
If<measurement time>
=0, the external dwell clock is used.
<external frame clock>
0 for no use of external clock, 1 to wait for external frame clock.
CommandC
returns a stream of the pixel counts for each position in the scan.
CommandCI
returns the paths to the stored images. The software will store [pixels] non-scaled images for each pixel and the combined result for each measured frame.
CommandCS
returns a stream of the images. Each dwell will be represented by a single byte in the returned stream. [pixels-1] non-scaled images will be returned per scanned frame. - Timestamping measurement
T,<measurement time in ms>
Command returns the path to the stored data files. - Additional timestamping and TDC commands:
- [23G/23R] Set pixels to mask
T,m,[pixel list]
[pixel list]
is a semicolon separated string with the pixel numbers to mask, e.g.2;10;18
. - Enable or disable the data sorting
T,s,<enable>
<enable>
0 for disable, 1 for enable. - Enable or disable the raw data saving functionality
T,r,<enable>
<enable>
0 for disable, 1 for enable. - Enable or disable the image generation functionality
T,i,<enable>
<enable>
0 for disable, 1 for enable. - [TDC version] Enable or disable the histogram functionality
T,h,<enable>
<enable>
0 for disable, 1 for enable. - [TDC version] Set the bin widths of the histogram
T,hx,<bin width in ps>
- [TDC version] Split the histogram by dwells
T,hs,<enable>
<enable>
0 for no splitting, 1 for splitting enabled. - [TDC version] Perform pixel alignment
T,a,<measurement time in ms>
Command returns the alignment values. - [TDC version] Perform a new calibration
T,c,1
Command returns when calibration completed. - [TDC version] Check if the TDC is calibrated
T,v,1
Command returns the state of the system's calibration.
- [23G/23R] Set pixels to mask
- Timestamping measurement in real-time streaming mode
S,<measurement time in ms>
Command returns a list of the timestamps in real-time. Format is string-based:
[TDC version] <pixel nr. / marker nr.>,<coarse counter value>,<TDC value>
[Base version] <pixel nr. / marker nr.>,<coarse counter value>
SB,<measurement time in ms>
Command returns a list of the timestamps in real-time. Format is binary-based:
[TDC version] 1-byte for pixel nr. / marker nr. | 2-bytes (forming a 16-bit integer) for the coarse counter value | 3-bytes (forming a 24-bit integer) for the TDC value
[Base version] 1-byte for pixel nr. / marker nr. | 4-bytes (forming a 32-bit integer) for the coarse counter value
SH,<measurement time in ms>,<histogram bin width in ps>,<split dwells>
<split dwells>
0 for no splitting, 1 for splitting the histogram at each dwell.
Command returns the histograms; time-axis on the first line, followed by each pixel histogram on a new line. - Pulse width or distance measurement
P,<measurement time in ms>,<pixel>,<pulse mode>
<pixel>
is the SPAD pixel number from 0 to [pixels-1].
<pulse mode>
is either 0 for pulse width, or 1 for pulse distance.
Command returns the histogram data. - Calibrate the system
CALIB,<mode>
<mode>
is 0 for breakdown voltage calibration.
Command returns when the measurement has completed. - Get current operating temperatures and running frequencies
R
Command returns the temperatures of the FPGA and PCB in °C. If a sensor with a configurable chip temperature is connected, it will also give this out. It also returns the measured frequency of the laser, frame, line and dwell clocks. Format is <FPGA temperature>,<PCB temperature>,<chip temperature>,<laser clock frequency>,<frame clock frequency>,<line clock frequency>,<dwell clock frequency> - Set the chip temperature
R,<temperature>
<temperature>
is in °C. Command returns when the temperature has been adjusted. Use the normal R command to confirm that the temperature is stable. - Get system information
D
Command returns information about the FPGA, the software, firmware and hardware versions and enabled features. - Set the path for the software to save data and images
D,[dir]
Command returns the folder path if it exists. - Set the time-out for measurements
TO,<time in seconds>
Command sets the new time-out (value rounded to 5 seconds increments). - Set voltages
V,<Vex>
<Vex>
range is 4 to 7/9V (system dependent).
Command returns a confirmation if changes are successful. - Get current operating voltages
V
Command returns the voltages in V. Format is <Vq>,<Vex> - Program the mask from a file
M,[full path to file]
Command returns a confirmation if mask programming is complete. - Close the software
QUIT
Closes the software and brings the detector in a safe operating regime.
Programming examples
Some simple programming examples are available for download below. The following files are available:
-
octave_tcp_count.m
Octave / Matlab script to show the basic measurement principle of classical counting. The script will execute multiple measurements with different SPAD operating voltage VOP and create a plot of voltage versus counts. -
octave_tcp_pulsewidth.m
Octave / Matlab script to calculate the pulse width from the histogram send through TCP/IP. -
python_tcp_count.py
Python script to show the basic measurement principle of classical counting. The script will execute multiple measurements with different integration times and create a plot of integration time versus counts. -
python_tcp_scanning.py
Python script to stream out the scanning intensity data and reconstruct the combined image. -
python_tcp_scanning_binary.py
Python script to stream out the scanning images and reconstruct the combined image. This should be faster than the standard text stream, but the data is binary, so less intuitive. -
python_tcp_stream.py
Python script to stream out the timestamps and process them. -
python_tcp_stream_binary.py
Python script to stream out the timestamps in a binary format and process them. This should be faster than the standard stream, but the data is packed less intuitively. -
python_tcp_stream_histogram.py
Python script to stream out the histograms directly after the measurement is completed.
Support
If this documentation doesn't answer your questions, feel free to send us an e-mail.
Changelog
Version history with most notable changes.
Version 1.96
- Fixed TDC pixel alignment.
- Fixed 93 masking.
Version 1.95
- Reduced Latency when timestamping at low count rates.
- Added Warning message if not connected with USB3.
- Fixed TDC coarse counter overflows.
- Fixed Intensity shutdown in some scenarios.
Version 1.90
- Changed Name to pSPAD.
- Changed Timestamping allows down to 10 kHz laser clock.
- Changed Format of pixel nr./marker nr. in timestamping.
- Added Support for SPAD23R and SPAD93G.
- Added Masking tab and commands for SPAD93G.
- Fixed Minor bugs.
Version 1.75
- Fixed System not starting on new installations.
- Fixed Intensity shutdown for new hardware flavoured devices.
- Fixed Multiple timestamping options selectable together.
Version 1.74
- Added TO command to alter the default 5 seconds time-out.
- Added TO option in the menu.
Version 1.73
- Improved Timestamping performance at higher count rates.
- Improved Detection of faulty systems.
- Improved Handling of errors.
- Added Display of total photon counts during scanning acquisitions.
- Added Display of total photon counts during timestamping acquisitions.
Version 1.72
- Improved Timestamping sorting algorithm.
- Fixed Last part of timestamping data missing.
Version 1.71
- Fixed Crash on coarse timestamping systems.
Version 1.70
- Added Dark theme (enable from the menu).
- Added Option to sort timestamps on the fly.
- Added Remote command to enable/disable timestamp sorting.
Version 1.67
- Added Ability to select timestamping pixel images (like in scanning mode).
- Improved Intensity shutdown triggering behaviour.
- Improved Scanning image generation.
- Improved Timestamping image generation.
- Improved Error handling on scanning measurements through TCP/IP.
Version 1.66
- Added Check if TCP/IP port is occupied and select next one in case.
- Added Ability to start with custom TCP/IP port from the command line.
- Added Ability to reset intensity shutdown through TCP/IP.
- Added Ability to separate remote commands with line feed for improved reliability.
- Improved Intensity shutdown information now also through TCP/IP.
- Fixed New version pop-up overlapping with splash screen.
- Fixed Crash on scanning image generation.
- Fixed TCP/IP port selection.
Version 1.65
- Added Indication of errors in the TCP/IP stream.
- Improved Visual display during breakdown calibration.
- Fixed Timestamping coarse/fine time generation.
Version 1.64
- Added USB fifo overflow marker for timestamping.
- Improved USB speed-test accuracy.
- Fixed Non-default path setting ignored.
- Fixed Coarse timestamping jumps.
Version 1.63
- Fixed Timestamping bug generating improper markers.
- Fixed TDC data in binary streaming mode consists of 7 bytes instead of 9.
- Fixed Minor bugfixes.
Version 1.62
- Added Headless mode for the GUI.
- Fixed Minor bugfixes.
Version 1.61
- Added Remote command for breakdown calibration.
- Added Remote command to stream histograms through TCP/IP.
- Added Reporting if the timestamping measurement loses the sync with the laser clock. This could lead to incorrect TDC data.
- Added Ability to change the histogram time bin widths.
- Improved Processing performance of timestamping data.
- Changed Split dwells on histogram generation to just report the maximum and CMM values.
- Changed Raw output of timestamping data to be formatted like streaming data.
Version 1.60
- Added Breakdown calibration.
- Added Remote command for system information.
- Added Remote command to read current operating voltages.
- Improved Handling of high intensity shutdown.
- Improved Behaviour when new measurements are requested.
- Added Ability to stop ongoing acquisitions by sending the remote command again.
Version 1.57
- Increased Buffer size for timestamping measurements.
- Added Ability to stop the timestamping measurements at any time.
Version 1.56
- Fixed TDCs not calibrating properly on some systems.
Version 1.55
- Fixed Systems not properly starting.
Version 1.54
- Improved Performance of scanned imaging.
- Fixed Minor bugfixes for new hardware flavoured devices.
Version 1.53
- Changed Online documentation platform.
- Fixed Intensity shutdown.
- Fixed Set save path crashes.
Version 1.52
- Added Live view ability to scanning mode.
- Added Stop acquisition possibility to scanning mode.
- Added Stream images capability for scanning mode (see CS command).
- Disabled Dummy marker generation by default.
- Fixed Minor bugfixes for new hardware flavoured devices.
Version 1.51
- Added Frame sync clock ability to scanned acquisitions.
- Fixed Scanning read-out.
- Fixed Minor bugfixes.
Version 1.5
- Improved Updated the core system for better support on modern systems and high-DPI displays.
- Improved FPGA compatibility detection.
- Fixed Minor bugfixes.
Version 1.46
- Improved Behaviour of VOP disable.
- Improved Behaviour of timestamping mode without trigger.
- Added Support for new hardware flavour devices.
- Added Command to change the saving directory.
- Fixed Minor bugfixes.
Version 1.45
- Changed Scanning intensity measurement streams data to TCP/IP.
- Changed Pulse width measurements stream data to TCP/IP.
- Fixed Improved saving speed of images/large text files.
- Fixed Minor bugfixes.
Version 1.44
- Added Option to disable VOP.
- Added Option to disable the internal clock markers.
- Added Option to reroute clock markers from different SMAs.
- Added Option to align the 23 TDC channels.
- Added Command to check TDC calibration status.
- Changed TDC coarse counter to be in sync with laser clock.
- Fixed Minor bugfixes, changed continuous intensity measurements to scanning measurements.
Version 1.43
- Added Scrollbars to control panels.
Version 1.42
- Added Binary streaming of timestamps through TCP/IP.
Version 1.41
- Fixed Bug in the image generation.
- Fixed Bug in the timestamp streaming.
Version 1.4
- Changed Dummy save behaviour to only record overflows.
- Changed Remote commands and their returns.
- Fixed Tweaked timestamping memory consumption.
- Fixed Small tweaks to the output of continuous counting measurements and image per frame generation.
- Added Basic image generation in timestamping mode. Needs dwell/line/frame clocks.
Version 1.34
- Changed Default VOP operating voltage.
- Fixed Bug in the timestamp streaming through TCP/IP.
Version 1.33
- Changed TDC histogram time-axis saved separately to save space.
- Added TDC timing diagram examples.
- Added Possibility to switch the remote interface port.
Version 1.32
- Changed Marker representation as being a negative value.
- Fixed Fine timestamp value printed as absolute instead of relative to laser clock.
Version 1.31
- Fixed Regression in timestamping marker generation.
Version 1.3
- Added Support for the new TDC method.
- Added Support for firmwares with new headers.
- Added Image per pixel generation in continuous counting mode.
Version 1.23
- Fixed Regression of setting automatic Vq.
- Fixed Check for TDC calibration validity.
Version 1.22
- Added Real-time streaming of timestamps through TCP/IP.
- Added Automatic setting of Vq dependent on operating voltage VOP
- Added Frequency detection of the SMA inputs (firmware versions newer than 20201209 only).
- Fixed General bugfixes and performance tweaks.
Version 1.21
- Added Continuous timestamping mode (if measurement time = 0).
Version 1.2
- Improved Improvements to the continuous counting mode.
- Added TDC laser frequency selection.
Version 1.1
- Improved GUI handling and DPI scaling.
- Improved General TDC system enhancements.
- Added High light intensity shutdown.
- Added Histogram per dwell generation.
- Added Restore settings on restart.
- Added Daily check for a new version.
- Fixed Continuous counting mode image generation.
Version 1.0
First full release with multithreading support and a remote control option:
- Updated All USB communication is executed in a separate thread, as well as the data processing.
- Fixed Timestamping data is saved directly to file.
- Fixed Timestamping data is separated per pixel.
- Fixed Timestamping module features a dummy count to keep a high datarate and allow to detect coarse counter overruns.
- Improved Timestamping with improved read-out scheme to process events up to 90Mcps.
- Fixed Voltage control in firmware with range safeguarding and default startup values.
- Added Remote command interface allows for easy control from external software.
- Added Features TDC readout options in the timestamping tab in case a TDC system is detected.
- Fixed General bugfixes and GUI improvements.
Windows 64-bit + Linux 64-bit.
Version 0.1
Initial release with basic functionalities:
- Live view of the current SPAD photon count rates.
- Photon counting, both single shot/continuous.
- Coarse timestamping with 10ns time separation.
- Pulse width measurements.
- Voltage control.
- Temperature reading.
Windows 64-bit only.