On 03/19/2020 08:16 PM, Lukas Haase via USRP-users wrote:
Hi Rob,
Sorry I really should have ran the python file before uploading. The issue was that I combined to files into one and forgot to remove the imported file.
Here is a new one (tested): http://paste.ubuntu.com/p/VsGRmsbZQ5/
Thanks for reporting your results .... very interesting!
Why do you think second mode makes sense to you? (assuming you are using timed commands to to retune TX+RX at the same time) In general, it seems to me that things are related to streaming start/stop. Maybe things are reset when streaming starts/ends but not when re-tuning? Maybe this is what Marcus was mentioning: resetting phase accumulator vs. "increment register is updated with the new phase increment"? MAYBE stopping/starting resets the phase accumulator to zero and just timed retuning doesn't reset anything. But still, my question is left why this would result in a random phase offset between DUC and DDC.
Thanks again!!
Lukas

So, having spent a couple of hours snooping around the X3xx FPGA code, where Verilog is not one of my native languages, I have come to a bit of a conclusion about the ways things work. Now, keep in mind, this is like me reading War and Peace in the original Russian, and as an English speaker, coming the vague conclusion that "It was about Russia".

There's a "settings bus" within the FPGA that is implemented with AXI FIFO modules. If your command (which results, most often in having to "set" one or more registers via the settings bus) is not a timed command, it enters the FIFO, and then is "executed" one clock later. If it has a time associated with it, then it is withdrawn when that time has been reached in "vita_time". Note that since this is a FIFO, commands that are to be executed "at the same time" will be serialized by the inherent FIFO nature of execution.

So, with two DDC settings and two DUC settings all sitting in the FIFO, their actual execution times will be 'spread' over (as far as I can tell) 4 clocks cycles of the FIFO, or about 20nsec. Now in the case where multiple X3xx are involved, the FIFO will look identical across all the units, and will execute at the same time, but still be serialized. But if you have two DDC settings across a pair of X3xx, the settings will execute at exactly the same time, since they will in effect be executing in parallel. Put another way, with shared clocks, and a common "view" of system time, parallel FIFOs will get drained in the same order and at the same rate.

Someone with a better understanding of the FPGA really should comment. But this is my (albeit incomplete) understanding of the
  settings-bus logic the FPGA.

Now, even having said THIS, since you'd expect the FIFO to be deterministic. So, you'd not expect there to be large random
  phase offsets that differ from run to run, I think.



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

Reply via email to