DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
ADC_ASIC_reg_mapping.cpp
Go to the documentation of this file.
2#include <iostream>
3
7
8void ADC_ASIC_reg_mapping::set_ch(uint8_t chip, uint8_t chn, uint8_t d, uint8_t pcsr,
9 uint8_t pdsr, uint8_t slp, uint8_t tstin)
10{
11 uint8_t tmp_d = ((d<<4)&0xF0);
12 uint8_t tmp_d0 = (tmp_d & 0x80)>>3;
13 uint8_t tmp_d1 = (tmp_d & 0x40)>>1;
14 uint8_t tmp_d2 = (tmp_d & 0x20)<<1;
15 uint8_t tmp_d3 = (tmp_d & 0x10)<<3;
16 tmp_d = tmp_d0 + tmp_d1 + tmp_d2 + tmp_d3;
17
18 unsigned long chn_reg = (tmp_d&0xF0) + ((pcsr&0x01)<<3) + ((pdsr&0x01)<<2) + ((slp&0x01)<<1) + ((tstin&0x01)<<0);
19
20 std::bitset<8> bits(chn_reg);
21 size_t start_pos = (8*16+16)*chip + (16-chn)*8;
22 for(size_t iBit=0; iBit < 8; iBit++)
23 {
24 BITS[iBit+start_pos-8] = bits[iBit];
25 }
26}
27void ADC_ASIC_reg_mapping::set_global(uint8_t chip, uint8_t f4, uint8_t f5, uint8_t slsb,
28 uint8_t res4, uint8_t res3, uint8_t res2,
29 uint8_t res1, uint8_t res0, uint8_t clk0,
30 uint8_t clk1, uint8_t frqc, uint8_t engr,
31 uint8_t f0, uint8_t f1, uint8_t f2, uint8_t f3)
32{
33 std::bitset<16> bits;
34 bits[ 0] = res0 & 0x1;
35 bits[ 1] = res1 & 0x1;
36 bits[ 2] = res2 & 0x1;
37 bits[ 3] = res3 & 0x1;
38 bits[ 4] = res4 & 0x1;
39 bits[ 5] = slsb & 0x1;
40 bits[ 6] = f5 & 0x1;
41 bits[ 7] = f4 & 0x1;
42 bits[ 8] = f3 & 0x1;
43 bits[ 9] = f2 & 0x1;
44 bits[10] = f1 & 0x1;
45 bits[11] = f0 & 0x1;
46 bits[12] = engr & 0x1;
47 bits[13] = frqc & 0x1;
48 bits[14] = clk1 & 0x1;
49 bits[15] = clk0 & 0x1;
50
51 size_t start_pos = (8*16+16)*chip + 16*8;
52 for(size_t iBit=0; iBit < 16; iBit++)
53 {
54 BITS[iBit+start_pos] = bits[iBit];
55 }
56}
58 uint8_t d, uint8_t pcsr, uint8_t pdsr,
59 uint8_t slp, uint8_t tstin, uint8_t f4, uint8_t f5,
60 uint8_t slsb, uint8_t res4, uint8_t res3,
61 uint8_t res2, uint8_t res1, uint8_t res0,
62 uint8_t clk0, uint8_t clk1, uint8_t frqc,
63 uint8_t engr, uint8_t f0, uint8_t f1,
64 uint8_t f2, uint8_t f3)
65{
66 for (size_t chn=0; chn<16; chn++)
67 {
68 set_ch(chip, chn, d, pcsr, pdsr, slp, tstin);
69 }
70
71 set_global( chip,
72 f4, f5, slsb, res4, res3, res2, res1, res0,
73 clk0, clk1, frqc, engr, f0, f1, f2, f3);
74}
75
76void ADC_ASIC_reg_mapping::set_board(uint8_t d, uint8_t pcsr, uint8_t pdsr,
77 uint8_t slp, uint8_t tstin, uint8_t f4, uint8_t f5,
78 uint8_t slsb, uint8_t res4, uint8_t res3,
79 uint8_t res2, uint8_t res1, uint8_t res0,
80 uint8_t clk0, uint8_t clk1, uint8_t frqc,
81 uint8_t engr, uint8_t f0, uint8_t f1,
82 uint8_t f2, uint8_t f3)
83{
84
85 for (size_t chip=0; chip<8; chip++)
86 {
87 set_chip(chip,
88 d, pcsr, pdsr, slp, tstin,
89 f4, f5, slsb, res4, res3, res2, res1, res0,
90 clk0, clk1, frqc, engr, f0, f1, f2, f3);
91 }
92}
93
94std::bitset<1152> ADC_ASIC_reg_mapping::get_bits() const
95{
96 return BITS;
97}
98
100{
101 std::cout << "ADC_ASIC_reg_mapping (binary):" << std::endl;
102 std::string bitString = BITS.to_string<char,std::string::traits_type,std::string::allocator_type>();
103 for(size_t iLine=0; iLine < 36; iLine++)
104 {
105 for(size_t iByte=0; iByte < 4; iByte++)
106 {
107 for(size_t iBit=0; iBit < 8; iBit++)
108 {
109 std::cout << bitString[iLine*32+iByte*8+iBit];
110 }
111 std::cout << ' ';
112 }
113 std::cout << std::endl;
114 }
115 //std::cout << BITS << std::endl;
116}
std::bitset< 1152 > BITS
void set_global(uint8_t chip, uint8_t f4=0, uint8_t f5=0, uint8_t slsb=0, uint8_t res4=0, uint8_t res3=0, uint8_t res2=0, uint8_t res1=0, uint8_t res0=0, uint8_t clk0=0, uint8_t clk1=0, uint8_t frqc=0, uint8_t engr=0, uint8_t f0=0, uint8_t f1=0, uint8_t f2=0, uint8_t f3=0)
std::bitset< 1152 > get_bits() const
void set_board(uint8_t d=0, uint8_t pcsr=0, uint8_t pdsr=0, uint8_t slp=0, uint8_t tstin=0, uint8_t f4=0, uint8_t f5=0, uint8_t slsb=0, uint8_t res4=0, uint8_t res3=0, uint8_t res2=0, uint8_t res1=0, uint8_t res0=0, uint8_t clk0=0, uint8_t clk1=0, uint8_t frqc=0, uint8_t engr=0, uint8_t f0=0, uint8_t f1=0, uint8_t f2=0, uint8_t f3=0)
void set_chip(uint8_t chip=0, uint8_t d=0, uint8_t pcsr=0, uint8_t pdsr=0, uint8_t slp=0, uint8_t tstin=0, uint8_t f4=0, uint8_t f5=0, uint8_t slsb=0, uint8_t res4=0, uint8_t res3=0, uint8_t res2=0, uint8_t res1=0, uint8_t res0=0, uint8_t clk0=0, uint8_t clk1=0, uint8_t frqc=0, uint8_t engr=0, uint8_t f0=0, uint8_t f1=0, uint8_t f2=0, uint8_t f3=0)
void set_ch(uint8_t chip=0, uint8_t chn=0, uint8_t d=0, uint8_t pcsr=0, uint8_t pdsr=0, uint8_t slp=0, uint8_t tstin=0)