Hi Wade, Thanks for the response. Here are the answers: - here is the URL <https://files.ettus.com/manual/page_x400_gpio_api.html#x4x0_spi_r_w> for the equation in the UHD manual - I am using the X410 with UC_200 FPGA image with master clock rate of 245.76 MHz - The function usrp->get_radio_control()->get_rate() returns 245.76 MHz - The SPI clock as seen on my oscilloscope is half the rate I expect from the equation if I use 245.76 MHz - I wasn't sure if the factor of 2 was because of the half-cycle issue you mentioned or if it had something to do with the radio clock perhaps running at 122.88 MHz with 2 samples per cycle.
Rob On Thu, Jun 26, 2025 at 4:37 PM Wade Fife <wade.f...@ettus.com> wrote: > Actually it looks like X410 and X440 use different clocks for the SPI > core. Can you confirm which device you saw this on and what master clock > rate you're using? > > For X410 with 200 MHz bandwidth, for example, I think the "Radio_Clk" > value you should use in that original equation in the documentation is > 245.76 MHz or 250 MHz, depending on your master clock rate. So: > > SPI_clk = 245.76 MHz / (divider + 1) > > What value was returned by usrp->get_radio_control()->get_rate()? > > Wade > > > On Thu, Jun 26, 2025 at 2:41 PM Wade Fife <wade.f...@ettus.com> wrote: > >> Hi Rob, >> >> I believe the underlying code that implements this is here: >> >> >> https://github.com/EttusResearch/uhd/blob/c354764c93b49c90be08958f942b9bcb7704cbd5/fpga/usrp3/lib/control/simple_spi_core.v#L182 >> >> It looks like the clock is inverted every divider+1 cycles, meaning >> divider+1 is half the SPI clock period, not the full period. If so, the >> frequency of the SPI clock would actually be (Radio_Clk / (divider + 1)) / >> 2. >> >> That seems to agree with what you're seeing? Just to confirm, can you >> share the URL for the documentation with this equation? >> >> Wade >> >> >> >> On Wed, Jun 25, 2025 at 4:25 PM Rob Kossler via USRP-users < >> usrp-users@lists.ettus.com> wrote: >> >>> Hi, >>> The equation in the UHD manual for the X410 SPI clock rate is: >>> SPI_clk = Radio_clk / (divider + 1) >>> However, I'm seeing half of that rate if I use the function: >>> Radio_clk = usrp->get_radio_control()->get_rate(); >>> Note that this returns the sample rate. I'm wondering if maybe the >>> radio clock rate is half of the sample rate because it processes multiple >>> samples per clock cycle. >>> >>> So, basically, my question is: what function or functions should I call >>> to determine the Radio clock rate needed for the equation above? Or is the >>> equation wrong? >>> >>> Thanks. >>> Rob >>> >>> _______________________________________________ >>> USRP-users mailing list -- usrp-users@lists.ettus.com >>> To unsubscribe send an email to usrp-users-le...@lists.ettus.com >>> >>
_______________________________________________ USRP-users mailing list -- usrp-users@lists.ettus.com To unsubscribe send an email to usrp-users-le...@lists.ettus.com