Modified example to support demonstratig the X440 phase repeatability
performance when using dram feature. Change is compatible with all supported
rfnoc devices that utilize the RFNoC Replay Block, but only improves
phase repeatability performance of X440.
Separated loops configuring radio properties and converted setting carrier
frequency into timed commands. This required moving this code to a later
part in the programming flow, after all the clock source settings are
applied and the LO locks are confirmed.
When calling rx_to_file.py with the --dram option, it will internally
use DramReceiver and buffer the signal into the DRAM before transferring
it to the host.
Fixed bug that used hardcoded channel variable to configure
device (rate, freq, gain), but channel list from argument during
streaming configuration.
Fixed bug when specifying multiple channels with duration argument
that resulted into python syntax error.
Changed multi channel behavior to use unique streamer per channel,
which now requires specifying dest-port per channel. This approach
ensures receiver implementation can associate data with a usrp
channel.
This example demonstrates the simultaneous capture of the entire L-band
which extends from 1 GHz to 2.4 GHz using one channel on each of the two
radios using the dual rate feature. This is supported ionly on the X440 device.
Read the comments in the example for details.
Does the following:
- Sets up connections in rfnoc graph
- Configures radios and dual replay blocks
- Synchronously captures data and streams to replay block
- Fetches data to host and plots a windowed FFT.
- Repeat.
Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
Co-authored-by: Martin Anderseck <martin.anderseck@ni.com>
When calling tx_waveforms.py with the --dram option, it will internally
use DramTransmitter and first upload the signal before transmitting it
from DRAM.
Adds --throttle argument, which controls the playback rate to the host
and is set as a percentage of maximum stream endpoint throughput.
Also adds --no-progress to disable the TQDM progress bar and increases
the buffer size used with TQDM to avoid overusing the CPU during
playback to the host.
This reverts the Raw UDP host changes which is breaking
multiple interface streaming.
Commits addb81aa5d2d6adcd3a0c7a8d59fcd96af0c1ec4^..b1ca51f97aaa2226ed6ef339fb26fbea54ab7593
are reverted.
Reverts:
doc: Update manual on streaming
examples: Add remote RX streaming example
rfnoc: Enable remote UDP streaming
mpm: e320: Enable raw UDP streaming
mpm: n3xx: Enable raw UDP streaming
mpm: x4xx: Enable transport manager adapter
mpm: Enable opt-in transport adapter control
rfnoc: Transition stream managers and mgmt_portal to topo_graph_t
rfnoc: Add topology graph object
uhd/mpm: Add API to set remote routes
mpm: xports: Add XportAdapterMgr class
the USRP power meter will only receive from a single channel which
is configured by the argument parameter. The streamer receive
data will therefor alwalys have a single channel. So do not index
with chan when passing the streamer to uhd.dsp.signals.get_usrp_power.
- Like with RX, this now allows passing in stream time and existing
streamer
- There was no EOB being sent at the end (now there is)
- Fixed some linter issues
This fixes a subtle bug, where a variable to cache the timestamp of an
error gets bound to the metadata instead of creating a copy thereof.
Without this fix, the calculation of dropped samples would always be 0,
because the difference in timestamps would incorrectly be always zero.
This fix will now make a copy of the timestamp.
Shoutout to GitHub user bhorsfield for finding this issue.
This PR applies antenna channel settings before available calibration
data, and moves initialization code to setup_device, returning necessary
settings in a tuple.
This is a utility that can be used to measure received power, assuming
a calibrated device.
For example, it can be called like this:
usrp_power_meter.py -a type=x300 -f 1e9 --mode continuous
To continuously measure input power at 1 GHz.
This changes two things in all applicable files:
- Remove imports from __future__
- Change default shebangs from /usr/bin/env python to /usr/bin/env
python3
This allows adding stream args to the Python version of benchmark_rate
in the same way as for the C++ version, e.g.:
python3 ./benchmark_rate.py \
--args addr=192.168.40.2,num_poll_offload_threads=4 \
--rx_stream_args \
recv_offload=1,num_recv_frames=32,recv_offload_wait_mode=poll \
--tx_stream_args \
send_offload=1,num_send_frames=32,send_offload_wait_mode=poll \
[... other arguments ...]
- When printing statistics, the number of TX and RX timeouts were mixed
up.
- Fixing main() docstring
Fixes e735a63ff9 ("python: Adding Python API benchmark rate")
Duration of multichannel benchmark was 50 seconds longer than
intended- a 50ms initialization delay was mistakenly multiplied by
1000.
Fixes e735a63ff9 ("python: Adding Python API benchmark rate")
- Separating exposed Python data structures into logical sections
- Exposes all of the multi_usrp API
- Adds a layer of Python for documentation and adding helper methods
- Adds improvements and fixes to the MultiUSRP object
- Includes additional exposed data structures (like time_spec_t, etc.)
- Add code to release the Python GIL during long C++ calls
Initial commit of the Python API using Boost.Python. Bind the
MultiUSRP API for use in Python. Bindings intended to provide as
complete coverage as possible.
- Wrap most multi_usrp calls
- Adding multi channel send/recv examples in examples/python
- Adding setuptools support
- Initial attempt at binding the UHD types and filters