I'm trying to process multi-channel RFNoC streams in Gnuradio but would
settle for using the c++ API if necessary. I'm using just one of the
two TwinRX card in an X310. The simplest example of the alignment issue
is seem by comparing 2-channel recordings made at a 1 MHz sample rate
on an aperiodic pulsed signal:

(1) 2-channel usrp->ddc->two file sinks
and
(2) 2-channel RFNoC radio->DDC->two file sinks

The usrp example records time-synchronized data regardless of "Synch"
option built into the block (internal or gps). The RFNoC example,
however, shifts one of the outputs by 10s of microseconds. This seems
like quite a trick since I'm sure that the TwinRX is delivering the
samples synchronized. I thought that it might be something in the file
streaming so I tested with a stock addsub block that works correctly in
the testbench. If I connect

radio->DDC->addsub->two file sinks

and compare data from addsub and a separate receiver I can see that the
sum and difference signals are obviously ingesting out-of-sync data.
This confirms that the random delay is being added between the RFNoC
DDC and addsub blocks, letting Gnuradio transport off the hook.

I've searched a lot and seen suggestions to use timed commands but
haven't figured out how how to do that in RFNoC with Gnuradio (even
editing Python). I'm also having no luck with creating a 2-channel c++
recorder based on rfnoc_rx_to_file.cpp: it fails with "Invalid recv
stream command - stream now on multiple channels in a single streamer
will fail to time align." but I can't figure out how to get or set the
streamer time without a usrp object.


I'm using UHD 3.14.1 because I'm also working with E310s but could
update if necessary.


_______________________________________________
USRP-users mailing list
[email protected]
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to