DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
ASIC_reg_mapping.cpp
Go to the documentation of this file.
2#include <iostream>
3#include <iomanip>
4#include <limits>
5
9
11{
12 const std::bitset<1152> fe_bits = fe_map.get_bits();
13 const std::bitset<1152> adc_bits = adc_map.get_bits();
14 const size_t chip_bits_len = 144;
15 for (size_t iChip=0; iChip < 8; iChip++)
16 {
17 std::bitset<chip_bits_len*2> chip_bits;
18 for (size_t iBit=0; iBit < chip_bits_len; iBit++)
19 {
20 chip_bits[iBit] = adc_bits[iChip*chip_bits_len+iBit];
21 chip_bits[iBit+chip_bits_len] = fe_bits[iChip*chip_bits_len+iBit];
22 }
23 for (size_t iReg=0; iReg < 9; iReg++)
24 {
25 std::bitset<32> regBits;
26 for (size_t iBit=0; iBit < 32; iBit++)
27 {
28 regBits[iBit] = chip_bits[iBit+iReg*32];
29 }
30 uint32_t regUInt = regBits.to_ulong();
31 REGS[iChip*9+iReg] = regUInt;
32 } // for iReg
33 } // for iChip
34} // set_board
35
36std::vector<uint32_t> ASIC_reg_mapping::get_regs() const
37{
38 return REGS;
39}
40
42{
43 std::cout << "ASIC_reg_mapping (hex):" << std::endl;
44
45 for(uint32_t i = 0; i < REGS.size(); ++i)
46 {
47 uint32_t reg = REGS[i];
48 std::cout << std::hex << std::setfill('0') << std::setw(8) << reg << std::endl;
49 //std::cout << reg << std::endl;
50 }
51}
std::bitset< 1152 > get_bits() const
std::vector< uint32_t > REGS
std::vector< uint32_t > get_regs() const
void set_board(const FE_ASIC_reg_mapping &fe_map, const ADC_ASIC_reg_mapping &adc_map)
std::bitset< 1152 > get_bits() const