mythen3: timers based on run clk and not on sync clk

This commit is contained in:
2020-06-16 16:47:03 +02:00
parent d5ae9a22f4
commit 7609a2bda4
2 changed files with 16 additions and 16 deletions

View File

@ -813,12 +813,12 @@ int setPeriod(int64_t val) {
return FAIL; return FAIL;
} }
LOG(logINFO, ("Setting period %lld ns\n", (long long int)val)); LOG(logINFO, ("Setting period %lld ns\n", (long long int)val));
val *= (1E-9 * getFrequency(SYSTEM_C2)); val *= (1E-9 * getFrequency(SYSTEM_C0));
set64BitReg(val, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); set64BitReg(val, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG);
// validate for tolerance // validate for tolerance
int64_t retval = getPeriod(); int64_t retval = getPeriod();
val /= (1E-9 * getFrequency(SYSTEM_C2)); val /= (1E-9 * getFrequency(SYSTEM_C0));
if (val != retval) { if (val != retval) {
return FAIL; return FAIL;
} }
@ -827,7 +827,7 @@ int setPeriod(int64_t val) {
int64_t getPeriod() { int64_t getPeriod() {
return get64BitReg(SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG) / return get64BitReg(SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG) /
(1E-9 * getFrequency(SYSTEM_C2)); (1E-9 * getFrequency(SYSTEM_C0));
} }
void setNumIntGates(int val) { void setNumIntGates(int val) {
@ -860,7 +860,7 @@ void updateGatePeriod() {
} }
} }
LOG(logINFO, ("\tSetting Gate Period to %lld ns\n", (long long int)max)); LOG(logINFO, ("\tSetting Gate Period to %lld ns\n", (long long int)max));
max *= (1E-9 * getFrequency(SYSTEM_C2)); max *= (1E-9 * getFrequency(SYSTEM_C0));
set64BitReg(max, ASIC_EXP_GATE_PERIOD_LSB_REG, set64BitReg(max, ASIC_EXP_GATE_PERIOD_LSB_REG,
ASIC_EXP_GATE_PERIOD_MSB_REG); ASIC_EXP_GATE_PERIOD_MSB_REG);
} }
@ -868,7 +868,7 @@ void updateGatePeriod() {
int64_t getGatePeriod() { int64_t getGatePeriod() {
return get64BitReg(ASIC_EXP_GATE_PERIOD_LSB_REG, return get64BitReg(ASIC_EXP_GATE_PERIOD_LSB_REG,
ASIC_EXP_GATE_PERIOD_MSB_REG) / ASIC_EXP_GATE_PERIOD_MSB_REG) /
(1E-9 * getFrequency(SYSTEM_C2)); (1E-9 * getFrequency(SYSTEM_C0));
} }
int setExpTime(int gateIndex, int64_t val) { int setExpTime(int gateIndex, int64_t val) {
@ -898,12 +898,12 @@ int setExpTime(int gateIndex, int64_t val) {
} }
LOG(logINFO, ("Setting exptime %lld ns (index:%d)\n", (long long int)val, LOG(logINFO, ("Setting exptime %lld ns (index:%d)\n", (long long int)val,
gateIndex)); gateIndex));
val *= (1E-9 * getFrequency(SYSTEM_C2)); val *= (1E-9 * getFrequency(SYSTEM_C0));
set64BitReg(val, alsb, amsb); set64BitReg(val, alsb, amsb);
// validate for tolerance // validate for tolerance
int64_t retval = getExpTime(gateIndex); int64_t retval = getExpTime(gateIndex);
val /= (1E-9 * getFrequency(SYSTEM_C2)); val /= (1E-9 * getFrequency(SYSTEM_C0));
if (val != retval) { if (val != retval) {
return FAIL; return FAIL;
} }
@ -933,7 +933,7 @@ int64_t getExpTime(int gateIndex) {
LOG(logERROR, ("Invalid gate index: %d\n", gateIndex)); LOG(logERROR, ("Invalid gate index: %d\n", gateIndex));
return -1; return -1;
} }
return get64BitReg(alsb, amsb) / (1E-9 * getFrequency(SYSTEM_C2)); return get64BitReg(alsb, amsb) / (1E-9 * getFrequency(SYSTEM_C0));
} }
int setGateDelay(int gateIndex, int64_t val) { int setGateDelay(int gateIndex, int64_t val) {
@ -963,12 +963,12 @@ int setGateDelay(int gateIndex, int64_t val) {
} }
LOG(logINFO, ("Setting gate delay %lld ns (index:%d)\n", (long long int)val, LOG(logINFO, ("Setting gate delay %lld ns (index:%d)\n", (long long int)val,
gateIndex)); gateIndex));
val *= (1E-9 * getFrequency(SYSTEM_C2)); val *= (1E-9 * getFrequency(SYSTEM_C0));
set64BitReg(val, alsb, amsb); set64BitReg(val, alsb, amsb);
// validate for tolerance // validate for tolerance
int64_t retval = getGateDelay(gateIndex); int64_t retval = getGateDelay(gateIndex);
val /= (1E-9 * getFrequency(SYSTEM_C2)); val /= (1E-9 * getFrequency(SYSTEM_C0));
if (val != retval) { if (val != retval) {
return FAIL; return FAIL;
} }
@ -998,7 +998,7 @@ int64_t getGateDelay(int gateIndex) {
LOG(logERROR, ("Invalid gate index: %d\n", gateIndex)); LOG(logERROR, ("Invalid gate index: %d\n", gateIndex));
return -1; return -1;
} }
return get64BitReg(alsb, amsb) / (1E-9 * getFrequency(SYSTEM_C2)); return get64BitReg(alsb, amsb) / (1E-9 * getFrequency(SYSTEM_C0));
} }
void setCounterMask(uint32_t arg) { void setCounterMask(uint32_t arg) {
@ -1027,12 +1027,12 @@ int setDelayAfterTrigger(int64_t val) {
return FAIL; return FAIL;
} }
LOG(logINFO, ("Setting delay after trigger %lld ns\n", (long long int)val)); LOG(logINFO, ("Setting delay after trigger %lld ns\n", (long long int)val));
val *= (1E-9 * getFrequency(SYSTEM_C2)); val *= (1E-9 * getFrequency(SYSTEM_C0));
set64BitReg(val, SET_TRIGGER_DELAY_LSB_REG, SET_TRIGGER_DELAY_MSB_REG); set64BitReg(val, SET_TRIGGER_DELAY_LSB_REG, SET_TRIGGER_DELAY_MSB_REG);
// validate for tolerance // validate for tolerance
int64_t retval = getDelayAfterTrigger(); int64_t retval = getDelayAfterTrigger();
val /= (1E-9 * getFrequency(SYSTEM_C2)); val /= (1E-9 * getFrequency(SYSTEM_C0));
if (val != retval) { if (val != retval) {
return FAIL; return FAIL;
} }
@ -1041,7 +1041,7 @@ int setDelayAfterTrigger(int64_t val) {
int64_t getDelayAfterTrigger() { int64_t getDelayAfterTrigger() {
return get64BitReg(SET_TRIGGER_DELAY_LSB_REG, SET_TRIGGER_DELAY_MSB_REG) / return get64BitReg(SET_TRIGGER_DELAY_LSB_REG, SET_TRIGGER_DELAY_MSB_REG) /
(1E-9 * getFrequency(SYSTEM_C2)); (1E-9 * getFrequency(SYSTEM_C0));
} }
int64_t getNumFramesLeft() { int64_t getNumFramesLeft() {
@ -1054,12 +1054,12 @@ int64_t getNumTriggersLeft() {
int64_t getDelayAfterTriggerLeft() { int64_t getDelayAfterTriggerLeft() {
return get64BitReg(GET_DELAY_LSB_REG, GET_DELAY_MSB_REG) / return get64BitReg(GET_DELAY_LSB_REG, GET_DELAY_MSB_REG) /
(1E-9 * getFrequency(SYSTEM_C2)); (1E-9 * getFrequency(SYSTEM_C0));
} }
int64_t getPeriodLeft() { int64_t getPeriodLeft() {
return get64BitReg(GET_PERIOD_LSB_REG, GET_PERIOD_MSB_REG) / return get64BitReg(GET_PERIOD_LSB_REG, GET_PERIOD_MSB_REG) /
(1E-9 * getFrequency(SYSTEM_C2)); (1E-9 * getFrequency(SYSTEM_C0));
} }
int64_t getFramesFromStart() { int64_t getFramesFromStart() {