forked from M-Labs/artiq
impl offsets. to be tested
This commit is contained in:
parent
43c94577ce
commit
c0581178d6
|
@ -69,6 +69,7 @@ PHASER_DAC_SEL_TEST = 1
|
||||||
PHASER_HW_REV_VARIANT = 1 << 4
|
PHASER_HW_REV_VARIANT = 1 << 4
|
||||||
|
|
||||||
SERVO_COEFF_WIDTH = 16
|
SERVO_COEFF_WIDTH = 16
|
||||||
|
SERVO_DATA_WIDTH = 16
|
||||||
SERVO_COEFF_SHIFT = 14
|
SERVO_COEFF_SHIFT = 14
|
||||||
SERVO_T_CYCLE = (32+12+192+24+4)*ns # Must match gateware ADC parameters
|
SERVO_T_CYCLE = (32+12+192+24+4)*ns # Must match gateware ADC parameters
|
||||||
|
|
||||||
|
@ -1121,6 +1122,7 @@ class PhaserChannel:
|
||||||
|
|
||||||
NORM = 1 << SERVO_COEFF_SHIFT
|
NORM = 1 << SERVO_COEFF_SHIFT
|
||||||
COEFF_MAX = 1 << SERVO_COEFF_WIDTH - 1
|
COEFF_MAX = 1 << SERVO_COEFF_WIDTH - 1
|
||||||
|
DATA_MAX = 1 << SERVO_DATA_WIDTH - 1
|
||||||
|
|
||||||
kp *= NORM
|
kp *= NORM
|
||||||
if ki == 0.:
|
if ki == 0.:
|
||||||
|
@ -1146,8 +1148,8 @@ class PhaserChannel:
|
||||||
b1 >= COEFF_MAX or b1 < -COEFF_MAX):
|
b1 >= COEFF_MAX or b1 < -COEFF_MAX):
|
||||||
raise ValueError("high gains")
|
raise ValueError("high gains")
|
||||||
|
|
||||||
forward_gain = b0 + b1
|
forward_gain = (b0 + b1) * (DATA_MAX - NORM)
|
||||||
effective_offset = y_offset + forward_gain * x_offset
|
effective_offset = int(round(DATA_MAX * y_offset + forward_gain * x_offset))
|
||||||
|
|
||||||
self.set_iir_mu(profile, b0, b1, a1, effective_offset)
|
self.set_iir_mu(profile, b0, b1, a1, effective_offset)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue