Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 42 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,48 @@ cet_set_compiler_flags(DIAGS VIGILANT
EXTRA_FLAGS -pedantic -Wno-unused-parameter
)

#string(TOUPPER ${CMAKE_BUILD_TYPE} BTYPE_UC )
#if( ${BTYPE_UC} MATCHES "DEBUG" )
# cet_add_compiler_flags(-fsanitize=address)
#endif()

string(TOUPPER ${CMAKE_BUILD_TYPE} BTYPE_UC)
if(BTYPE_UC STREQUAL DEBUG)
add_definitions(-DDEBUGME)
if(DEFINED ENV{USE_ASAN})
if($ENV{USE_ASAN} GREATER 0)
message("!!! Address Sanitizer Activated!!!")
message("!!! Note: To run, add 'export ASAN_OPTIONS=verify_asan_link_order=0' to setup !!!")
add_compile_options(-fsanitize=address -Wno-unused-command-line-argument)
add_link_options(-lasan)
endif()
endif()
if(DEFINED ENV{USE_TSAN})
if($ENV{USE_TSAN} GREATER 0)
message("!!! Thread Sanitizer Activated!!!")
add_compile_options(-fsanitize=thread -Wno-unused-command-line-argument -Wno-tsan)
add_link_options(-ltsan)
endif()
endif()
if(DEFINED ENV{USE_UBSAN})
if($ENV{USE_UBSAN} GREATER 0)
message("!!! \"Undefined Behavior\" Sanitizer Activated!!!")
add_compile_options(-fsanitize=undefined -Wno-unused-command-line-argument)
add_link_options(-lubsan)
endif()
endif()
if(DEFINED ENV{USE_GCOV})
add_compile_options(-fprofile-arcs -ftest-coverage --coverage)
add_link_options(--coverage)
endif()
endif()

#exeption stack trace
if(DEFINED ENV{USE_EXCEPTIONSTACKTRACE})
if($ENV{USE_EXCEPTIONSTACKTRACE} GREATER 0)
message("!!! Exception StackTrace Activated!!!")
add_definitions(-D EXCEPTIONSTACKTRACE)
set( EXCEPTIONSTACKTRACE_LIB artdaq-core_Utilities_ExceptionStackTrace )
add_compile_options( -rdynamic -Wno-unused-command-line-argument )
add_link_options( -rdynamic )
endif()
endif()

#cet_report_compiler_flags()

Expand Down
23 changes: 23 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# otsdaq-mu2e-crv

This package is a part of the Mu2e TDAQ Suite

## Common DAQ Repositories

