diff options
| author | michael-west <michael.west@ettus.com> | 2016-05-26 12:47:17 -0700 | 
|---|---|---|
| committer | michael-west <michael.west@ettus.com> | 2016-05-26 12:54:45 -0700 | 
| commit | 3ed076048259cbb993e3989bf84726048478195c (patch) | |
| tree | 54f412d14465af6081a223a1e2a5531314373547 /host/lib | |
| parent | c83e7f747c4060f9196c5c1ee247fc3b18f49975 (diff) | |
| download | uhd-3ed076048259cbb993e3989bf84726048478195c.tar.gz uhd-3ed076048259cbb993e3989bf84726048478195c.tar.bz2 uhd-3ed076048259cbb993e3989bf84726048478195c.zip  | |
UBX: Force RX LNAs on to reduce RX settling time
Diffstat (limited to 'host/lib')
| -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 5bd058f6e..15a4d17a9 100644 --- a/host/lib/usrp/dboard/db_ubx.cpp +++ b/host/lib/usrp/dboard/db_ubx.cpp @@ -1079,6 +1079,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 @@ -1090,36 +1102,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;          }      }  | 
