mirror of
https://git.rwth-aachen.de/acs/public/villas/node/
synced 2025-03-09 00:00:00 +01:00
fpga/dino: add and set new registers
Signed-off-by: Niklas Eiling <niklas.eiling@eonerc.rwth-aachen.de>
This commit is contained in:
parent
f364db1748
commit
7991d31393
1 changed files with 26 additions and 11 deletions
|
@ -141,23 +141,38 @@ void DinoAdc::setRegisterConfig(std::shared_ptr<Register> reg,
|
|||
double sampleRate) {
|
||||
constexpr double dinoClk = 25e6; // Dino is clocked with 25 Mhz
|
||||
constexpr size_t dinoRegisterTimer = 0;
|
||||
constexpr size_t dinoRegisterScale = 1;
|
||||
constexpr size_t dinoRegisterOffset = 2;
|
||||
constexpr size_t dinoRegisterAdcScale = 1;
|
||||
constexpr size_t dinoRegisterAdcOffset = 2;
|
||||
constexpr size_t dinoRegisterDacExternalTrig = 4;
|
||||
constexpr size_t dinoRegisterStsActive = 5;
|
||||
constexpr size_t dinoRegisterDacScale = 6;
|
||||
constexpr size_t dinoRegisterDacOffset = 7;
|
||||
|
||||
uint32_t dinoTimerVal = static_cast<uint32_t>(dinoClk / sampleRate);
|
||||
double rateError = dinoClk / dinoTimerVal - sampleRate;
|
||||
reg->setRegister(
|
||||
dinoRegisterTimer,
|
||||
dinoTimerVal); // Timer value for generating ADC trigger signal
|
||||
reg->setRegister(dinoRegisterScale,
|
||||
-0.001615254F); // Scale factor for ADC value
|
||||
reg->setRegister(dinoRegisterOffset, 10.8061F); // Offset for ADC value
|
||||
uint32_t rate = reg->getRegister(0);
|
||||
float scale = reg->getRegisterFloat(1);
|
||||
float offset = reg->getRegisterFloat(2);
|
||||
logging.get("Dino")->info("Check: Register configuration: Rate: {}, Scale: "
|
||||
"{}, Offset: {}, Rate-Error: {} Hz",
|
||||
rate, scale, offset, rateError);
|
||||
reg->setRegister(dinoRegisterAdcScale,
|
||||
-0.001615254F); // Scale factor for ADC value
|
||||
reg->setRegister(dinoRegisterAdcOffset, 10.8061F); // Offset for ADC value
|
||||
|
||||
reg->setRegister(dinoRegisterDacScale,
|
||||
3276.75F); // Scale factor for DAC value
|
||||
reg->setRegister(dinoRegisterDacOffset, 10.0F); // Offset for DAC value
|
||||
uint32_t rate = reg->getRegister(dinoRegisterTimer);
|
||||
float adcScale = reg->getRegisterFloat(dinoRegisterAdcScale);
|
||||
float adcOffset = reg->getRegisterFloat(dinoRegisterAdcOffset);
|
||||
float dacScale = reg->getRegisterFloat(dinoRegisterDacScale);
|
||||
float dacOffset = reg->getRegisterFloat(dinoRegisterDacOffset);
|
||||
uint32_t dacExternalTrig = reg->getRegister(dinoRegisterDacExternalTrig);
|
||||
uint32_t stsActive = reg->getRegister(dinoRegisterStsActive);
|
||||
logging.get("Dino")->info(
|
||||
"Check: Register configuration: Rate: {}, Rate-Error: {} Hz, ADC Scale: "
|
||||
"{}, ADC Offset: {}, DAC Scale: {}, DAC Offset: {}, DAC External Trig: "
|
||||
"{:#x}, STS Active: {:#x}",
|
||||
rate, rateError, adcScale, adcOffset, dacScale, dacOffset,
|
||||
dacExternalTrig, stsActive);
|
||||
}
|
||||
|
||||
DinoDac::DinoDac() : Dino() {}
|
||||
|
|
Loading…
Add table
Reference in a new issue