diff options
-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; } } |