Thomas, I'd need to set it up on my end, but I believe you can TX two distinct waveforms from a single replay block instance. You'd need to make sure that your adding your data to the buffer in separate locations and at an address that is a multiple of 8 bytes (which it looks like you're doing from the above snippets). Are you seeing continuous underruns, or just a handful at the beginning on the run? Does your duplicated code also use:
replay_ctrl->get_record_fullness on both channels before kicking off the stream start? Sam Reiter Ettus Research On Wed, Dec 4, 2019 at 3:48 AM Thomas Harder via USRP-users < usrp-users@lists.ettus.com> wrote: > Hello everyone, > > Is it possible to transmit two different waveforms on the two channels of > the USRP X310 with the two UBX-160 daughterboards? > > I want to transmit two different waveforms simultaneous (synchronized ) on > the two channels of the USRP with the full sample rate of 200 MS/s. I tried > already to do it with a dual 10Gbit-ethernet connection and I seemed to be > limited by my computer. Now I am trying to do it with the replay block. > > > > I built the FPGA image with one Replay block as described in > https://kb.ettus.com/Using_the_RFNoC_Replay_Block to run the example > “replay_samples_from_file” and it is working fine if I transmit just on one > channel. Now I was modifying the code by connecting the replay block to > both channels: > > > replay_graph->connect(replay_ctrl->get_block_id(),replay_chan,tx_blockid,tx_chan,replay_spp); > > > replay_graph->connect(replay_ctrl->get_block_id(),replay_chan1,tx_blockid1,tx_chan,replay_spp); > > > > and writing the same waveform into another region of the DRAM-buffer: > > replay_ctrl->config_record(0,words_to_replay*replay_word_size, > replay_chan); > > replay_ctrl->config_record(20000,words_to_replay*replay_word_size, > replay_chan1); > > and > > replay_ctrl->config_play(0,words_to_replay*replay_word_size, replay_chan); > > replay_ctrl->config_play(20000,words_to_replay*replay_word_size, > replay_chan1); > > > > where > > words_to_replay*replay_word_size=16000 > > replay_chan=0 > > replay_chan1=1 > > tx_blockid=0/Radio_0 > > tx_blockid=0/Radio_1 > > > > then I stream my waveforms to the replay block as defined in the example > and I start to replay the data: > > replay_ctrl->issue_stream_cmd(stream_cmd, replay_chan); > > replay_ctrl->issue_stream_cmd(stream_cmd, replay_chan1); > > > > It works but with plenty of Underflows!! > > > > So what does it mean when it says in the manual: > > “Note that the record and playback buffers do not need to the same, > allowing a single Replay block to both record and playback to different > regions of memory* simultaneously*.” > > (https://kb.ettus.com/Using_the_RFNoC_Replay_Block)? > > > > Because in the manual it says also: > > “The replay block has the following features: One input and *one* output” > > ( > https://files.ettus.com/manual/classuhd_1_1rfnoc_1_1replay__block__ctrl.html > ) > > > > So if the replay block has just one output why does it have two channels > connected to it (replay_chan= 0 and 1)? > > > > If one replay block can just stream to one channel at the same time, can I > implement easily a second replay block in the FPGA to stream on the two > channels of my USRP two different waveforms simultaneously? > > > > Thank you, > > Thomas > > > > > > > > > > > _______________________________________________ > 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