8 #include "otsdaq-components/DetectorHardware/VIPICROCDefinitions.h"
9 #include "otsdaq/BitManipulator/BitManipulator.h"
14 #include "otsdaq/Macros/CoutMacros.h"
19 VIPICROCDefinitions::VIPICROCDefinitions() {}
22 VIPICROCDefinitions::~VIPICROCDefinitions(
void) {}
25 unsigned int VIPICROCDefinitions::getDACRegisterAddress(
const std::string& registerName)
27 if(registerName ==
"PulserData")
29 else if(registerName ==
"PulserControl")
31 else if(registerName ==
"IntegratorVbn")
33 else if(registerName ==
"ShaperVbp2")
35 else if(registerName ==
"ShaperVbp1")
37 else if(registerName ==
"BLRestorer")
39 else if(registerName ==
"VTn")
41 else if(registerName ==
"VTp0")
43 else if(registerName ==
"VTp1")
45 else if(registerName ==
"VTp2")
47 else if(registerName ==
"VTp3")
49 else if(registerName ==
"VTp4")
51 else if(registerName ==
"VTp5")
53 else if(registerName ==
"VTp6")
55 else if(registerName ==
"VTp7")
57 else if(registerName ==
"ActiveLines")
59 else if(registerName ==
"SendData")
61 else if(registerName ==
"RejectHits")
63 else if(registerName ==
"DigContrReg")
65 else if(registerName ==
"AqBCO")
68 else if(registerName ==
"Kill")
70 else if(registerName ==
"Inject")
74 std::cout << __COUT_HDR_FL__ <<
" Register Name not recognized!" << std::endl;
81 uint64_t VIPICROCDefinitions::makeDACWriteHeader(
int chipId,
82 const std::string& registerName)
84 return makeDACHeader(chipId, registerName, write);
88 uint64_t VIPICROCDefinitions::makeDACSetHeader(
int chipId,
89 const std::string& registerName)
91 return makeDACHeader(chipId, registerName, set);
95 uint64_t VIPICROCDefinitions::makeDACResetHeader(
int chipId,
96 const std::string& registerName)
98 return makeDACHeader(chipId, registerName, reset);
102 uint64_t VIPICROCDefinitions::makeDACReadHeader(
int chipId,
103 const std::string& registerName)
105 return makeDACHeader(chipId, registerName, read);
109 uint64_t VIPICROCDefinitions::makeDACHeader(
int chipId,
110 const std::string& registerName,
111 unsigned int instruction)
122 uint32_t command = 0x80000000;
123 uint32_t registerAddress = getDACRegisterAddress(registerName);
125 BitManipulator::insertBits(command, chipId, 0, 5);
127 BitManipulator::insertBits(command, registerAddress, 5, 5);
129 BitManipulator::insertBits(command, instruction, 10, 3);
133 unsigned int length = 3;
134 if(registerAddress < 16 || registerAddress < 27 || registerAddress < 30)
136 else if(registerAddress == 17 || registerAddress == 18)
138 else if(registerAddress == 16)
140 else if(registerAddress == 19 || registerAddress == 20)
143 BitManipulator::insertBits(command, length, 24, 7);
149 uint64_t VIPICROCDefinitions::makeDACWriteCommand(
int chipId,
150 const std::string& registerName,
151 unsigned int valueToWrite)
153 std::cout << __COUT_HDR_FL__ <<
"Working on Register " << registerName
154 <<
" Address: " << getDACRegisterAddress(registerName)
155 <<
" Value: " << valueToWrite << std::endl;
156 uint64_t command = 0;
157 if(registerName !=
"SendData" && registerName !=
"RejectHits")
159 command = makeDACWriteHeader(chipId, registerName);
160 BitManipulator::insertBits(
161 command, BitManipulator::reverseBits(valueToWrite, 0, 8), 13, 8);
163 else if(valueToWrite == 1)
164 command = makeDACSetHeader(chipId, registerName);
166 command = makeDACResetHeader(chipId, registerName);
174 uint64_t VIPICROCDefinitions::makeDACReadCommand(
int chipId,
175 const std::string& registerName)
177 return makeDACHeader(chipId, registerName, read);
181 std::string VIPICROCDefinitions::makeMaskWriteCommand(
int chipId,
182 const std::string& registerName,
183 std::string valueToWrite)
185 std::string command =
"0000000000000000000";
221 uint64_t VIPICROCDefinitions::makeMaskReadCommand(
int chipId,
222 const std::string& registerName)
228 uint64_t VIPICROCDefinitions::setSendData(
int chipId)
230 return makeDACWriteCommand(chipId,
"SendData", 1);
234 uint64_t VIPICROCDefinitions::resetSendData(
int chipId)
236 return makeDACWriteCommand(chipId,
"SendData", 0);
240 uint64_t VIPICROCDefinitions::setRejectHits(
int chipId)
242 return makeDACWriteCommand(chipId,
"RejectHits", 1);
246 uint64_t VIPICROCDefinitions::resetRejectHits(
int chipId)
248 return makeDACWriteCommand(chipId,
"RejectHits", 0);