Hi Brian,
I think I understand where you're going but I still think you may have more 
trouble than solutions. One for all is bandwidth. 10g Ethernet is just able to 
support one channel at 200 msps. Unless you're downsampling somewhere you won't 
be able to pass all that bandwidth across the network for more than one stream. 
Also, linux tends to drop udp packets if traffic is too high so even if your 
sockets are handled locally you may experience trouble passing all that data 
around. Of course what you say is really nice and is sort of an extension to 
the concept of gnuradio blocks however I think that in the end, since the code 
between rfnic and sw implementation is going to be different anyway it's better 
to just write an oot sw block which is functionally equivalent to the rfnic one 
and you just drop it in. Note that in any case you can't just randomly swap 
rfnoc blocks with SW emulated ones as in each transition from host to rfnoc and 
vice versa you need streamers and bandwidth so for example if the block you 
want to substitute is in the middle of a rfnoc chain probably you won't have 
bandwidth as you're going to have data go back and forth too many times.

Regarding the one input 8 outputs this is something we stumbled upon as well. 
It's not a rfnoc limitation but rather just uhd as basically you have to have 
equal number of inputs and outputs or streamers won't be enabled correctly. You 
can hack it and enable them manually in your driver but it's easier to just add 
dummy inputs or outputs... You just have to remember once again that a single 
rfnoc block with multiple inputs and or outputs will share bandwidth across 
them so for example on x310 you can't pump in or out of ports more than a total 
of around 300msps...

Dario Pennisi



On Sun, Jul 22, 2018 at 5:40 PM +0200, "Brian Padalino" 
<bpadal...@gmail.com<mailto:bpadal...@gmail.com>> wrote:

Hey Dario,

On Sun, Jul 22, 2018 at 11:20 AM Dario Pennisi 
<da...@iptronix.com<mailto:da...@iptronix.com>> wrote:
Hi Brian,
It really depends on what you want to achieve. If you just want to perform 
validation then you can use simulation which is already set up and 
straightforward if you follow the examples. Also it would allow you to verify 
even hls code and make sure it does what you expect in a cycle accurate way. If 
you follow your idea you will get only a model which may not be so accurate 
because there is a lot going on in the hw that is difficult to model such as 
the interaction between internal fifos. Also even assuming your model of the 
sdr is accurate you'll still have to ensure that model of your IP is also 
accurate...

I understand what you're saying here, but this is just a step for the end goal. 
 I want to be able to add software or hardware RFNoC blocks as an abstracted 
interface for different accelerators/processors I may have for my application.  
I want to extend the reality of an RFNoC block from only living inside of the 
FPGA of an X300 to living wherever you want on your local network, including 
hosted on the same machine, or on a larger machine that is able to aggregate 
multiple sources, or on a TI DSP that runs linux and has network access.

On top of this, I've run into a few different RFNoC related bugs when working 
with custom blocks which required me to change UHD.  Most recently it was 
related to an 8-output block I had with a single radio for the source and, on 
the receive side, the radio and port mappings were not being correctly applied 
leading to strange errors when trying to create the graph.  I envision a way to 
exercise all the different RFNoC blocks input/output/connections using software 
only, and not having to rely on someone writing FPGA blocks and a test image to 
verify correct functionality.

The easiest and most straight forward initial implementation to achieve this 
goal is to try to emulate an RFNoC block in software utilizing CHDR and UDP.  I 
understand the concept of issuing a register access on the host side isn't 
something that exists, but the framework is mostly there especially with the 
error handling of CDHR over UDP.

I hope this clears up my intent.

Brian
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to