aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/python/usrp_mpm
Commit message (Collapse)AuthorAgeFilesLines
* rh: disable lmk test outputMark Meserve2018-10-301-1/+1
| | | | - Improves spur performance
* rh: Phase DAC configuration clean-upHumberto Jimenez2018-10-301-6/+4
| | | | | | | | | | | | | | | | | | | | | - Confirmed the Phase DAC to be initialized at mid-scale. - Confirmed the Phase DAC step resolution for fine clock shifting. The clock synchronization algorithm relies on the Phase DAC to fine shift the sampling clocks on each daughterboard. Only a certain number of DAC codes are required for the actual clock adjustment, thus a different range of codes may be chosen by initializing the Phase DAC with a given value. With the selected range, one may measure the Phase DAC's linearity and step resolution, which defines how many steps are required when performing the fine shifting of the clocks. After initializing the 16-bit Phase DAC at 25%, 50% (mid-scale), and 75%; it was found that the clock distribution PLL locks relatively faster when using mid-scale (2^15). By testing the Phase DAC's linearity, it was confirmed that the circuit resolution is 1.11 ps per code.
* rh: Deterministic latency optimization in JESD204BHumberto Jimenez2018-10-301-3/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | - Optimized JESD204B RX/TX links' latency. - Made JESD latency constant across supported frequencies. - Checking RX SYSREF capture in the FPGA deframer block. The JESD204B standard can be linked in such a way to produce a repeatable, deterministic delay from the framer to deframer. This is accomplished by setting up a LMFC (local multiframe clock) in both devices. The LMFCs are reset whenever a SYSREF edge is captured by the framer and deframer. Therefore, it is simple to control the LMFC rising edges in each device by implementing variable delay elements on the SYSREF pulses to the framer and deframer. Latency across the JESD204B TX/RX links should remain constant and deterministic across the supported sampling_clock_rate values. By testing the roundtrip latency (i.e. FPGA -> TX -> RX -> FPGA) with different delay values in the FPGA, one may decrease the latency and provide enough setup and hold margin for the data to be transfered through each JESD link. It was found that a different set of SYSREF delay values are required for sampling_clock_rate = 400 MSPS to match the latency of the other supported rates.
* rh: add support for rhodium devicesMark Meserve2018-10-2511-1/+2525
| | | | | | Co-authored-by: Humberto Jimenez <humberto.jimenez@ni.com> Co-authored-by: Alex Williams <alex.williams@ni.com> Co-authored-by: Derek Kozel <derek.kozel@ni.com>
* nijesdcore: add PRBS-31 testingMark Meserve2018-10-251-0/+37
|
* nijesdcore: add eyescan utilityMark Meserve2018-10-253-4/+860
|
* nijesdcore: add variable configuration supportMark Meserve2018-10-254-30/+50
|
* mpm: e320: n3xx: Factor BIST code to common moduleMartin Braun2018-10-241-0/+598
|
* n3xx: output exception string on boot init failureMark Meserve2018-10-241-1/+1
|
* mpm: Add lock_guard() functionMartin Braun2018-10-231-0/+22
| | | | | This allows sharing mutexes between C++ and Python, and uses the with statement to provide a locked-out context.
* mpm:n3xx: improve set_time_source,set_clock_sourceTrung Tran2018-10-221-50/+88
| | | | | | Add coercing behavior to set_time_source and set_clock_source to a valid sync source. Also, skip set_sync_source if device already set to the corresponding one.
* mg: adding skip_rfic argumentTrung Tran2018-10-182-3/+6
| | | | | | This change to add skip_rfic as an device argument. skip_rfic should be only used in ref_clock bist tests to bring down the test time.
* mpm: identify sysfs gpios more genericallyMark Meserve2018-10-184-22/+59
| | | | | - Allow generic path names to be given for each search parameter instead of only checking the label
* N310: Clarify logging for when re-inits occurTrung Tran2018-10-161-0/+2
|
* mpm: n3xx: Fix Pylint warningsMartin Braun2018-10-121-11/+12
| | | | | This commit contains whitespace and formatting changes only. No functional changes.
* mpm: dboard_manager: add more args to update_ref_clock_freqTrung Tran2018-10-123-8/+10
| | | | | | | | | | | | | | | Summary: This change will allow correct args to pass from mboard to dboards, that in turn can be useful for dboard manager. Details: In N310, the dboard manager needs the time source to be updated before calling update_ref_clock_source(), because it will trigger a reinit of the dboard, for which the time_source is essential to determine correct clock synchronizer settings. The special case is the white rabbit time source needs a different internal ref_clock_frequency for the clock synchronizer than the passed in ref_clock_freq.
* mpm: Add __mpm_device__ as usrp_hwd module variableMartin Braun2018-10-092-0/+2
|
* n3xx: e320: fixing GPSDIface sensor namesBrent Stapleton2018-09-262-2/+2
| | | | | N3xx and E320 were registering GPSDIface names as get_*_sensor instead of just the sensor name. Fixing this to now register the sensor name.
* mpm: add link_speed xport_infoTrung Tran2018-09-132-0/+22
|
* n3xx: Get RFNoC crossbar baseport from FPGABrent Stapleton2018-09-062-2/+7
|
* e320: Get RFNoC crossbar baseport from FPGABrent Stapleton2018-09-062-2/+8
|
* mpm: tdc: update PDAC BIST and flatness test to use latest APIsDaniel Jepson2018-09-051-29/+35
|
* mpm: reset the RPC server upon reloadBrent Stapleton2018-08-271-0/+10
| | | | | | | | | | | When reloading the Periph Manager (as when we run the image loader), we need to run the RPCServer `__init__` function in order to reset the cache of RPC methods. Otherwise, that cache keeps stale references to old functions (and prevents garbage collection). It may be possible to reset the method cache some other way, but the `_methods` attribute of RPCServer is Cython, and doesn't seem to be accessible in our Python code.
* mpm: add Git hash, version to device infoBrent Stapleton2018-08-202-1/+13
| | | | | | | | Adding MPM Git hash and version to the MPM device info. This information is currently only available through logs when MPM starts (it is the first log message in usrp_hwd.py). Adding it to the device info makes it accessible to any application which checks that, such as uhd_usrp_probe.
* mpm: mg: move init_rf_cal before JESD de/framer bringupTrung Tran2018-08-161-4/+4
| | | | This sequence is the one as described by the AD9371 user guide.
* mpm: n3xx: Improve error messages for invalid clock/time settingsMartin Braun2018-08-131-2/+4
|
* mpm: n3xx: Bump max rev to G/6Martin Braun2018-08-101-1/+1
|
* e320: Add all 5 temp sensors, fan sensor and rssi sensors per channelSugandha Gupta2018-08-092-21/+42
|
* mpm: sys_utils: Get list of temperatures from all thermal zonesSugandha Gupta2018-08-091-4/+21
|
* adf400x: Fix adf400x driver for ref counter and charge pump modeSugandha Gupta2018-08-021-11/+19
| | | | | | | - For different ref clock frequencies, the ref_counter should change and not the n_counter. - The charge pump should be set to normal mode and tristate as that would prevent the PLL to lock.
* mpm: n3xx: clocking API changes for transitioning clock and time sourcesDaniel Jepson2018-08-024-101/+231
| | | | | | Added set_sync_source method to set both the time and clock sources without forcing a re-init twice. Modified the existing set_time_source and set_clock_source methods to call into set_sync_source.
* mpm: mg: periphs: Modify AD9361 reset function to keep it in resetMartin Braun2018-08-021-2/+9
|
* e320: Fix front panel gpio to support 3.3VSugandha Gupta2018-07-312-22/+19
| | | | | - E320 will support only 3.3 V for the front panel GPIO - Remove other voltage options
* e320: Add 'ref_locked' sensor to mboard sensorsSugandha Gupta2018-07-311-0/+14
|
* n3xx: Fixup for parsing the EEPROMBrent Stapleton2018-07-301-3/+2
| | | | | | | EEPROM parsing in MPM was ignoring the dt_compat number (MPM doesn't need it), so when the dt_compat number was non-zero, the CRC calculation was incorrect. CRC calculations are now done on the raw data.
* mpm: n3xx: Allow to run without daughterboards connectedTrung Tran2018-07-231-0/+2
| | | | | The product ID will fall back to the motherboard ID (n300, n310). This will load FPGA images even if there is no daughterboard connected.
* uio: mpm: Fixup for opening mboard-regs UIOBrent Stapleton2018-07-237-62/+71
| | | | | | | | | - Fix the syntax to open mboard-regs UIO objects, and change the open() and close() functions to be private. - We were calling open() twice in every context manager line- once manually, and once in __enter__. This commit corrects those usages, and allows the context manager to fully manage the opening and closing of UIO objects.
* mpm: uio: Fix use of loggerMartin Braun2018-07-191-1/+2
| | | | When logger==None, it uio.py would fail.
* mpm: n3xx: Init device on bootMartin Braun2018-07-181-0/+5
| | | | | Specify skip_boot_init=1 to not init during boot. This will increase boot time for an N310, typically by around 15 seconds.
* e320: mpm: Add dboard and mboard sensorsSugandha Gupta2018-07-183-30/+148
| | | | | | | | Adding the following sensors: - Catalina temperature, RSSI, and LO Lock sensors - GPS lock, time, TPV, and SKY sensors Co-authored-by: Brent Stapleton <brent.stapleton@ettus.com>
* mpm: initial commit of E320 codeBrent Stapleton2018-07-186-7/+1345
| | | | Co-authored-by: Sugandha Gupta <sugandha.gupta@ettus.com>
* mpm: mg: Adding fast-reinit modeMartin Braun2018-07-172-19/+99
| | | | | | | | | | When a device is re-initialized without any changes (e.g., master_clock_rate, ref_clock_freq) then we can skip the initialization sequence and move on. This shaves a significant amount of time from the init sequence. Fast re-init can be overridden by providing the `force_reinit=1` device arg.
* mpm: mg: Move RF cal initialization after JESD initMartin Braun2018-07-171-2/+1
|
* mpm: mg: Store init args between runsMartin Braun2018-07-171-2/+6
|
* mpm: Remove unused _init_args from PeriphManagerBaseMartin Braun2018-07-171-4/+0
|
* mpm: n3xx: mg: Refactor init codeMartin Braun2018-07-174-499/+585
| | | | | | | All code relevant to initializing an N310/N300 daughterboard is moved to its own module (mg_init.py). No functional changes.
* mpm: n3xx: Remove unused importsMartin Braun2018-07-171-2/+0
|
* mpm: mg: Print AD9371 info as debug message during initMartin Braun2018-07-171-0/+8
|
* mpm: n3xx: Factor out component updatingBrent Stapleton2018-07-114-73/+105
| | | | | | | | | - Refactoring component (FPGA, DTS) updating functions out of n3xx.py into their own components.py. The ZynqComponent class now defines the methods to update these two components. - Adding super().__init__() to the PeriphManagerBase class. This is needed to get the multiple inheritance used in N3XX now to work, and (apparently) good Python practice.
* mpm: n3xx: Factor out GPSd Iface functionsBrent Stapleton2018-07-062-70/+129
| | | | | | | | | | | | | | - Refactoring GPSd interface to be instead wrapped by a GPSDIfaceExtension class. This class will faciliate "extending" an object, allowing that object to call the GPSDIfaceExtension methods as their own. - New MPM devices (or whatever else) can now use the GPSDIfaceExtension class instead of writing their own GPSDIface handling functions. - N3XX now instantiates a GPSDIfaceExtension object, and extends itself. This means that an n3xx object can call the `get_gps_time` method as its own, for example. - N3XX must get through initialization in order for the GPSd methods to be registered.