diff options
Diffstat (limited to 'usrp/host/swig/util.py')
-rw-r--r-- | usrp/host/swig/util.py | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/usrp/host/swig/util.py b/usrp/host/swig/util.py new file mode 100644 index 0000000000..089bcaaac2 --- /dev/null +++ b/usrp/host/swig/util.py @@ -0,0 +1,95 @@ +# utilities + +from usrp_prims import * + +def setup (which_board = 0): + if not usrp_load_standard_bits (which_board, False): + raise RuntimeError, "usrp_load_standard_bits" + dev = usrp_find_device (which_board) + if not dev: + raise RuntimeError, "usrp_find_device" + u = usrp_open_cmd_interface (dev) + if not u: + raise RuntimeError, "usrp_open_cmd_interface" + + # FIXME setup high speed paths, Aux ADC Clock, ... + + # usrp_9862_write (u, 0, 35, 0x1) # aux ADC clock = CLK/4 + # usrp_9862_write (u, 1, 35, 0x1) + + return u + +def write_slot_oe (u, slot, value, mask): + assert 0 <= slot and slot < 4 + return usrp_write_fpga_reg (u, slot + FR_OE_0, + ((mask & 0xffff) << 16) | (value & 0xffff)) + +def write_slot_io (u, slot, value, mask): + assert 0 <= slot and slot < 4 + return usrp_write_fpga_reg (u, slot + FR_IO_0, + ((mask & 0xffff) << 16) | (value & 0xffff)) + + +# ---------------------------------------------------------------- + + +def ramp_aux_dac (u, which_codec, which_dac): + if not (which_codec == 0 or which_codec == 1): + raise AssertionError + if not (which_dac >= 0 and which_dac < 4): + raise AssertionError + try: + if which_dac == 3: # sigma delta output + sigma_delta_loop (u, which_codec) + else: + aux_dac_loop (u, which_codec, which_dac) + except KeyboardInterrupt: + return + +def sigma_delta_loop (u, which_codec): + counter = 0 + while True: + usrp_9862_write (u, which_codec, 43, counter >> 4) + usrp_9862_write (u, which_codec, 42, (counter & 0xf) << 4) + # counter += 1 FIXME + counter += 4 + if counter > 0xfff: + counter = 0 + +def aux_dac_loop (u, which_codec, which_dac): + reg = 36 + which_dac # Aux DAC A,B,C + counter = 0 + while True: + usrp_9862_write (u, which_codec, reg, counter) + counter += 1 + if counter > 0xff: + counter = 0 + + +def read_aux_adc_loop (u, slot, which_adc): + while True: + v = usrp_read_aux_adc (u, slot, which_adc) + print "%3d %5.3f" % (v, v * 3.3 / 1024) + +def ramp_io_port (u, slot): + counter = 0 + try: + while True: + write_slot_io (u, slot, counter, 0xffff) + counter += 1 + if counter > 0xffff: + counter = 0 + except KeyboardInterrupt: + return + +def walk_io_port (u, slot): + bit = 1 + try: + while True: + write_slot_io (u, slot, bit, 0xffff) + bit = (bit << 1) & 0xffff + if bit == 0: + bit = 1 + except KeyboardInterrupt: + return + |