aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* b200: Add a prop tree node usb_versionMartin Braun2020-04-141-0/+1
| | | | | At /mboards/0/usb_version, we can now read back an int. It's either 2 or 3, depending on what we're using.
* tests: migrated rfnoc block tests to dedicated subdirectorymattprost2020-04-136-381/+455
| | | | | | | | This separates the rfnoc block tests into files for each specific block. This was done to improve the readability of these files and declutter the tests directory. Signed-off-by: mattprost <matt.prost@ni.com>
* docs: Add stream and transport args documentationAaron Rossetto2020-04-132-6/+210
| | | | | | Add some additional documentation to the Configuration Devices and Streamers and Transport Notes pages regarding stream arguments and their use.
* multi_usrp: Approximate legacy behaviour for recv_async_msg()Martin Braun2020-04-133-13/+34
| | | | | | | | | | | | | When using multi_usrp with an RFNoC device, the previous behaviour was to throw an exception when calling recv_async_msg() so users would know they're not supposed to call it (calling tx_stream::recv_async_msg is preferred). However, this breaks too many existing applications. Instead, we keep a weak pointer to the streamer, the same way that older devices do, and query the async message from that. This means that calling recv_async_msg() when there are multiple streamers can lead to unexpected behaviour, but that's a general issue with multi_usrp::recv_async_msg() and this way, the RFNoC devices now behave like older devices do.
* multi_usrp_rfnoc: Manually pass sample rate to ddc/ducsteviez2020-04-135-0/+38
| | | | | | | | | | | | | | This adds (and calls) methods to manually pass radio block sample rate to the input/output properties of the ddc/duc during creation of the multi_usrp_rfnoc object. The ddc/duc require this information in order to return valid, possible output/input sample rates in get_rx_rates()/get_tx_rates(). Before, the ddc/duc wouldn't have this rate until the rfnoc_graph had been connected and committed, which happens in get_rx_stream()/get_tx_stream(). Thus, this fixes an issue where a user was unable to query possible sample rates prior to specifying a sample rate and creating a stream.
* multi_usrp_rfnoc: Fix get_rx/tx_rates()steviez2020-04-131-12/+10
| | | | | This replaces incorrect code with the proper function calls to retrieve the range of possible sample rates.
* fixup! uhd: Add fuzzy serial number checkingmattprost2020-04-093-12/+11
|
* lib: Properly do reset routines in client_zeroMartin Braun2020-04-091-2/+6
| | | | | The current reset routines write a '1' twice for reset, instead of '0' then '1' (resets get triggered on a rising edge).
* fpga: e31x: Update constraints to avoid timing issuesWade Fife2020-04-081-6/+6
| | | | | | | Xilinx changed the way [all_registers -edge_triggered] is treated such that set_max_delay constraints that use it can cause segmentation and cause clocks to not be propagated to all endpoints. Changing to [all_ffs] avoids this potential issue.
* tests: Fix client_zero_test flush bit testMartin Braun2020-04-081-6/+12
| | | | | A test to check the address was using a & instead of a %, resulting in a -Wtautological-compare.
* uhd: mpm: Query prefs per-device for multi-device queriesLane Kolbly2020-04-083-6/+16
| | | | | | | If a user specifies a multi-device query, such as "serial0=1234,serial1=4321", we have to look up the preferences for each device. To minimize the impact to non-x400 devices, I simply push the get_usrp_args call down into mpmd_impl and mpmd_find.
* uhd: Add missing include guardsLane Kolbly2020-04-083-0/+6
|
* uhd: Replace include guards with pragma onceLane Kolbly2020-04-08270-1077/+272
| | | | | Pragma once is the more modern version of include guards, eliminating any potential problems with mistyping include guards. Let's use those.
* uhd: Add fuzzy serial number checkingLane Kolbly2020-04-086-1/+83
| | | | | | | | | We have integer 32-bit serial numbers for MPM devices, for example "1234abcd". For serial numbers which have less than eight digits, e.g. "123abcd", a user may feel inclined to prefix this number with a 0 when they are searching for devices, e.g. "0123abcd". This change makes it so that specifying "0123abcd" will match a device with serial number "123ABCD".
* fixup! docs: Update Basic/LF dboard references to use new operating modeMartin Braun2020-04-071-6/+6
|
* tests: Add FIR filter block controller unit testAaron Rossetto2020-04-072-0/+247
|
* rfnoc: Add FIR filter RFNoC block controllerAaron Rossetto2020-04-075-3/+176
|
* uhd: Add quotes around test environment variablesLane Kolbly2020-04-071-1/+1
| | | | | | | On systems which have spaces in the environment variables, such as $PATH, attempting to run the generated test scripts will throw an error about a bad variable name. Adding quotes around the values prevents this error.
* fixup! rfnoc: Use multichannel register interface for RFNoC blocksmattprost2020-04-073-9/+9
|
* uhd: math: Add interpolation.hppMartin Braun2020-04-0713-52/+208
| | | | | | | | - Moves linear_interp from cal to utils - Moves the interp_mode enum class to interpolation.hpp - Adds three interpolation methods for maps: at_interpolate_1d(), at_nearest(), at_lin_interp() - Adds unit tests
* devtest: add missing devtest to n3xxCiro Nishiguchi2020-04-031-0/+1
|
* utils: cal: Remove boost usage from usrp_cal_utils.hppMartin Braun2020-04-021-3/+0
| | | | | There were spurious boost includes left in here after applying 7ad64600f and a1f96194.
* cmake: Add ability to pass CXXFLAGS to CMake environmentAjith Saya2020-04-021-0/+3
| | | | CMAKE_CXX_FLAGS will now respect $CXX_FLAGS.
* uhd: paths: Harmonize around XDG Base Directory specificationMartin Braun2020-04-029-60/+159
| | | | | | | | | | | | | | | | | | | | | | Up until now, we completely ignore the XDG specification. This commit does the following to change that: - It uses XDG_DATA_HOME and XDG_CONFIG_HOME for cal and config data, respectively. - If config data is in ~/.uhd/uhd.conf, that is still accepted, but if it conflicts with $XDG_CONFIG_HOME/uhd.conf, it is ignored and a warning is displayed - The default location for cal data is thus ${HOME}/.local/share/uhd/cal on Unix, and %LOCALAPPDATA%\uhd\cal on Windows. This is a change in location! - The UHD_CONFIG_DIR environment variable was confusingly named and is now removed. It provided an alternative location than the home directory. The same purpose is now much better served by XDG_DATA_HOME and XDG_CONFIG_HOME. The specification can be found here: specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
* rfnoc: Use multichannel register interface for RFNoC blocksmattprost2020-04-024-54/+61
| | | | | | | | Allows RFNoC blocks to perform register peeks and pokes on blocks with multiple channels without having to worry about handling register address translation every time. Signed-off-by: mattprost <matt.prost@ni.com>
* rfnoc: Add multichannel register interfacemattprost2020-04-024-5/+480
| | | | | | | | | | | This utility class implements the register access methods of reg_iface but adds built-in address translation features for consecutive instances of an RFNoC block. The register peek and poke methods accept an extra 'instance' parameter which is used to calculate the absolute address for the register access. This can be used for accessing registers for the different channels of a multi-channel block (i.e. Radio, DDC, DUC, etc). Signed-off-by: mattprost <matt.prost@ni.com>
* utils: cal: Enable "ignore cal file" option for DC and IQ cal toolsMartin Braun2020-04-021-5/+5
| | | | | | | | | | | The utilities uhd_cal_rx_iq_balance, uhd_cal_tx_iq_balance, and uhd_cal_tx_dc_offset now add the flags to ignore cal files. Otherwise, the utility would load existing cal data before generating new cal data. Note that this is not a huge problem, because the cal coefficients get overwritten during the cal process, but is unnecessary disk I/O. This commit also happens to remove all boost::format uses within usrp_cal_utils.hpp.
* utils: Add convert_cal_data utilityMartin Braun2020-04-023-0/+107
| | | | | | | | | This will convert cal data files based on CSV to the new binary format. In most cases, running ./convert_cal_data.py is sufficient.
* uhd: cal: Use usrp::cal::database instead of CSV filesMartin Braun2020-04-026-200/+229
| | | | | | | | | Now that we have cal::iq_cal and cal::database, there's no need to manually wrangle CSV files for calibration data. This commit replaces all CSV operations with cal::database calls and uses cal::iq_cal as a container. CSV files can still be read, but are considered deprecated.
* uhd: cal: Add iq_cal calibration data container classMartin Braun2020-04-0217-1/+760
| | | | | | | | This class can be used to store calibration coefficients for the X300 DC offset and IQ imbalance calibration. Note: This also modifies Doxyfile.in to not document files generated by flatc.
* uhd: Add calibration container classMartin Braun2020-04-023-0/+68
| | | | | | | This adds uhd::usrp::cal::container, which serves as a base class for calibration data. It also provides the interp_mode enum class which can be useful for future calibration classes.
* fpga: tools: Add support for .sdc in VivadoPaul Butler2020-04-021-0/+3
| | | | | | viv_utils.tcl will now read files with the .sdc suffix using the read_xdc Vivado command. This is especially useful when I/O timing constraints in the FPGA and CPLD need to depend on a common constant.
* fpga: rfnoc: Add gate to dynamically enable control-port interfacesMax Köhler2020-04-011-0/+91
|
* fpga: rfnoc: ctrport_combiner with deterministic latency for PRIORITY=1Max Köhler2020-04-011-13/+51
| | | | | The latency through the combiner is static if only one master interface is used and PRIORITY=1 is set.
* fpga: tools: Add default Vivado install locationWade Fife2020-04-011-1/+5
| | | | | | Xilinx changed the default Vivado install location from /opt/Xilix to /tools/Xilinx. This commit adds support for finding Vivado in either the new location or the old location.
* multi_usrp: Fix ALL_CHAN and ALL_MBOARDS API calls for Gen-3 devicesMartin Braun2020-03-311-105/+64
| | | | | | | | Most of the API calls that default an arg to ALL_CHANS or ALL_MBOARDS were in fact broken. This adds a macro to efficiently mux out API calls that take such wildcard arguments so we don't have to repeat the same loop all over the place, even for those API calls that already correctly implemented wildcards (for consistency).
* utils: uhd_usrp_probe: Output frontend infoMichael West2020-03-311-5/+13
| | | | | | Add output of frontend info for RFNoC devices. Signed-off-by: Michael West <michael.west@ettus.com>
* docs: Update Basic/LF dboard references to use new operating modemattprost2020-03-312-21/+31
| | | | | | | | | | | | | | | On the new RFNoC with UHD 4.0 architecture, Basic/LF dboards use a new operating paradigm. The streaming mode (real mode or complex) is determined by setting the antennas (to A/B or AB/BA respectively). Basic/LF RX dboards also support 2 frontends (0 and 1), and Basic/LF TX dboards support 1 frontend (0). This new behavior only applies to applicable RFNoC devices (currently X300/X310). All pre-RFNoC devices (i.e. USRP2/N200 and earlier) maintain legacy behavior. RFNoC with UHD 3.xx branches also maintains old behavior. Signed-off-by: mattprost <matt.prost@ni.com>
* examples: Change benchmark_rate default thread priorityAaron Rossetto2020-03-271-1/+1
| | | | | | | | | | | | | | | | | | This commit modifies the benchmark_rate example to use the operating system's default thread priority, instead of real-time thread priority, by default. UHD 4.0 includes a number of significant improvements to the streaming architecture that allow for best performance to be achieved without having to resort to elevating the process thread priority to real-time. Internal testing shows degraded streaming performance in common use cases (i.e. non-DPDK) when the process thread priority is set to real-time. It should be noted that applications which use DPDK may still experience better performance when the process thread priority is set to real-time. Users may continue to manually override the process thread priority in benchmark_rate using the --priority=high command-line option. The need to elevate the process thread priority will be application- and deployment-dependent.
* fixup! x300: lf/basic antenna API implementationMartin Braun2020-03-261-2/+2
|
* uhd: cal: Add database classMartin Braun2020-03-2612-0/+542
| | | | | | This class contains methods to store and retrieve data from the local calibration database. Note that in this case, the "database" is just a bunch of files on the local filesystem.
* uhd: paths: Add get_cal_data_path() API callMartin Braun2020-03-263-1/+25
| | | | This points to the location where cal data is stored.
* fpga: tools: Add ModelSim to run_testbenches.pyWade Fife2020-03-231-11/+11
| | | | | This adds the "modelsim" simulator option to run_testbenches.py to allow for regression testing of the native ModelSim simulation target.
* fixup! fpga: tools: Add modelsim to make sim targetsWade Fife2020-03-231-27/+25
|
* x300: lf/basic antenna API implementationmattprost2020-03-234-110/+234
| | | | | | | | | | | | | | | | This results in a change of operation for LF/Basic Boards on X300/X310 devices. The RX streaming mode will now be specified by the antenna rather than the subdev: (AB or BA for complex streaming, and A or B for real-mode streaming, with AB being the default antenna value). For real-mode streaming, data is collected as complex data with zeroed-out values in the quadrature domain. The subdevs for these boards have been changed to 0 and 1 for the RX channels, and 0 for the TX channel, in order to align with subdev specs of other RFNoC devices. Note: the old streaming mode paradigm is still in place for the N210.
* fpga: Fix errors found by linting with vsimAndrew Moch2020-03-236-19/+22
|
* utils: uhd_images_downloader: use HTTPS instead of HTTP to avoid redirectMarcus Müller2020-03-201-1/+1
| | | | | | | | Since the webserver responding to requests at http://files.ettus.com replies with a redirect to the same URL, but using the https:// transport, this isn't only the safer thing we should be doing, anyways, but also the quicker, since it saves the user from one unnecessary redirect.
* fpga: tools: Add modelsim to make sim targetsAndrew Moch2020-03-204-35/+127
| | | | | | | | | | | | | | | This adds a simulation make target that allows you to run ModelSim natively rather than through Vivado. Adds or modifies the following simulation make targets: make vlint - Brake up compilation to Verilog/SystemVerilog/VHDL make modelsim - Depends on make vlint and invokes modelsim Adds the following variables: MODELSIM_ARGS - Added to invocation of ModelSim SVLOG_ARGS - Added to SystemVerilog invocation of vlog VLOG_ARGS - Added to Verilog invocation of vlog VHDL_ARGS - Added to VHDL invocation of vcom
* uhd: math: Add linear_interp()Martin Braun2020-03-182-7/+30
| | | | This lets you linearly interpolate between two points.
* debian: Rename control file for libuhd to contain 4.0.0 versionMartin Braun2020-03-181-0/+0
|