mirror of
https://github.com/saymrwulf/uhd.git
synced 2026-05-16 21:10:10 +00:00
- new OOT-blocks: phase_calc_ccf hier-block, measurement_sink_f
- new python submodules: flowgraphs, functions, rts_tests
- new apps: usrp_phasealignment.py - cmdline example for manual testing
OOT-Blocks:
- phase_calc_ccf takes two complex input streams and conjugate
multiplys them and extracts the phase from the result and converts
it to degree scale
- measurement_sink_f: takes a float input stream and calculates average and stddev for a
specified number of samples. Start of a measurement is invoked by a
call of start_run() on the block. After a couple of runs average and
stddev can be extracted.
Python modules:
- flowgrahps contains reconfigurable flowgraphs for different GNU
Radio RF test cases
- functions contains functions which are used in different apps/RTS
scripts
- rts_tests contains test cases which are meant to be executed from
the RTS system. Depends on TinyDB, labview_automation
Apps:
- usrp_phasealignment.py is an example how to use the underlying
flowgraph to measure phase differences. Commandline arguments of
uhd_app can be used and several additional arguments can/have to be
specified. Runs a phase difference measurement --runs number of times and averages
phase difference over --duration seconds. Between measurements USRP
sinks are retuned to random frequencies in daughterboard range.
Results are displayed using motherboard serial and daughterboard
serial
47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
#
|
|
# Copyright 2016 Ettus Research LLC.
|
|
#
|
|
# This is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3, or (at your option)
|
|
# any later version.
|
|
#
|
|
# This software is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this software; see the file COPYING. If not, write to
|
|
# the Free Software Foundation, Inc., 51 Franklin Street,
|
|
# Boston, MA 02110-1301, USA.
|
|
#
|
|
|
|
from gnuradio import gr
|
|
from gnuradio import blocks
|
|
import numpy as np
|
|
|
|
|
|
class phase_calc_ccf(gr.hier_block2):
|
|
"""
|
|
docstring for block phase_calc_ccf
|
|
"""
|
|
|
|
def __init__(self):
|
|
gr.hier_block2.__init__(
|
|
self,
|
|
"phase_calc_ccf",
|
|
gr.io_signature(2, 2, gr.sizeof_gr_complex), # Input signature
|
|
gr.io_signature(1, 1, gr.sizeof_float)) # Output signature
|
|
self.block = dict()
|
|
self.block['mult_conj'] = blocks.multiply_conjugate_cc()
|
|
self.block['arg'] = blocks.complex_to_arg()
|
|
self.block['mult_const'] = blocks.multiply_const_ff(180.0 / np.pi)
|
|
|
|
self.connect((self, 0), (self.block['mult_conj'], 0))
|
|
self.connect((self, 1), (self.block['mult_conj'], 1))
|
|
self.connect((self.block['mult_conj'], 0), (self.block['arg'], 0))
|
|
self.connect((self.block['arg'], 0), (self.block['mult_const'], 0))
|
|
self.connect((self.block['mult_const'], 0), (self, 0))
|