diff options
author | Daniel Jepson <daniel.jepson@ni.com> | 2018-03-07 09:15:13 -0600 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2018-03-30 11:32:07 -0700 |
commit | 7ced80beccf6bfb1a906253b5fd0cedd06962029 (patch) | |
tree | b4588b73c3d2033a9406f33798f4b109b821528d /mpm/python/usrp_mpm/dboard_manager/magnesium.py | |
parent | 4e34d35ec47636f5339b0bec8656a485c9200a5c (diff) | |
download | uhd-7ced80beccf6bfb1a906253b5fd0cedd06962029.tar.gz uhd-7ced80beccf6bfb1a906253b5fd0cedd06962029.tar.bz2 uhd-7ced80beccf6bfb1a906253b5fd0cedd06962029.zip |
n3xx: add White Rabbit support
Reviewed-by: Martin Braun <martin.braun@ettus.com>
Diffstat (limited to 'mpm/python/usrp_mpm/dboard_manager/magnesium.py')
-rw-r--r-- | mpm/python/usrp_mpm/dboard_manager/magnesium.py | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/mpm/python/usrp_mpm/dboard_manager/magnesium.py b/mpm/python/usrp_mpm/dboard_manager/magnesium.py index 9c36abe89..6ed4dfd84 100644 --- a/mpm/python/usrp_mpm/dboard_manager/magnesium.py +++ b/mpm/python/usrp_mpm/dboard_manager/magnesium.py @@ -158,7 +158,13 @@ class Magnesium(DboardManagerBase): # point, so we set it to the (carefully calculated) alternate value instead. INIT_PHASE_DAC_WORD = 31000 # Intentionally decimal PHASE_DAC_SPI_ADDR = 0x0 + # External PPS pipeline delay from the PPS captured at the FPGA to TDC input, + # in reference clock ticks + EXT_PPS_DELAY = 5 + # Variable PPS delay before the RP/SP pulsers begin. Fixed value for the N3xx devices. + N3XX_INT_PPS_DELAY = 4 default_master_clock_rate = 125e6 + default_time_source = 'internal' default_current_jesd_rate = 2500e6 def __init__(self, slot_idx, **kwargs): @@ -336,17 +342,25 @@ class Magnesium(DboardManagerBase): ) def _sync_db_clock(): " Synchronizes the DB clock to the common reference " + reg_offset = 0x200 + ref_clk_freq = self.ref_clock_freq + ext_pps_delay = self.EXT_PPS_DELAY + if args.get('time_source', self.default_time_source) == 'sfp0': + reg_offset = 0x400 + ref_clk_freq = 62.5e6 + ext_pps_delay = 1 # only 1 flop between the WR core output and the TDC input synchronizer = ClockSynchronizer( dboard_ctrl_regs, self.lmk, self._spi_ifaces['phase_dac'], - 0, # register offset value. + reg_offset, self.master_clock_rate, - self.ref_clock_freq, + ref_clk_freq, 860E-15, # fine phase shift. TODO don't hardcode. This should live in the EEPROM self.INIT_PHASE_DAC_WORD, self.PHASE_DAC_SPI_ADDR, - 5, # External PPS pipeline delay from the PPS captured at the FPGA to TDC input + ext_pps_delay, + self.N3XX_INT_PPS_DELAY, self.slot_idx) # The radio clock traces on the motherboard are 69 ps longer for Daughterboard B # than Daughterboard A. We want both of these clocks to align at the converters |