From 533b7ea652ebe5acc2ec2a5434284af608a0f521 Mon Sep 17 00:00:00 2001 From: Mark Meserve Date: Thu, 29 Jun 2017 14:59:18 -0500 Subject: cbx: turn on LO LPF at <2GHz instead of <1.5GHz --- host/lib/usrp/dboard/db_sbx_common.cpp | 27 ++++++++++++--------------- host/lib/usrp/dboard/db_sbx_common.hpp | 29 ++++++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/host/lib/usrp/dboard/db_sbx_common.cpp b/host/lib/usrp/dboard/db_sbx_common.cpp index efc84d7e6..6b8fd8579 100644 --- a/host/lib/usrp/dboard/db_sbx_common.cpp +++ b/host/lib/usrp/dboard/db_sbx_common.cpp @@ -118,27 +118,24 @@ sbx_xcvr::sbx_xcvr(ctor_args_t args) : xcvr_dboard_base(args){ switch(get_rx_id().to_uint16()) { case 0x0054: db_actual = sbx_versionx_sptr(new sbx_version3(this)); - freq_range = sbx_freq_range; + freq_range = sbx_freq_range; + enable_rx_lo_filter = sbx_enable_rx_lo_filter; + enable_tx_lo_filter = sbx_enable_tx_lo_filter; break; case 0x0065: - db_actual = sbx_versionx_sptr(new sbx_version4(this)); - freq_range = sbx_freq_range; - break; - case 0x0067: - db_actual = sbx_versionx_sptr(new cbx(this)); - freq_range = cbx_freq_range; - break; case 0x0069: - db_actual = sbx_versionx_sptr(new sbx_version4(this)); - freq_range = sbx_freq_range; - break; case 0x0083: db_actual = sbx_versionx_sptr(new sbx_version4(this)); - freq_range = sbx_freq_range; + freq_range = sbx_freq_range; + enable_rx_lo_filter = sbx_enable_rx_lo_filter; + enable_tx_lo_filter = sbx_enable_tx_lo_filter; break; + case 0x0067: case 0x0085: db_actual = sbx_versionx_sptr(new cbx(this)); - freq_range = cbx_freq_range; + freq_range = cbx_freq_range; + enable_rx_lo_filter = cbx_enable_rx_lo_filter; + enable_tx_lo_filter = cbx_enable_tx_lo_filter; break; default: /* We didn't recognize the version of the board... */ @@ -256,8 +253,8 @@ void sbx_xcvr::update_atr(void){ //calculate atr pins int rx_pga0_iobits = rx_pga0_gain_to_iobits(_rx_gains["PGA0"]); int tx_pga0_iobits = tx_pga0_gain_to_iobits(_tx_gains["PGA0"]); - int rx_lo_lpf_en = (_rx_lo_freq == sbx_enable_rx_lo_filter.clip(_rx_lo_freq)) ? LO_LPF_EN : 0; - int tx_lo_lpf_en = (_tx_lo_freq == sbx_enable_tx_lo_filter.clip(_tx_lo_freq)) ? LO_LPF_EN : 0; + int rx_lo_lpf_en = (_rx_lo_freq == enable_rx_lo_filter.clip(_rx_lo_freq)) ? LO_LPF_EN : 0; + int tx_lo_lpf_en = (_tx_lo_freq == enable_tx_lo_filter.clip(_tx_lo_freq)) ? LO_LPF_EN : 0; int rx_ld_led = _rx_lo_lock_cache ? 0 : RX_LED_LD; int tx_ld_led = _tx_lo_lock_cache ? 0 : TX_LED_LD; int rx_ant_led = _rx_ant == "TX/RX" ? RX_LED_RX1RX2 : 0; diff --git a/host/lib/usrp/dboard/db_sbx_common.hpp b/host/lib/usrp/dboard/db_sbx_common.hpp index ad64e2267..0c0ad3ca7 100644 --- a/host/lib/usrp/dboard/db_sbx_common.hpp +++ b/host/lib/usrp/dboard/db_sbx_common.hpp @@ -116,6 +116,14 @@ static const freq_range_t sbx_enable_rx_lo_filter = list_of (range_t(0.4e9, 1.5e9)) ; +static const freq_range_t cbx_enable_tx_lo_filter = list_of + (range_t(1.2e9, 2e9)) +; + +static const freq_range_t cbx_enable_rx_lo_filter = list_of + (range_t(1.2e9, 2e9)) +; + static const std::vector sbx_tx_antennas = list_of("TX/RX")("CAL"); static const std::vector sbx_rx_antennas = list_of("TX/RX")("RX2")("CAL"); @@ -226,9 +234,12 @@ protected: /*! * CBX daughterboard * - * The only driver difference between SBX and CBX is the MAX2870 vs. ADF435x. - * There is also no LO filter switching required, but the GPIO is left blank - * so we don't worry about it. + * There are a few differences between SBX and CBX + * - The CBX and SBX use the MAX2870 and ADF435x respectively for LOs + * - There are different frequency ranges + * - There are different LO LPF cutoff frequencies + * There is also no LO filter switching required on CBX, but the GPIO is left + * blank so we don't worry about it. */ class cbx : public sbx_versionx { public: @@ -251,6 +262,18 @@ protected: */ freq_range_t freq_range; + /*! + * Frequency range to use the LO LPF in RX; this is set in the constructor + * to correspond either to SBX or CBX. + */ + freq_range_t enable_rx_lo_filter; + + /*! + * Frequency range to use the LO LPF in TX; this is set in the constructor + * to correspond either to SBX or CBX. + */ + freq_range_t enable_tx_lo_filter; + /*! * Handle to the version-specific implementation of the SBX. * -- cgit v1.2.3