* [artdaq-core-mu2e](https://mu2e.github.io/daq-operations/doxygen/artdaq-core-mu2e): _artdaq_ Fragment data formats
* [mu2e-pcie-utils](https://mu2e.github.io/daq-operations/doxygen/mu2e-pcie-utils): PCIe Device Driver and interface library
* [artdaq-mu2e](https://mu2e.github.io/daq-operations/doxygen/artdaq-mu2e): Core data acquisition code
* [otsdaq-mu2e](https://mu2e.github.io/daq-operations/doxygen/otsdaq-mu2e): Slow controls and Front-End Interface
* [otsdaq-mu2e-dqm](https://mu2e.github.io/daq-operations/doxygen/otsdaq-mu2e-dqm): DQM interface and tools
* [mu2e-trig-config](https://mu2e.github.io/daq-operations/doxygen/mu2e-trig-config): Trigger path FHiCL generation utilities

## Subsystem-Specific Repositories

* [otsdaq-mu2e-calorimeter](https://mu2e.github.io/daq-operations/doxygen/otsdaq-mu2e-calorimeter)
* [otsdaq-mu2e-crv](https://mu2e.github.io/daq-operations/doxygen/otsdaq-mu2e-crv)
* [otsdaq-mu2e-extmon](https://mu2e.github.io/daq-operations/doxygen/otsdaq-mu2e-extmon)
* [otsdaq-mu2e-stm](https://mu2e.github.io/daq-operations/doxygen/otsdaq-mu2e-stm)
* [otsdaq-mu2e-tracker](https://mu2e.github.io/daq-operations/doxygen/otsdaq-mu2e-tracker)
* [otsdaq-mu2e-trigger](https://mu2e.github.io/daq-operations/doxygen/otsdaq-mu2e-trigger)

# Additional Documentation (Package-Specific)
85 changes: 85 additions & 0 deletions otsdaq-mu2e-crv/FEInterfaces/FEBII_Registers.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
#ifndef FEBII_REGISTERS_H
#define FEBII_REGISTERS_H

// #include <functional> // std::bind, std::function (if needed)
#include <cstdint> // uint16_t

// Source: https://github.com/Mu2e/cRV_FEB2

namespace FEBII
{
enum Register : uint16_t
{
// FPGA registers
CR = 0x1000,
// bit 8 = clear DDR FIFO nearly full warning
// bit 7 = clear encoded FM clock parity error
// bit 6 = hard reset AFE chips
// bit 5 = general soft reset for FPGA logic (does not stop clocks)
// bit 2 = reset AFE front end (force front end recalibration and realignment)
// bit 1 = AFE1 power down
// bit 0 = AFE0 power down
Status = 0x1001,
FirmwareLO = 0x1002,
FirmwareHI = 0x1003,
OutFIFI = 0x100c,
OutFIFOStatus = 0x1017,
CntHI = 0x1022,
CntLO = 0x1023,
ThresholdGlobal = 0x1026,
Port = 0x1029,
UptimeHI = 0x106C,
UptimeLo = 0x106D,
EWT = 0x106E,
EWTCount = 0x106F,
ThresholdBase = 0x1070, // to 0x107F
ChannelMapBase = 0x1080, // to 0x108F
// implemented in uC
BaselineBase = 0x1090,
TrimBase = 0x10b0, // to 0x1090
LEDBias = 0x10a0, // to 0x10a3
BiasBase = 0x10a4, // to 0x10a5
VGABase = 0x10a6, // to 0x10a7

// AFE reads
AFE0_base = 0x1100,
AFE1_base = 0x1200,

// registers that effect all FPGAs
FlashGateEn = 0x1300,
FlashGateOn = 0x1301, // 6.25ns, default 1
FlashGateOff = 0x1302, // 6.25ns, default 112
EWTFakeMode = 0x1303,
GateOnOnSpill = 0x1305, // 6.25ns, default 16
GateOffOnSpill = 0x1306, // 6.25ns, default 255
GateOnOffSpill = 0x1307, // 6.25ns, default 16
GateOffOffSpill = 0x1308, // 6.25ns, default 1792
LEDOn = 0x1318, // 6.25ns, default

// broadcast to all FEBs on ROC
AllFEB = 0x3000,
// uC functions
Reset = 0x9001,
TRIG = 0x900B,
CMBENA = 0x9106
}; // end ROC_Register enum

enum AFERegister : uint16_t
{
// AFE registers, write only (read is a multi step process)
Offset_en = 0x3, // bit 8
Offset_ch1 = 0x0D,
Offset_ch2 = 0x0F,
Offset_ch3 = 0x11,
Offset_ch4 = 0x13,
Offset_ch5 = 0x1F,
Offset_ch6 = 0x1D,
Offset_ch7 = 0x1B,
Offset_ch8 = 0x19,
};

uint16_t FPGA[] = {0x000, 0x400, 0x800, 0xC00};

} // namespace FEBII

#endif // FEBII_REGISTERS_H
16 changes: 16 additions & 0 deletions otsdaq-mu2e-crv/FEInterfaces/ROCCosmicRayVetoInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,10 @@ class ROCCosmicRayVetoInterface : public ROCCoreVInterface
void FebConfigure(bool useOtsConfig = true);
void ResetRxBuffers();
void SetMarkerSync(bool enable=true);
int16_t Realign(int sleep_uc = 1000);
void ResetPLL(int sleep_us = 1000);

uint16_t ReadAFE(uint16_t fpga, uint16_t afe_no, uint16_t reg);
// CRV FEB specific functions
//void FebTakePedestral();

Expand Down Expand Up @@ -90,6 +93,19 @@ class ROCCosmicRayVetoInterface : public ROCCoreVInterface
void PWRRST (__ARGS__);
void GetHistograms (__ARGS__);
void RegDump (__ARGS__);
void FebIIConfigure (__ARGS__);
void FebIIAlign (__ARGS__);
void FebIISetThreshold (__ARGS__);
void FebIISetBias (__ARGS__);
void FebIISetBiasTrim (__ARGS__);
void FebIISetGateOnSpill (__ARGS__);
void FebIISetGateOffSpill (__ARGS__);
void FebIIGetStatus (__ARGS__);
void FebIISetChannel (__ARGS__);
void FebIISetAFEOffset (__ARGS__);
void FebIIGetBaselines (__ARGS__);
void FebIITrigBaselines (__ARGS__);
void SetInputMask (__ARGS__);
// clang-format on
};

Expand Down
Loading