Hi Lorenzo,

I don't know of any examples of RFNoC blocks that use block designs, but in
principle using a BD is similar to using any other Xilinx IP. If you search
for *.bd files or *_bd.tcl in the UHD repository, you'll find several
examples of IP that is pulled into the USRP code as a block design. When
you build the IP for a BD, you get synthesizable Verilog code. You can then
instantiate the top-level Verilog file for the BD into your RFNoC block's
HDL code.

As an example, maybe look at
fpga/usrp3/top/x300/ip/axi_intercon_2x64_128_bd/

Notice in Makefile.inc how it calls BUILD_VIVADO_BD to build the BD and
generate the HDL files.

Wade

On Wed, Aug 17, 2022 at 8:45 AM Yasir Özçalık <simultaneou...@gmail.com>
wrote:

> Hi Lorenzo,
> I am not much experienced with RFNoC workflow, but I have added custom
> logic into RFNoC. While doing that, I analyzed the gain example. In the
> gain example, there are 3 different options; HDL_IP, IN_TREE_IP and
> OUT_OF_TREE_IP. For the OUT_OF_TREE_IP option, it uses Xilinx Complex
> multiplier IP and they only used its ."xci" file. I have also added DDS
> Xilinx IP by using its ".xci" file. So, if you want to add Xilinx IP, all
> you need is the ".xci" file of that IP.
>
> Xilinx IPs have an AXI Interface as a standard, but it does not mean you
> cannot use it in RFNoC. RFNoC has ctrl_ports which you can create registers
> and control from the host and has payload ports which transfers ADC and DAC
> datas. Therefore; you have all you need to add any design in Verilog. You
> can add any IP in verilog by instantiation (i.e., Complex Multiplier IP in
> gain example) and control that IP with registers and your own algorithms.
>
> For the block design approach, I do not know how to add it into RFNoC. As
> I have seen it, the RFNoC workflow does not work that way. Therefore; that
> might be easier to use verilog for algorithms and ".xci" file for IPs.
>
> Yasir
>
> Minutolo, Lorenzo <minut...@caltech.edu>, 17 Ağu 2022 Çar, 02:34
> tarihinde şunu yazdı:
>
>> Hi All,
>> I'm trying to make a custom OOT block for rfnoc4.
>> I already went through the synthesis of the stock rfnoc firmware, as well
>> as the gain example: all works well on my x300.
>> I added some custom logic in the gain example's verilog and I am quite
>> satisfied with the results.
>>
>> The next step for me is to integrate a more complex design that includes
>> CORDICs, FFTs and other IPs from Xilinx.
>> To do that, I plan to develop a block design in Vivado and pass it to the
>> rfnoc infrastructure.
>>
>> I'd like to know if you attempted this workflow and if there is a guide
>> of some sort for getting started.
>>
>> Right now, I am quite lost.
>>
>>    1. The IPs that Vivado generate have an AXI interface, I suspect I
>>    cannot directly reproduce the steps to implement the gain block.
>>    2. Once I have my top module, how do I integrate it in the rfnoc
>>    workflow?
>>
>> A basic example of the gain block (or even an empty pass-through block)
>> implemented via the Vivado block design technique would be really
>> appreciated.
>>
>> I work for a non-profit research institution (Caltech); all my results
>> will be available under some open-source license. My plan is also to
>> release a guide that documents how I developed the firmware.
>>
>> Thanks,
>> Lorenzo
>>
>> _______________________________________________
>> USRP-users mailing list -- usrp-users@lists.ettus.com
>> To unsubscribe send an email to usrp-users-le...@lists.ettus.com
>>
> _______________________________________________
> USRP-users mailing list -- usrp-users@lists.ettus.com
> To unsubscribe send an email to usrp-users-le...@lists.ettus.com
>
_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com

Reply via email to