diff options
author | Martin Braun <martin.braun@ettus.com> | 2016-05-27 18:30:42 -0700 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2016-05-27 18:30:42 -0700 |
commit | b1c2d4bbb4e1ae3b085bb0ca84b2f53ce8bbd357 (patch) | |
tree | 098298e7831f211dbb3c99f7d3452db5c3b9594e | |
parent | 42b9b0691b08d51be2d756c9a0f9041305047b29 (diff) | |
parent | 3ed076048259cbb993e3989bf84726048478195c (diff) | |
download | uhd-b1c2d4bbb4e1ae3b085bb0ca84b2f53ce8bbd357.tar.gz uhd-b1c2d4bbb4e1ae3b085bb0ca84b2f53ce8bbd357.tar.bz2 uhd-b1c2d4bbb4e1ae3b085bb0ca84b2f53ce8bbd357.zip |
Merge branch 'maint'
-rw-r--r-- | host/lib/usrp/dboard/db_ubx.cpp | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/host/lib/usrp/dboard/db_ubx.cpp b/host/lib/usrp/dboard/db_ubx.cpp index bf932a3a4..be3bdd17d 100644 --- a/host/lib/usrp/dboard/db_ubx.cpp +++ b/host/lib/usrp/dboard/db_ubx.cpp @@ -1112,6 +1112,18 @@ private: boost::mutex::scoped_lock lock(_mutex); if (mode == "performance") { + // performance mode attempts to reduce tuning and settling time + // as much as possible without adding noise. + + // RXLNA2 has a ~100ms warm up time, so the LNAs are forced on + // here to reduce the settling time as much as possible. The + // force on signals are gated by the LNA selection so the LNAs + // are turned on/off during tuning. Unfortunately, that means + // there is still a long settling time when tuning from the high + // band (>1.5 GHz) to the low band (<1.5 GHz). + set_cpld_field(RXLNA1_FORCEON, 1); + set_cpld_field(RXLNA2_FORCEON, 1); + /* // Placeholders in case some components need to be forced on to // reduce settling time. Note that some FORCEON lines are still gated @@ -1123,36 +1135,43 @@ private: set_cpld_field(RXMIXER_FORCEON, 0); set_cpld_field(RXLO1_FORCEON, 0); set_cpld_field(RXLO2_FORCEON, 0); - set_cpld_field(RXLNA1_FORCEON, 0); - set_cpld_field(RXLNA2_FORCEON, 0); //set_cpld_field(TXDRV_FORCEON, 1); // controlled by RX antenna selection set_cpld_field(TXMOD_FORCEON, 0); set_cpld_field(TXMIXER_FORCEON, 0); set_cpld_field(TXLO1_FORCEON, 0); set_cpld_field(TXLO2_FORCEON, 0); - write_cpld_reg(); */ + write_cpld_reg(); + _power_mode = PERFORMANCE; } else if (mode == "powersave") { + // powersave mode attempts to use the least amount of power possible + // by powering on components only when needed. Longer tuning and + // settling times are expected. + + // Clear the LNA force on bits. + set_cpld_field(RXLNA1_FORCEON, 0); + set_cpld_field(RXLNA2_FORCEON, 0); + /* - // Placeholders in case force on bits need to be set or cleared. + // Placeholders in case other force on bits need to be set or cleared. set_cpld_field(RXAMP_FORCEON, 0); set_cpld_field(RXDEMOD_FORCEON, 0); set_cpld_field(RXDRV_FORCEON, 0); set_cpld_field(RXMIXER_FORCEON, 0); set_cpld_field(RXLO1_FORCEON, 0); set_cpld_field(RXLO2_FORCEON, 0); - set_cpld_field(RXLNA1_FORCEON, 0); - set_cpld_field(RXLNA2_FORCEON, 0); //set_cpld_field(TXDRV_FORCEON, 1); // controlled by RX antenna selection set_cpld_field(TXMOD_FORCEON, 0); set_cpld_field(TXMIXER_FORCEON, 0); set_cpld_field(TXLO1_FORCEON, 0); set_cpld_field(TXLO2_FORCEON, 0); - write_cpld_reg(); */ + + write_cpld_reg(); + _power_mode = POWERSAVE; } } |