diff options
| author | Josh Blum <josh@joshknows.com> | 2010-10-11 19:54:01 -0700 | 
|---|---|---|
| committer | Josh Blum <josh@joshknows.com> | 2010-10-11 19:54:01 -0700 | 
| commit | 02b25d347e9b4cf23be2b84fb43db01471ad6ec3 (patch) | |
| tree | b718cc4a89aa857e8c7aa1ae9fa9684138c5d4fa | |
| parent | 445a5ca2c7d822ea576eab6aca51cf340df1ca15 (diff) | |
| parent | 5898d378522905208bc49b2a4a30a5c04fba639b (diff) | |
| download | uhd-02b25d347e9b4cf23be2b84fb43db01471ad6ec3.tar.gz uhd-02b25d347e9b4cf23be2b84fb43db01471ad6ec3.tar.bz2 uhd-02b25d347e9b4cf23be2b84fb43db01471ad6ec3.zip | |
Merge branch 'dbsrx_clock_div'
| -rw-r--r-- | host/lib/usrp/dboard/db_dbsrx.cpp | 22 | 
1 files changed, 12 insertions, 10 deletions
| diff --git a/host/lib/usrp/dboard/db_dbsrx.cpp b/host/lib/usrp/dboard/db_dbsrx.cpp index 23cafea53..99137dda3 100644 --- a/host/lib/usrp/dboard/db_dbsrx.cpp +++ b/host/lib/usrp/dboard/db_dbsrx.cpp @@ -239,7 +239,6 @@ void dbsrx::set_lo_freq(double target_freq){      double actual_freq=0.0, pfd_freq=0.0, ref_clock=0.0;      int R=0, N=0, r=0, m=0;      bool update_filter_settings = false; -      //choose refclock      std::vector<double> clock_rates = this->get_iface()->get_clock_rates(dboard_iface::UNIT_RX);      BOOST_FOREACH(ref_clock, std::reversed(std::sorted(clock_rates))){ @@ -251,7 +250,7 @@ void dbsrx::set_lo_freq(double target_freq){          if(dbsrx_debug) std::cerr << boost::format(              "DBSRX: trying ref_clock %f and m_divider %d" -        ) % (this->get_iface()->get_clock_rate(dboard_iface::UNIT_RX)) % m << std::endl; +        ) % (ref_clock) % m << std::endl;          if (m >= 32) continue; @@ -277,15 +276,17 @@ void dbsrx::set_lo_freq(double target_freq){          }      }  -    //Assert because we failed to find a suitable combination of ref_clock, R and N  -    UHD_ASSERT_THROW(ref_clock/(1 << m) < 1e6 or ref_clock/(1 << m) > 2.5e6); -    UHD_ASSERT_THROW((pfd_freq < dbsrx_pfd_freq_range.min) or (pfd_freq > dbsrx_pfd_freq_range.max)); -    UHD_ASSERT_THROW((N < 256) or (N > 32768));      done_loop: +    //Assert because we failed to find a suitable combination of ref_clock, R and N  +    UHD_ASSERT_THROW(ref_clock <= 27.0e6 and ref_clock >= 0.0); +    UHD_ASSERT_THROW(ref_clock/m >= 1e6 and ref_clock/m <= 2.5e6); +    UHD_ASSERT_THROW((pfd_freq >= dbsrx_pfd_freq_range.min) and (pfd_freq <= dbsrx_pfd_freq_range.max)); +    UHD_ASSERT_THROW((N >= 256) and (N <= 32768)); +      if(dbsrx_debug) std::cerr << boost::format( -        "DBSRX: choose ref_clock %f and m_divider %d" -    ) % (this->get_iface()->get_clock_rate(dboard_iface::UNIT_RX)) % m << std::endl; +        "DBSRX: choose ref_clock (current: %f, new: %f) and m_divider %d" +    ) % (this->get_iface()->get_clock_rate(dboard_iface::UNIT_RX)) % ref_clock % m << std::endl;      //if ref_clock or m divider changed, we need to update the filter settings      if (ref_clock != this->get_iface()->get_clock_rate(dboard_iface::UNIT_RX) or m != _max2118_write_regs.m_divider) update_filter_settings = true; @@ -349,7 +350,7 @@ void dbsrx::set_lo_freq(double target_freq){                          "DBSRX: Tuning exceeded vco range, _max2118_write_regs.osc_band == %d\n"                           ) % int(_max2118_write_regs.osc_band))                  ); -                UHD_ASSERT_THROW(_max2118_read_regs.adc == 0); +                UHD_ASSERT_THROW(_max2118_read_regs.adc != 0); //just to cause a throw              }              if (_max2118_write_regs.osc_band <= 0) break;              _max2118_write_regs.osc_band -= 1; @@ -363,7 +364,7 @@ void dbsrx::set_lo_freq(double target_freq){                          "DBSRX: Tuning exceeded vco range, _max2118_write_regs.osc_band == %d\n"                           ) % int(_max2118_write_regs.osc_band))                  ); -                UHD_ASSERT_THROW(_max2118_read_regs.adc == 0); +                UHD_ASSERT_THROW(_max2118_read_regs.adc != 7); //just to cause a throw              }              if (_max2118_write_regs.osc_band >= 7) break;              _max2118_write_regs.osc_band += 1; @@ -401,6 +402,7 @@ void dbsrx::set_lo_freq(double target_freq){          << boost::format("    Ref    Freq=%fMHz\n") % (ref_clock/1e6)          << boost::format("    Target Freq=%fMHz\n") % (target_freq/1e6)          << boost::format("    Actual Freq=%fMHz\n") % (_lo_freq/1e6) +        << boost::format("    VCO    Freq=%fMHz\n") % (vco_freq/1e6)          << std::endl;      if (update_filter_settings) set_bandwidth(_bandwidth); | 
