usrp-users@lists.ettus.com

Discussion and technical support related to USRP, UHD, RFNoC

View all threads

B210 bypass Tx FIR filter

SH
S Hamilton
Wed, Apr 10, 2019 8:30 PM

We'd like to bypass the Tx FIR filter and I'm wondering how to go about
this using the C++ api.
For the filter_base_info class there is the is_bypassed() function to read
the state, but no function to set it.
Should we be creating a new filter pointer with bypass set, and then using
it to overwrite the filter via uhd::usrp::multi_usrp::set_filter ?
Does anyone have some sample code that sets the bypass on FIR or HB1/HB2 ?

Thanks,
Sean Hamilton

We'd like to bypass the Tx FIR filter and I'm wondering how to go about this using the C++ api. For the filter_base_info class there is the is_bypassed() function to read the state, but no function to set it. Should we be creating a new filter pointer with bypass set, and then using it to overwrite the filter via uhd::usrp::multi_usrp::set_filter ? Does anyone have some sample code that sets the bypass on FIR or HB1/HB2 ? Thanks, Sean Hamilton
JA
Julian Arnold
Thu, Apr 11, 2019 5:57 AM

Sean,

if I remember correctly, the filter configuration (whether or not a filter is bypassed) is determined by the ratio of DAC rate to master-clock rate (the interpolation that needs to happen inside the ad9361) thus, you can only somewhat,
indirectly, control it by changing the master-clock rate.

However, if you can live with the interpolation inside the FIR, you can reprogram the fir taps to whatever suits your needs.

For examples take a look at:

https://github.com/jarn0ld/uhd-filter-tool

Hope that helps.

Cheers,
Julian

Julian Arnold, M.Sc

On 10. Apr 2019, at 22:30, S Hamilton via USRP-users usrp-users@lists.ettus.com wrote:

We'd like to bypass the Tx FIR filter and I'm wondering how to go about this using the C++ api.
For the filter_base_info class there is the is_bypassed() function to read the state, but no function to set it.
Should we be creating a new filter pointer with bypass set, and then using it to overwrite the filter via uhd::usrp::multi_usrp::set_filter ?
Does anyone have some sample code that sets the bypass on FIR or HB1/HB2 ?

Thanks,
Sean Hamilton


USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Sean, if I remember correctly, the filter configuration (whether or not a filter is bypassed) is determined by the ratio of DAC rate to master-clock rate (the interpolation that needs to happen inside the ad9361) thus, you can only somewhat, indirectly, control it by changing the master-clock rate. However, if you can live with the interpolation inside the FIR, you can reprogram the fir taps to whatever suits your needs. For examples take a look at: https://github.com/jarn0ld/uhd-filter-tool Hope that helps. Cheers, Julian Julian Arnold, M.Sc > On 10. Apr 2019, at 22:30, S Hamilton via USRP-users <usrp-users@lists.ettus.com> wrote: > > We'd like to bypass the Tx FIR filter and I'm wondering how to go about this using the C++ api. > For the filter_base_info class there is the is_bypassed() function to read the state, but no function to set it. > Should we be creating a new filter pointer with bypass set, and then using it to overwrite the filter via uhd::usrp::multi_usrp::set_filter ? > Does anyone have some sample code that sets the bypass on FIR or HB1/HB2 ? > > Thanks, > Sean Hamilton > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
IB
Ian Buckley
Thu, Apr 11, 2019 6:07 AM

Yeah, the driver tries to keep the DAC clock close to it’s max legal frequency with the highest possible interpolation ratio from master_clock_rate.
That code doesn’t have any API access but I can show Sean how to hack it into UHD if necessary.

On Apr 10, 2019, at 10:57 PM, Julian Arnold via USRP-users usrp-users@lists.ettus.com wrote:

Sean,

if I remember correctly, the filter configuration (whether or not a filter is bypassed) is determined by the ratio of DAC rate to master-clock rate (the interpolation that needs to happen inside the ad9361) thus, you can only somewhat,
indirectly, control it by changing the master-clock rate.

However, if you can live with the interpolation inside the FIR, you can reprogram the fir taps to whatever suits your needs.

For examples take a look at:

https://github.com/jarn0ld/uhd-filter-tool https://github.com/jarn0ld/uhd-filter-tool

Hope that helps.

Cheers,
Julian

Julian Arnold, M.Sc “The Intern of the month"

On 10. Apr 2019, at 22:30, S Hamilton via USRP-users <usrp-users@lists.ettus.com mailto:usrp-users@lists.ettus.com> wrote:

We'd like to bypass the Tx FIR filter and I'm wondering how to go about this using the C++ api.
For the filter_base_info class there is the is_bypassed() function to read the state, but no function to set it.
Should we be creating a new filter pointer with bypass set, and then using it to overwrite the filter via uhd::usrp::multi_usrp::set_filter ?
Does anyone have some sample code that sets the bypass on FIR or HB1/HB2 ?

Thanks,
Sean Hamilton


USRP-users mailing list
USRP-users@lists.ettus.com mailto:USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Yeah, the driver tries to keep the DAC clock close to it’s max legal frequency with the highest possible interpolation ratio from master_clock_rate. That code doesn’t have any API access but I can show Sean how to hack it into UHD if necessary. > On Apr 10, 2019, at 10:57 PM, Julian Arnold via USRP-users <usrp-users@lists.ettus.com> wrote: > > Sean, > > if I remember correctly, the filter configuration (whether or not a filter is bypassed) is determined by the ratio of DAC rate to master-clock rate (the interpolation that needs to happen inside the ad9361) thus, you can only somewhat, > indirectly, control it by changing the master-clock rate. > > However, if you can live with the interpolation inside the FIR, you can reprogram the fir taps to whatever suits your needs. > > For examples take a look at: > > https://github.com/jarn0ld/uhd-filter-tool <https://github.com/jarn0ld/uhd-filter-tool> > > Hope that helps. > > Cheers, > Julian > > Julian Arnold, M.Sc “The Intern of the month" > > On 10. Apr 2019, at 22:30, S Hamilton via USRP-users <usrp-users@lists.ettus.com <mailto:usrp-users@lists.ettus.com>> wrote: > >> We'd like to bypass the Tx FIR filter and I'm wondering how to go about this using the C++ api. >> For the filter_base_info class there is the is_bypassed() function to read the state, but no function to set it. >> Should we be creating a new filter pointer with bypass set, and then using it to overwrite the filter via uhd::usrp::multi_usrp::set_filter ? >> Does anyone have some sample code that sets the bypass on FIR or HB1/HB2 ? >> >> Thanks, >> Sean Hamilton >> _______________________________________________ >> USRP-users mailing list >> USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com> >> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com <http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com> > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com