I do not think it is possible using the stock FPGA image.  However, I can
think of a couple of possibilities:

   - On the N310, Ettus includes 4 FIFO blocks (rather than the DmaFIFO
   which used the off-FPGA RAM for memory), to provide capability for 4x125
   MS/s streaming. Perhaps if you built an X310 FPGA image with 2 such FIFO
   blocks, you could use these rather than the DmaFIFO and achieve the desired
   streaming.  Note that this requires a Vivado license to build your own FPGA
   image, but does not require FPGA experience because you would be building
   an image with "stock" blocks.  One caution though is that streaming at this
   very high rate still requires a high performance host and so it is still
   possible that you would have underruns if your host could not keep up.  If
   you go this route, I believe you will likely need to use the "DPDK"
   capability which is a bit of a pain to configure and get it working
   properly.
   - Another possibility is to create a custom RFNoC block that is similar
   to the replay block but that uses FPGA memory to store a fixed duration
   waveform and then plays it out cyclically like the replay block. The Ettus
   'window' RFNoC block provides a good example of how to store coefficients
   and play them out repeatedly.  But, making the needed modifications is not
   a trivial task except for someone who is pretty good at FPGA programming.

Given that you were trying the replay block, I'm guessing that your Tx
waveforms are of fixed duration.  What is the duration (in number of
samples) that you require?
Rob

On Wed, Dec 11, 2019 at 5:05 AM Thomas Harder <[email protected]> wrote:

> Thank you Rob for this comment.
>
> But I am not sure if I understand you correctly. Do you want to say, that
> it is *IMPOSSIBLE* to stream TX two different waveforms synchronized  on
> the 2 channels of the x310 with the full bandwidth of 200MS/s on each
> channel?
>
> That is what I am trying the last 6 months full time, starting with
> Labview under windows and then UHD under Linux with a Dell Precision 5820
> desktop (16GB RAM, Intel Xeon W-2125 CPU@ 4.GHz x8) with MXI connection,
> dual 10Gbit connection(Intel X520-DA2), the replay block recently: always
> the same result: continuous underruns.
>
> If you can confirm that this is not possible without an important FPGA
> change (because I have no experience in this field and I have not the time
> to invest into it), I must search for another solution to create two
> different synchronized RF waveforms with 160MHz bandwidth (optical,
> electronical,…) because this will be just a part of my experimental setup
> but it is crucial to go on .
>
> I am thankful for any advise,
>
> Thomas
>
>
>
>
>
> *From: *Rob Kossler <[email protected]>
> *Sent: *Tuesday, December 10, 2019 5:01 AM
> *To: *Thomas Harder <[email protected]>
> *Cc: *Sam Reiter <[email protected]>; [email protected]
> *Subject: *Re: [USRP-users] transmitting on two channels with replay block
>
>
>
> Apart from solving the underrun issue, there is also an issue with
> synchronization.  The replay block doesn't presently support timed commands.
>
>
>
> And, as a side note, the issue with streaming from the host is not just
> the host.  The DMA FIFO has a maximum bandwidth of something like 600 MS/s
> (combination of all inputs and outputs) that precludes streaming 400 MS/s
> in and out of the block simultaneously.  So, even if the host could keep
> up, the FIFO could not.
>
> Rob
>
>
>
> On Mon, Dec 9, 2019 at 4:34 AM Thomas Harder via USRP-users <
> [email protected]> wrote:
>
> Hi Sam,
>
> Thank you for your reply.
>
> This morning I set the MCR to 184.32 and I am still having continuous
> underruns using also
>
> replay_ctrl->get_record_fullness
>
> for both channels.
>
>
>
> But since I need the full bandwidth of 160MHz I would like implement a
> second replay block in my fpga image.
>
>
>
> Could anyone help me with this?
>
> I am really new in fpga programming and for the image with one replay
> block I was just following the instructions in
> https://kb.ettus.com/Using_the_RFNoC_Replay_Block.
>
> Thank you,
>
> Thomas
>
>
>
>
>
> *From: *Sam Reiter <[email protected]>
> *Sent: *Friday, December 6, 2019 10:23 PM
> *To: *Thomas Harder <[email protected]>
> *Cc: *[email protected]
> *Subject: *Re: [USRP-users] transmitting on two channels with replay block
>
>
>
> Thomas,
>
>
>
> Upon further investigation, we may be running up to a practical limit of a
> single CHDR interface rather than an issue with your code. A single replay
> block servicing two radios will have a max (theoretical) rate of 187.5 MSPS
> on either channel. This means that you might be able to squeeze full rate
> out on 2 channels with an MCR of 184.32, but that's cutting it pretty
> close. Sounds like 2 channels at 200 MSPS with a replay setup will require
> 2 replay blocks serving each channel independently. If you end up trying
> either of the above out, I'd be curious to know what results you observe.
>
>
>
> Sam Reiter
>
> Ettus Research
>
>
>
>
>
> On Fri, Dec 6, 2019 at 2:38 PM Sam Reiter <[email protected]> wrote:
>
> 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 <
> [email protected]> 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
> [email protected]
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>
>
>
> _______________________________________________
> USRP-users mailing list
> [email protected]
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>
>
>
_______________________________________________
USRP-users mailing list
[email protected]
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to