discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Re: Changing interp rate dynamically?


From: Michael Dickens
Subject: Re: [Discuss-gnuradio] Re: Changing interp rate dynamically?
Date: Wed, 10 Oct 2007 15:26:41 -0400

On Oct 10, 2007, at 2:49 PM, Matt Ettus wrote:
I think the problem is that the CIC interpolator needs to be stopped
before you change the rate.  It may also need to be reset, but I don't
think so.  I think the decimator had the same problem a while ago, and
it was fixed by stopping, changing the rate, and then restarting. This
should be somewhere in the host code.

All of the following in usrp/host/apps/lib/legacy/

By "stop" do you mean "disable"?  From usrp_standard.cc:627
++++
  bool s = disable_tx ();
  bool ok = _write_fpga_reg (FR_INTERP_RATE, d_interp_rate/4 - 1);
  restore_tx (s);
++++

The decim code does exactly the same thing usrp_standard.cc:251
++++
  bool s = disable_rx ();
  int v = has_rx_halfband() ? d_decim_rate/2 - 1 : d_decim_rate - 1;
  bool ok = _write_fpga_reg (FR_DECIM_RATE, v);
  restore_rx (s);
++++
The code for "disable_XX" and "restore_XX" are in usrp_basic.cc; RX is 634:636 and TX is 1070:1096. Both of these eventually call "usrp_set_fpga_XX_enable()", which are in usrp_prims.cc: 644:654. Both of these functions call "usrp_set_switch()" with VRQ_FPGA_SET_xx_ENABLE, which is at usrp_prims.cc:570, and just does a write_cmd over USB to the FPGA at that register.

Possibly the code for disable_tx isn't doing what it's supposed to do, w/r.t. writing to the FPGA's register? I have verified that the local code and variables are doing what they're supposed to do.

Any other places I should be investigating?  Thanks! - MLD




reply via email to

[Prev in Thread] Current Thread [Next in Thread]