Orion
high-rate readout
chip.hpp
1 
5 #pragma once
6 
7 #include "itk/factory.hpp"
8 #include "itk/fec/regmem.hpp"
9 #include "itk/fec/register.hpp"
10 #include "itk/fec/field.hpp"
11 #include "itk/fec/chip.hpp"
12 
13 #include "itk/itkpix/commander.hpp"
14 #include "itk/itkpix/pixmem.hpp"
15 
16 namespace itk {
17 namespace itkpix {
18 
19 using reg_t = uint16_t;
20 using fld_t = uint64_t;
21 
26 class RegMem : public itk::RegMem<reg_t>, public PixMem {
27 public:
29  static constexpr uint8_t broad_id = 0x10;
30 
33  virtual uint8_t get_chip_id() = 0;
34 
35 }; // RegMem
36 
39 
44 class Chip : public itk::Chip<Field> {
45 public:
46 
47  struct Factory : itk::Factory<Chip> {
48  virtual Chip* operator()(uint8_t chip_id) = 0;
49  };
50 
51  virtual void write_idle(uint32_t count = 1) = 0;
52 
53  virtual void write_sync() = 0;
54 
55  virtual void read_trig(uint8_t ext_tag) = 0;
56 
57  virtual void cmd_clear() = 0;
58 
59  virtual void cmd_global() = 0;
60 
61  virtual void cmd_calib(uint8_t edg_mode, uint8_t edg_delay, uint8_t edg_width,
62  uint8_t aux_mode, uint8_t aux_delay) = 0;
63 
64  virtual void write_pix_start() = 0;
65  virtual void write_pix_data(uint16_t data) = 0;
66  virtual void write_pix(std::span<const uint16_t> data) = 0;
67 
68  virtual void update_pix_reg() = 0;
69  virtual void update_pix_mask() = 0;
70  virtual void update_pix_tdac() = 0;
71 
72  virtual void config_init() = 0;
73  virtual void config_global() = 0;
74  virtual void config_pixels() = 0;
75 
76 }; // Chip
77 
78 } // itkpix
79 
80 
81 // ITkPix.v1
82 namespace itkpix1 {
83 
85  using Register = itkpix::Register;
86  using Field = itkpix::Field;
87  using Chip = itkpix::Chip;
88 
89  #include "itk/itkpix/v1/reglist_v1.hpp"
90  #include "itk/itkpix/v1/fldlist_v1.hpp"
91  #include "itk/fec/chpmap.hpp"
92 
93 } // itkpix1
94 
95 
96 // ITkPix.v2
97 namespace itkpix2 {
98 
99  using Commander = itkpix::Commander;
100  using Register = itkpix::Register;
101  using Field = itkpix::Field;
102  using Chip = itkpix::Chip;
103 
104  #include "itk/itkpix/v2/reglist_v2.hpp"
105  #include "itk/itkpix/v2/fldlist_v2.hpp"
106  #include "itk/fec/chpmap.hpp"
107 
108 } // itkpix2
109 
110 } // itk
Interface definition for chip.
Definition: chip.hpp:19
Commander interface to send 16 bit commands over e-link.
Definition: commander.hpp:18
Templated implementation of Factory class.
Definition: factory.hpp:35
Interface definition for field.
Definition: field.hpp:16
Interface definition for register memory.
Definition: concepts.hpp:31
Interface definition for register.
Definition: register.hpp:19
Chip interface for ITkPix.
Definition: chip.hpp:44
ITkPix Commander interface.
Definition: commander.hpp:16
Interface to access pixel memory. pixel register - 8 bits : flag[3], tdac[5].
Definition: pixmem.hpp:77
Register Memory for ITkPix.
Definition: chip.hpp:26
static constexpr uint8_t broad_id
Broadcast chip id.
Definition: chip.hpp:29
virtual uint8_t get_chip_id()=0
Get chip_id.
Factory framework.
Commander interface for ITkPix.
ITkPix Front-End Chip Interfaces.
Definition: chip.hpp:47