Nick,

I actually ended up figuring it out. I had forgotten to actually connect my 
blocks using the 'graph->connect(...)' call. It was a silly mistake and an easy 
fix.


Thank you for all your help though. I know have it streaming perfectly without 
sending it to the host.


Thank you,

Adam

________________________________
From: Nick Foster <bistrom...@gmail.com>
Sent: Friday, February 23, 2018 4:39:55 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] [E310 RFNoC] TX RX Loopback bypassing the ARM 
processor

Please post your whole example.

On Fri, Feb 23, 2018, 1:35 PM Adam Kurisko 
<adamk...@outlook.com<mailto:adamk...@outlook.com>> wrote:

Ok I run it and I still don't get the LEDs on the frontend to light up. Is this 
normal or is something wrong?


Thanks,

Adam

________________________________
From: Nick Foster <bistrom...@gmail.com<mailto:bistrom...@gmail.com>>
Sent: Friday, February 23, 2018 4:13:16 PM

To: Adam Kurisko
Cc: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>
Subject: Re: [USRP-users] [E310 RFNoC] TX RX Loopback bypassing the ARM 
processor
You don't need to do anything at all. Just loop. Maybe sleep so you don't soak 
up a whole CPU.

Nick

On Fri, Feb 23, 2018, 1:10 PM Adam Kurisko 
<adamk...@outlook.com<mailto:adamk...@outlook.com>> wrote:
Hey Nick,

Below is the code I am using to setup my streamers and issue the stream cmd. I 
know it would exit immediately when run, but I just wanted to see if this all 
looks correct or if there might be some additional steps I may need. Also, in 
order to get it streaming continuously before calling the stop signal I am 
going to need a while loop, but what should I include in this loop since the 
send and recv functions are now off the table?

    radio_ctrl->set_rx_streamer(true, radio_chan);
    radio_ctrl->set_tx_streamer(true, radio_chan);

    std::signal(SIGINT, &sig_int_handler);
    std::cout << "Press Ctrl + C to stop streaming..." << std::endl;

    uhd::stream_cmd_t 
stream_cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS);
    stream_cmd.stream_now = true;
    radio_ctrl->issue_stream_cmd(stream_cmd);

    stream_cmd.stream_mode = uhd::stream_cmd_t::STREAM_MODE_STOP_CONTINUOUS;
    std::cout << "Issueing stop stream cmd" << std::endl;
    radio_ctrl->issue_stream_cmd(stream_cmd);
    std::cout << "Done" << std::endl;

Thanks for helping me out,
Adam

________________________________
From: Nick Foster <bistrom...@gmail.com<mailto:bistrom...@gmail.com>>
Sent: Friday, February 23, 2018 2:51:46 PM

To: Adam Kurisko
Cc: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>
Subject: Re: [USRP-users] [E310 RFNoC] TX RX Loopback bypassing the ARM 
processor
That should work.

On Fri, Feb 23, 2018 at 11:45 AM Adam Kurisko 
<adamk...@outlook.com<mailto:adamk...@outlook.com>> wrote:

Nick,


I went back through the loopback tricks you sent and found that my at_reset 
parameter on the SR_RX_CTRL_OUTPUT_FORMAT settings register had not been 
switched to 0, so I have corrected that. and timestamping should now be 
disabled.


I have been using rfnoc_rx_to_file as reference for making my own C++ example 
and it seems that the 'uhd::device3' class does not have the 'set_rx_streamer' 
function. As a result, I have been calling the function using the 
'uhd::rfnoc::radio_ctrl' class to set the streamer and issue the stream command 
via

'radio_ctrl->set_rx_streamer(true, radio_chan)'

'radio_ctrl->set_tx_streamer(true, radio_chan)'

'radio_ctrl->issue_stream_cmd(stream_cmd)'


Is that fine for activating and issuing the streamers or should I 'make()' my 
device using the 'uhd::usrp::multi_usrp' class instead?


Thanks,

Adam

________________________________
From: Nick Foster <bistrom...@gmail.com<mailto:bistrom...@gmail.com>>
Sent: Friday, February 23, 2018 2:16:19 PM

To: Adam Kurisko
Cc: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>
Subject: Re: [USRP-users] [E310 RFNoC] TX RX Loopback bypassing the ARM 
processor
Have you verified timestamps are disabled? And have you issued a stream command 
to the RX as well as set_rx_streamer()? To be clear, I haven't tried E310 
loopback with any UHD version later than the date of the article (4/22/17), but 
I don't believe significant changes have happened which would affect loopback 
since then (maybe someone from Ettus could chime in).

I don't think you'll be able to run at full DSP clock rate -- set the device to 
stream at (say) 10Msps on RX and TX first and then increase it from there.

send() and recv() are strictly functions to submit and receive data from the 
ARM (PS)  to the FPGA (PL) and vice versa. They are not necessary for loopback.

Nick

On Fri, Feb 23, 2018 at 10:26 AM Adam Kurisko 
<adamk...@outlook.com<mailto:adamk...@outlook.com>> wrote:

Hey Nick,


Thanks for the quick reply.


I have already disabled time stamping and initiated the streamers and it 
compiles and runs on my board, however when I run it the LEDs on the RX2 and 
TRX frontend do not light up, so I am lead to believe that it actually might 
not be streaming.


 Just for clarification, Do the 'uhd::tx_streamer::send()' and 
'uhd::rx_streamer::recv()' functions route the signal to buffers on the ARM 
host or the fpga? I ask that because those functions seem to be the only way 
that I can get those LEDs on the frontend to light up signifying that the 
device is actually streaming.


Thanks,

Adam

________________________________
From: Nick Foster <bistrom...@gmail.com<mailto:bistrom...@gmail.com>>
Sent: Friday, February 23, 2018 1:01:42 PM
To: Adam Kurisko
Cc: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>
Subject: Re: [USRP-users] [E310 RFNoC] TX RX Loopback bypassing the ARM 
processor

1. yes
2. RFNoC

I refer back to a post I wrote detailing loopback in the FPGA. It doesn't work 
"out of the box" but can be made to with minor modification.

https://corvid.io/2017/04/22/stupid-rfnoc-tricks-loopback/

If you haven't used RFNoC before you should probably take on the Getting 
Started guide first: https://kb.ettus.com/Getting_Started_with_RFNoC_Development

Nick

On Fri, Feb 23, 2018 at 9:28 AM Adam Kurisko via USRP-users 
<usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>> wrote:

Hello all,


I am trying to utilize the full performance of the E310 and it seems like the 
Arm processor is the bottleneck in this scenario. I know the AD9361 is wired 
straight into the fpga, so it would make sense that a strictly bare metal 
loopback is possible.


Is it possible to stream data straight from RX to TX without sending or 
receiving from the host ARM processor? And if so, how would I do this?


Please let me know.


Thank you,

Adam

_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com<mailto: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

Reply via email to