mirror of https://gerrit.osmocom.org/libusrp
96 lines
2.6 KiB
Python
96 lines
2.6 KiB
Python
# 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
|
|
|