Hi Jorge, I don't see any indication that you are calling the Connect() function to connect the RFNoC blocks in the FPGA. Rob
On Mon, Nov 9, 2020 at 1:35 PM Jorge Arroyo Giganto via USRP-users < usrp-users@lists.ettus.com> wrote: > Hi all, > > After testing a loopback in GNU Radio with a custom block (the gain > example from the Getting Started with RFNoC guide), I managed to get the > samples going from the host to the "RFNoC domain" and back to the host, > without involving the radio cores at all. My flowgraph was Signal Source > (Host) -> RFNoC: DmaFIFO -> RFNoC: gain -> QT GUI Freq Sink (Host), and > everything worked fine, so I know that what I'm trying to do is possible. > > I have also made examples in UHD with C++ transmitting (Host -> TX Radio) > and receiving (RX Radio -> Host) using the custom RFNoC block in the graph, > by modifying the tx_waveforms and rfnoc_rx_to_file examples, and everything > worked fine as well, I checked that all of the examples had a resulting > signal that looked like it was expected. > > Now, I would like to replicate in UHD with C++ something similar to what I > have in GNU Radio, a loopback using the RFNoC custom block but without > involving the radio cores, basically: Host -> RFNoC -> Host. Right now my > approach is to have a graph looking like Host TX -> DmaFIFO -> Gain Custom > -> Host RX, I am configuring the tx and rx streamers this way: > > uhd::device_addr_t tx_streamer_args; > uhd::stream_args_t tx_stream_args("fc32", "sc16"); > tx_streamer_args["block_id"] = dmafifo_blockid; > tx_streamer_args["block_port"] = "0"; > tx_stream_args.args = tx_streamer_args; > tx_stream_args.args["spp"] = boost::lexical_cast<std::string>(spp); > //spp=364 > uhd::tx_streamer::sptr tx_stream = usrp3->get_tx_stream(tx_stream_args); > > ---- > > uhd::device_addr_t rx_streamer_args; > uhd::stream_args_t rx_stream_args("fc32", "sc16"); > rx_streamer_args["block_id"] = gain_blockid; > rx_streamer_args["block_port"] = "0"; > rx_stream_args.args["spp"] = boost::lexical_cast<std::string>(spp); > rx_stream_args.args = rx_streamer_args; > uhd::rx_streamer::sptr rx_stream = usrp->get_rx_stream(rx_stream_args); > > I'm creating a thread that continuously sends (send()) samples to the > DmaFIFO, and then I try to do the recv() until I get something, but I > always get a timeout. It's like if the samples aren't flowing through the > blocks, or like if I'm not doing the recv() right. Also, I'm getting a > strange warning ([INFO] [RFNOC] No upstream blocks.) that I don't > understand quite well in this context, does it have anything to do with the > fact that I'm not using the radio cores? I have also tried to put a FIFO > after the Gain block but I get pretty much the same result. > > I would appreciate any help or recommendations on how to achieve in C++ > this idea of Host TX -> RFNoC -> Host RX, is there something I am missing > or should consider? > > I am using UHD-3.15.LTS on a X310, and GNU Radio 3.7. Everything is > running on Ubuntu 16.04. > > Thanks in advance, > > Jorge > > > _______________________________________________ > USRP-users mailing list > 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