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
