Difference between revisions of "TIGER documentation"

From BESIII Ferrara Group Wiki
Jump to: navigation, search
m (DAQ PC)
m
 
(64 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
__TOC__
 
__TOC__
  
== QDC mode ==
+
<br />
  
[[File:Efine.png|thumb|800px|Efine with wrap-around effect explained]]
+
==QDC mode==
 +
 
 +
In ''QDC mode'' the charge is measured by sampling the peak voltage of the Energy branch shaper. The sampling time window duration can be programmed by the user through the channel configuration registers (''max_integ_time'' and ''min_integ_time''). These two parameters must be set with the same value and the sampling time duration is given by:
 +
 
 +
<center><math>
 +
t_{s} = 2 &sdot; T_{clk} + integ\_time &sdot; 4 &sdot; T_{clk}
 +
</math></center>
 +
 
 +
where <math>T_{clk} = 6.25ns</math> is the system clock period.
 +
 
 +
===Settings===
 +
 
 +
In order to operate the chip in ''S&H mode'' the following configuration registers must be set as follows:
 +
 
 +
*''integ_en'' = 1
 +
*''qdc_mode'' = 1
 +
 
 +
===Data decoding===
 +
 
 +
[[File:Efine.png|thumb|750px|Efine with wrap-around effect explained]]
  
 
The counter for the ADC performing the charge digitization has a wrap-around effect such that very high signals (just below the saturation point) have 1008 < Efine < 1024.
 
The counter for the ADC performing the charge digitization has a wrap-around effect such that very high signals (just below the saturation point) have 1008 < Efine < 1024.
Line 9: Line 28:
 
For these values the measurement is still linear, so in order to apply the usual conversion using the calibration line (Efine = const + slope * Qin) we need first to shift them by 1024.  
 
For these values the measurement is still linear, so in order to apply the usual conversion using the calibration line (Efine = const + slope * Qin) we need first to shift them by 1024.  
 
Therefore we can define a new variable Efine_new given by:
 
Therefore we can define a new variable Efine_new given by:
* Efine_new = Efine (for Efine < 1008)
+
 
* Efine_new = Efine - 1024 (for Efine > 1007)
+
*Efine_new = Efine (for Efine < 1008)
 +
*Efine_new = Efine - 1024 (for Efine > 1007)
  
 
In this way, the values of Efine between (1008, 1023) are shifted to the region (-16, -1) and thus correspond to the very high charge signals, with Efine_new = -16 being the new value of saturation.
 
In this way, the values of Efine between (1008, 1023) are shifted to the region (-16, -1) and thus correspond to the very high charge signals, with Efine_new = -16 being the new value of saturation.
Line 17: Line 37:
 
{| class="wikitable" style="text-align: center; color: black;"
 
{| class="wikitable" style="text-align: center; color: black;"
 
|-
 
|-
! scope="col" | Qin
+
! scope="col" |Qin
! scope="col" | Efine
+
! scope="col" |Efine
! scope="col" | Efine_new
+
! scope="col" |Efine_new
! scope="col" | Description
+
! scope="col" |Description
 
|-
 
|-
| 5  
+
|5
| 385  
+
|385
| 385
+
|385
| normal region
+
|normal region
 
|-
 
|-
| 10  
+
|10
| 340  
+
|340
| 340
+
|340
| normal region
+
|normal region
 
|-
 
|-
| 15  
+
|15
| 295  
+
|295
| 295
+
|295
| normal region
+
|normal region
 
|-
 
|-
| 20  
+
|20
| 250  
+
|250
| 250
+
|250
| normal region
+
|normal region
 
|-
 
|-
| 20  
+
|20
| 205  
+
|205
| 205
+
|205
| normal region
+
|normal region
 
|-
 
|-
| 30
+
|30
| 160
+
|160
| 160
+
|160
| normal region  
+
|normal region
 
|-
 
|-
| 35  
+
|35
| 115
+
|115
| 115
+
|115
| normal region
+
|normal region
 
|-
 
|-
| 40  
+
|40
| 70  
+
|70
| 70
+
|70
| normal region
+
|normal region
 
|-
 
|-
| 45  
+
|45
| 25  
+
|25
| 25
+
|25
| normal region  
+
|normal region
 
|-
 
|-
| 46  
+
|46
| 16  
+
|16
| 16
+
|16
| normal region
+
|normal region
 
|-
 
|-
| 47  
+
|47
| 7
+
|7
| 7
+
|7
| normal region
+
|normal region
 
|-
 
|-
| 48  
+
|48
| 1022
+
|1022
 
| -2
 
| -2
| wrap-around region, still linear -> apply Efine_new
+
|wrap-around region, still linear -> apply Efine_new
 
|-
 
|-
| 49  
+
|49
| 1013
+
|1013
 
| -11
 
| -11
| wrap-around region, still linear -> apply Efine_new
+
|wrap-around region, still linear -> apply Efine_new
 
|-
 
|-
| 50
+
|50
| 1008
+
|1008
 
| -16
 
| -16
| saturation
+
|saturation
 
|-
 
|-
| 55
+
|55
| 1008
+
|1008
 
| -16
 
| -16
| saturation
+
|saturation
 
|-
 
|-
| 60
+
|60
| 1008
+
|1008
 
| -16
 
| -16
| saturation
+
|saturation
 
|-
 
|-
 
|}
 
|}
  
== Rate considerations ==
+
==ToT mode==
 +
 
 +
The Time-over-Threshold mode allows to measure the charge of the input signal from the pulse duration.
 +
 
 +
*It is typically performed on the T-branch shaper because of its better timing performance and thus depends on the threshold applied on this branch (VTH_T1)
 +
 
 +
*The ToT curve intrinsic non-linearity is due to the CR-RC shapers typical response
 +
 
 +
===Settings===
  
=== TIGER ===
+
[[File:ToT calib.png|thumb|700px|ToT calibration curves for different threshold settings]]
  
CGEM-IT setup:
+
In order to operate the chip in ''ToT mode'' the following configuration registers must be set as follows:
* clock frequency = 160 MHz
 
* 2 Tx links per chip running at 160 MHZ SDR (Single Data Rate)
 
  
Chip maximum bandwidth = 320 Mbit/s
+
*''integ_en'' = 0
 +
*''qdc_mode'' = 0
  
1 event word = 64 bits --> 80 bits with 8b/10b encoding
 
  
Chip maximum rate = 320 Mbit/s / 80 bit/event = 4 M event/s = 4 MHz
+
===Data decoding===
  
Channel maximum rate = 4 MHz / 64 channels = '''62.5 kHz per channel'''
+
*The ToT curve depends on the threshold level, thus the ToT measured on each channel can be converted into the correspondent input charge by applying the correct calibration curve (see Figure on the right)
  
Frameword rate = 4.8 kHz per chip (equivalent to 76 Hz per channel increase)
+
*The ToT curves are fitted with the following function:
  
=== GEMROC ===
 
  
==== TRIGGER-MATCH ====
+
<center><math>ToT = E &sdot; e^{A &sdot; Q_{in} + B} + C + D &sdot; Q_{in}</math></center>
  
Assumptions:
 
* 25 kHz rate per channel (noise + physics)
 
* 1.5 us time window
 
* 8 TIGER (512 channels)
 
* Two 64-bit header and trailer words for GEMROC packet
 
* Maximum L1 trigger frequency = 4 kHz
 
  
25 kHz per channel --> 1.6 MHz per chip
+
*These curves must be inverted in order to retrieve back the input charge information
  
Number of hits per trigger = 1.6 MHz * 1.5 us = 2.4 hit/packet
+
*Channel-by-channel TDC calibration files can be applied in order to improve the time binning of this measurement, otherwise limited to the clock period (6.25 ns)
  
Average packet size = 2.4 hit/packet * 64 bits (event word size) * 8 (TIGER) + 2 (header+trailer) * 64 bits = 1228.8 bits + 128 bits = 1357 bits = 170 bytes
+
==Output words==
  
Maximum trigger-matched data rate = 170 bytes * 4 kHz = 680 kB/s = 5440 kbit/s per GEMROC
+
[[File:TIGER output.png|thumb|1000px|TIGER output words]]
  
==== TRIGGER-LESS ====
+
===Event word===
  
Assumptions:
+
*identified by header 0b10
* 25 kHz rate per channel (noise + physics)
+
*64 bits
 +
*includes digitized information for each hit
  
25 kHz per channel --> 1.6 MHz per chip
 
  
Trigger-less data rate = 1.6 MHz * 8 (TIGER) * 64 bits (event word size) = 819.2 Mbit/s = 103 MB/s per GEMROC
+
===Count word===
  
=== DAQ PC ===
+
*identified by header 0x01
 +
*64 bits
 +
*includes information about internal counters
  
1 GbE link
 
  
Maximum bandwidth = 1 Gbit/s = 125 MB/s
+
===Framing word===
  
* Can easily accomodate data from more than 20 TM GEMROC modules
+
*identified by header 0x00
* Can only accomodate data from 1 TL GEMROC module
+
*64 bits
 +
*sent with top priority after each 2^15 clock cycles (1 frame = 204.8 us)
 +
*includes information about frame word used for time reference and SEU count detected for each frame
  
== TIGER padframe ==
+
==TIGER padframe==
  
[[File:TIGER padframe.png|thumb|1000px|TIGER padframe]]
+
[[File:TIGER padframe.png|thumb|1200px|TIGER padframe]]

Latest revision as of 11:55, 6 February 2024


QDC mode[edit | edit source]

In QDC mode the charge is measured by sampling the peak voltage of the Energy branch shaper. The sampling time window duration can be programmed by the user through the channel configuration registers (max_integ_time and min_integ_time). These two parameters must be set with the same value and the sampling time duration is given by:

[math] t_{s} = 2 ⋅ T_{clk} + integ\_time ⋅ 4 ⋅ T_{clk} [/math]

where [math]T_{clk} = 6.25ns[/math] is the system clock period.

Settings[edit | edit source]

In order to operate the chip in S&H mode the following configuration registers must be set as follows:

  • integ_en = 1
  • qdc_mode = 1

Data decoding[edit | edit source]

Efine with wrap-around effect explained

The counter for the ADC performing the charge digitization has a wrap-around effect such that very high signals (just below the saturation point) have 1008 < Efine < 1024.

For these values the measurement is still linear, so in order to apply the usual conversion using the calibration line (Efine = const + slope * Qin) we need first to shift them by 1024. Therefore we can define a new variable Efine_new given by:

  • Efine_new = Efine (for Efine < 1008)
  • Efine_new = Efine - 1024 (for Efine > 1007)

In this way, the values of Efine between (1008, 1023) are shifted to the region (-16, -1) and thus correspond to the very high charge signals, with Efine_new = -16 being the new value of saturation. This is explained in the Figure on the right and the Table below.

Qin Efine Efine_new Description
5 385 385 normal region
10 340 340 normal region
15 295 295 normal region
20 250 250 normal region
20 205 205 normal region
30 160 160 normal region
35 115 115 normal region
40 70 70 normal region
45 25 25 normal region
46 16 16 normal region
47 7 7 normal region
48 1022 -2 wrap-around region, still linear -> apply Efine_new
49 1013 -11 wrap-around region, still linear -> apply Efine_new
50 1008 -16 saturation
55 1008 -16 saturation
60 1008 -16 saturation

ToT mode[edit | edit source]

The Time-over-Threshold mode allows to measure the charge of the input signal from the pulse duration.

  • It is typically performed on the T-branch shaper because of its better timing performance and thus depends on the threshold applied on this branch (VTH_T1)
  • The ToT curve intrinsic non-linearity is due to the CR-RC shapers typical response

Settings[edit | edit source]

ToT calibration curves for different threshold settings

In order to operate the chip in ToT mode the following configuration registers must be set as follows:

  • integ_en = 0
  • qdc_mode = 0


Data decoding[edit | edit source]

  • The ToT curve depends on the threshold level, thus the ToT measured on each channel can be converted into the correspondent input charge by applying the correct calibration curve (see Figure on the right)
  • The ToT curves are fitted with the following function:


[math]ToT = E ⋅ e^{A ⋅ Q_{in} + B} + C + D ⋅ Q_{in}[/math]


  • These curves must be inverted in order to retrieve back the input charge information
  • Channel-by-channel TDC calibration files can be applied in order to improve the time binning of this measurement, otherwise limited to the clock period (6.25 ns)

Output words[edit | edit source]

TIGER output words

Event word[edit | edit source]

  • identified by header 0b10
  • 64 bits
  • includes digitized information for each hit


Count word[edit | edit source]

  • identified by header 0x01
  • 64 bits
  • includes information about internal counters


Framing word[edit | edit source]

  • identified by header 0x00
  • 64 bits
  • sent with top priority after each 2^15 clock cycles (1 frame = 204.8 us)
  • includes information about frame word used for time reference and SEU count detected for each frame

TIGER padframe[edit | edit source]

TIGER padframe