Hi Leo!

Just a few things to add:

> *  I see the rfnoc-devel branch on the Github repository hasn't been
updated in the last 6 months, and grepping code I've seen you've included
"RFNoC stuff" in the maint branch, which is the one I'm currently using.
The thing is I don't see the Python scripts to create RFNoC OOT modules
anymore.

Funny enough, I believe rfnoc-devel branches of uhd and fpga repos were
updated earlier this week. Vivado version is bumped to 2017.4 and there's
many changes/bug fixes. I'm not totally clear on the differences between
branches myself, but I understand the rfnoc-devel branches are the only
ones that fully provide the "rfnoc api" that allows users to write/plug in
other rfnoc blocks-- which is why you won't see the python scripts there.

> is it possible to address directly a certain Crossbar port from the API
and send / receive samples from that RFNoC block to the host and back
without changing anything within the UHD? (even if the block is not
properly "recognized")

I would suggest trying to get your block recognized by UHD. The UHD
software uses a factory generator to enumerate all blocks on a particular
FPGA image, and it also provides a number of other helpful tasks like
exposing set/get registers and associating any required C++ software with
the fpga block.

Another thing to keep in mind: if you want to use the gr-ettus plugins to
design flowgraphs in gnuradio-companion, I believe you need *two* blocks in
order to send data from Processor -> FPGA -> Processor, but this can be
easily resolved by adding a FIFO before or after your block under test.

Hope this helps,
EJ

On Thu, Apr 5, 2018, 4:41 PM Brian Padalino via USRP-users <
usrp-users@lists.ettus.com> wrote:

> Hey Leo,
>
> On Thu, Apr 5, 2018 at 3:01 PM, Leandro Echevarría via USRP-users <
> usrp-users@lists.ettus.com> wrote:
>
>> Hey everybody,
>>
>> I've begun working on an X310 board, and I need to make modifications to
>> the Verilog code to include my own code. My strength is on HDL design, but
>> I lack experience on the software part. I've got some questions (in order
>> from most urgent to more annecdotical) I'd very much appreciate you'd help
>> me with:
>>
>> *  I see the rfnoc-devel branch on the Github repository hasn't been
>> updated in the last 6 months, and grepping code I've seen you've included
>> "RFNoC stuff" in the maint branch, which is the one I'm currently using.
>> The thing is I don't see the Python scripts to create RFNoC OOT modules
>> anymore. I've got no worries as to how to integrate my modules inside the
>> Verilog (I saw those scripts were somehow about automating instantiation
>> code), but I'm a little lost as to WHAT part of the UHD API should I modify
>> and recompile in order for a custom RFNoC module to be recognized by the
>> host computer and be able to communicate with it. The guides and
>> application notes about this also seem to be a little outdated. Any hint?
>>
>
> This repository was the most help to me:
>
>   https://github.com/ejk43/rfnoc-ootexample
>
> You run everything out of tree, and I think it helps understand the
> separation of where code lives.
>
> The thing to note is that, for UHD, you need to have at least an XML file
> in the rfnoc/blocks directory that defines the input/output ports and the
> block ID.  This is enough to tell UHD about your block, but not much else
> like registers.  You can implement your own class for controlling your
> block all out of tree as well.
>
>
>> * Is the AXI Crossbar configured in any way from the host? Or is there
>> just a mapping between the crossbar ports / modules ID and the blocks the
>> host understands should be inside the FPGA? Where is the "signal path"
>> (i.e.: DBA-RX2 -> DDC0 --> FFT --> host) defined? Understand I've been
>> studying the design "upwards", reading first a lot of Verilog code, and I'm
>> beginning to explore the API itself.
>> * Following the last question: is it possible to address directly a
>> certain Crossbar port from the API and send / receive samples from that
>> RFNoC block to the host and back without changing anything within the UHD?
>> (even if the block is not properly "recognized")
>>
>
> The CHDR has a source and destination that's programmed into the header
> and that programs the block itself.  This is how each block is addressed
> and moves data.
>
> Something to also note is there is a limit to the number of RFNoC blocks
> you can have in the design without making major modifications - I believe
> it's 10 or 11, so don't make every small thing it's own block.  You should
> definitely consolidate into things that make sense.
>
> Good luck!
>
> Brian
> _______________________________________________
> 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

Reply via email to