forked from M-Labs/artiq
phaser: n=2, m=16, sync_dly
This commit is contained in:
parent
9b58b712a6
commit
f3b0398720
|
@ -20,7 +20,7 @@ PHASER_ADDR_SPI_DIVLEN = 0x0b
|
||||||
PHASER_ADDR_SPI_SEL = 0x0c
|
PHASER_ADDR_SPI_SEL = 0x0c
|
||||||
PHASER_ADDR_SPI_DATW = 0x0d
|
PHASER_ADDR_SPI_DATW = 0x0d
|
||||||
PHASER_ADDR_SPI_DATR = 0x0e
|
PHASER_ADDR_SPI_DATR = 0x0e
|
||||||
# PHASER_ADDR_RESERVED0 = 0x0f
|
PHASER_ADDR_SYNC_DLY = 0x0f
|
||||||
PHASER_ADDR_DUC0_CFG = 0x10
|
PHASER_ADDR_DUC0_CFG = 0x10
|
||||||
# PHASER_ADDR_DUC0_RESERVED0 = 0x11
|
# PHASER_ADDR_DUC0_RESERVED0 = 0x11
|
||||||
PHASER_ADDR_DUC0_F = 0x12
|
PHASER_ADDR_DUC0_F = 0x12
|
||||||
|
@ -172,16 +172,17 @@ class Phaser:
|
||||||
self.dac_write(0x00, 0x019c) # I=2, fifo, clkdiv_sync, qmc off
|
self.dac_write(0x00, 0x019c) # I=2, fifo, clkdiv_sync, qmc off
|
||||||
self.dac_write(0x01, 0x040e) # fifo alarms, parity
|
self.dac_write(0x01, 0x040e) # fifo alarms, parity
|
||||||
self.dac_write(0x02, 0x70a2) # clk alarms, sif4, nco off, mix, mix_gain, 2s
|
self.dac_write(0x02, 0x70a2) # clk alarms, sif4, nco off, mix, mix_gain, 2s
|
||||||
self.dac_write(0x03, 0x6000) # coarse dac 20.6 mA
|
self.dac_write(0x03, 0x4000) # coarse dac 20.6 mA
|
||||||
self.dac_write(0x07, 0x40c1) # alarm mask
|
self.dac_write(0x07, 0x40c1) # alarm mask
|
||||||
self.dac_write(0x09, 0x8000) # fifo_offset
|
self.dac_write(0x09, 0x4000) # fifo_offset
|
||||||
|
self.set_sync_dly(0)
|
||||||
self.dac_write(0x0d, 0x0000) # fmix, no cmix
|
self.dac_write(0x0d, 0x0000) # fmix, no cmix
|
||||||
self.dac_write(0x14, 0x5431) # fine nco ab
|
self.dac_write(0x14, 0x5431) # fine nco ab
|
||||||
self.dac_write(0x15, 0x0323) # coarse nco ab
|
self.dac_write(0x15, 0x0323) # coarse nco ab
|
||||||
self.dac_write(0x16, 0x5431) # fine nco cd
|
self.dac_write(0x16, 0x5431) # fine nco cd
|
||||||
self.dac_write(0x17, 0x0323) # coarse nco cd
|
self.dac_write(0x17, 0x0323) # coarse nco cd
|
||||||
self.dac_write(0x18, 0x2c60) # P=4, pll run, single cp, pll_ndivsync
|
self.dac_write(0x18, 0x2c60) # P=4, pll run, single cp, pll_ndivsync
|
||||||
self.dac_write(0x19, 0x8404) # M=8 N=1
|
self.dac_write(0x19, 0x8814) # M=16 N=2
|
||||||
self.dac_write(0x1a, 0xfc00) # pll_vco=63
|
self.dac_write(0x1a, 0xfc00) # pll_vco=63
|
||||||
delay(.2*ms) # slack
|
delay(.2*ms) # slack
|
||||||
self.dac_write(0x1b, 0x0800) # int ref, fuse
|
self.dac_write(0x1b, 0x0800) # int ref, fuse
|
||||||
|
@ -196,7 +197,7 @@ class Phaser:
|
||||||
delay(.1*ms)
|
delay(.1*ms)
|
||||||
if lvolt < 2 or lvolt > 5:
|
if lvolt < 2 or lvolt > 5:
|
||||||
raise ValueError("DAC PLL tuning voltage out of bounds")
|
raise ValueError("DAC PLL tuning voltage out of bounds")
|
||||||
self.dac_write(0x20, 0x0000) # stop fifo sync
|
# self.dac_write(0x20, 0x0000) # stop fifo sync
|
||||||
self.dac_write(0x05, 0x0000) # clear alarms
|
self.dac_write(0x05, 0x0000) # clear alarms
|
||||||
delay(1*ms) # run it
|
delay(1*ms) # run it
|
||||||
alarm = self.get_sta() & 1
|
alarm = self.get_sta() & 1
|
||||||
|
@ -488,6 +489,16 @@ class Phaser:
|
||||||
self.dac_write(0x04, 0x0000) # clear iotest_result
|
self.dac_write(0x04, 0x0000) # clear iotest_result
|
||||||
return errors
|
return errors
|
||||||
|
|
||||||
|
@kernel
|
||||||
|
def set_sync_dly(self, dly):
|
||||||
|
"""Set SYNC delay.
|
||||||
|
|
||||||
|
:param dly: DAC SYNC delay setting (0 to 7)
|
||||||
|
"""
|
||||||
|
if dly < 0 or dly > 7:
|
||||||
|
raise ValueError("SYNC delay out of bounds")
|
||||||
|
self.write8(PHASER_ADDR_SYNC_DLY, dly)
|
||||||
|
|
||||||
|
|
||||||
class PhaserChannel:
|
class PhaserChannel:
|
||||||
"""Phaser channel IQ pair.
|
"""Phaser channel IQ pair.
|
||||||
|
|
Loading…
Reference in New Issue