phaser: workaround malformed output with `mixer_ena=1` & `nco_ena=0`

When Phaser is powered on and `init()` is first called, enabling the
DAC-mixer while leaving the NCO disabled causes malformed output.
This commit implements a workaround by making sure the NCO is enabled,
before being set to the disired state.

This commit also avoids the following procedure, resulting in
malformed output:
1. Operate Phaser with the DAC Mixer and NCO enabled
2. Set the NCO to a non-zero frequency
3. Disable the NCO in the device_db
4. Re-initialise Phaser

After this procedure, with CMIX disabled, incorrect output is produced.
To clear the fault one must re-enable the NCO and write the NCO freqeuncy
to zero before disabling the NCO.

Signed-off-by: Marius Weber <marius.weber@physics.ox.ac.uk>
This commit is contained in:
Marius Weber 2021-04-14 16:20:44 +01:00
parent 4fa2028671
commit f97baa8aec
1 changed files with 10 additions and 0 deletions

View File

@ -279,6 +279,16 @@ class Phaser:
else: else:
raise ValueError("DAC alarm") raise ValueError("DAC alarm")
# avoid malformed output for: mixer_ena=1, nco_ena=0 after power up
self.dac_write(self.dac_mmap[2] >> 16, self.dac_mmap[2] | (1 << 4))
delay(40*us)
self.dac_sync()
delay(100*us)
self.dac_write(self.dac_mmap[2] >> 16, self.dac_mmap[2])
delay(40*us)
self.dac_sync()
delay(100*us)
# power up trfs, release att reset # power up trfs, release att reset
self.set_cfg(clk_sel=self.clk_sel, dac_txena=0) self.set_cfg(clk_sel=self.clk_sel, dac_txena=0)