# About RFSoC 2x2

**URL:** <https://discuss.pynq.io/t/about-rfsoc-2x2/2556>\
**Category:** Support\
**Created:** [April 15, 2021, 2:44pm UTC](https://discuss.pynq.io/t/about-rfsoc-2x2/2556 "2021-04-15T14:44:08Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jorgep](https://avatars.discourse-cdn.com/v4/letter/j/9de053/32.png) [@Jorgep](https://discuss.pynq.io/u/Jorgep)\
**Post date:** [April 15, 2021, 2:44pm UTC](https://discuss.pynq.io/t/about-rfsoc-2x2/2556/1 "2021-04-15T14:44:09Z")

</div>

1. Is there any bare metal implementation available? Or any way to control the ADC directly with code (a script) rather than using a GUI?

2. I plan on using my own modules on the PL to process Rx signals. Where in the HDL design can I tap in to receive them?

---

<div class="post-metadata">

**Author:** ![cathalmccabe](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/cathalmccabe/32/3348_2.png) [@cathalmccabe](https://discuss.pynq.io/u/cathalmccabe)\
**Post date:** [April 15, 2021, 4:44pm UTC](https://discuss.pynq.io/t/about-rfsoc-2x2/2556/2 "2021-04-15T16:44:58Z")

</div>

You can use PYNQ (Python) on the command line or from a Python script to control the ADCs instead of using Jupyter notebook. (I assume by GUI you mean Jupyter).

You can find source code for the Vivado designs used with PYNQ here:

> **[RFSoC2x2-PYNQ/board/RFSoC2x2 at master · Xilinx/RFSoC2x2-PYNQ](https://github.com/Xilinx/RFSoC2x2-PYNQ/tree/master/board/RFSoC2x2)**
>
> master/board/RFSoC2x2

You don’t have to use PYNQ with these designs.

You can instantiate the RFSoC Data converter IP in your own design. This is the interface block to control the ADCs.  
[https://www.xilinx.com/support/documentation/ip\_documentation/usp\_rf\_data\_converter/v2\_3/pg269-rf-data-converter.pdf](https://www.xilinx.com/support/documentation/ip_documentation/usp_rf_data_converter/v2_3/pg269-rf-data-converter.pdf)  
It is a complex block and needs to be configured via the AXI slave interface, so you can’t just connect some HDL signals. This is a great example of why you might want to use PYNQ - it make config and control of the ADCs a lot easier.

Cathal

---

<div class="post-metadata">

**Author:** ![Jorgep](https://avatars.discourse-cdn.com/v4/letter/j/9de053/32.png) [@Jorgep](https://discuss.pynq.io/u/Jorgep)\
**Post date:** [April 15, 2021, 5:36pm UTC](https://discuss.pynq.io/t/about-rfsoc-2x2/2556/3 "2021-04-15T17:36:33Z")

</div>

Thank you for your quick answer Cathal,

> [@cathalmccabe](#):
>
> (I assume by GUI you mean Jupyter)

Yes, when I wrote GUI I was thinking about the frequency planner interface but actually meant other ways to control the ADCs other than Jupyter. Is it possible for the system to automatically run a configuration script on startup? I haven’t read the sources yet and I’ve never used a PYNQ device before.

> [@cathalmccabe](#):
>
> It is a complex block and needs to be configured via the AXI slave interface, so you can’t just connect some HDL signals. This is a great example of why you might want to use PYNQ - it make config and control of the ADCs a lot easier.

I have no problem on configuring the ADCs via PYNQ, but I do need the ADC’s Rx signals available on the PL to do some custom processing. I’ll read the PG269 now, but before I do so am I correct to assume I can get those signals from that IP?

---

<div class="post-metadata">

**Author:** ![Jorgep](https://avatars.discourse-cdn.com/v4/letter/j/9de053/32.png) [@Jorgep](https://discuss.pynq.io/u/Jorgep)\
**Post date:** [April 20, 2021, 6:02pm UTC](https://discuss.pynq.io/t/about-rfsoc-2x2/2556/4 "2021-04-20T18:02:42Z")

</div>

@cathalmccabe any info on this?

---

<div class="post-metadata">

**Author:** ![cathalmccabe](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/cathalmccabe/32/3348_2.png) [@cathalmccabe](https://discuss.pynq.io/u/cathalmccabe)\
**Post date:** [April 20, 2021, 7:16pm UTC](https://discuss.pynq.io/t/about-rfsoc-2x2/2556/5 "2021-04-20T19:16:31Z")

</div>

Yes, you could run something automatically on startup.  
This is a simple way to run something on boot:  
[https://pynq.readthedocs.io/en/v2.6.1/pynq\_sd\_card.html?highlight=boot.py#leveraging-boot-py-to-modify-sd-card-boot-behavior](https://pynq.readthedocs.io/en/v2.6.1/pynq_sd_card.html?highlight=boot.py#leveraging-boot-py-to-modify-sd-card-boot-behavior)

Cathal

---

<div class="post-metadata">

**Author:** ![Jorgep](https://avatars.discourse-cdn.com/v4/letter/j/9de053/32.png) [@Jorgep](https://discuss.pynq.io/u/Jorgep)\
**Post date:** [April 23, 2021, 12:55am UTC](https://discuss.pynq.io/t/about-rfsoc-2x2/2556/7 "2021-04-23T00:55:02Z")

</div>

Thanks once more @cathalmccabe ,

If I modify the HDL design do I have to build the PYNQ image following [this procedure?](https://pynq.readthedocs.io/en/latest/pynq_sd_card.html#building-the-image) Or is there another way? I do not intend to modify the software part yet.

Also is there any way to do everything on Windows?

Lastly, it seems I need a Vivado license to work with this board. Can you confirm this?

---

<div class="post-metadata">

**Author:** ![cathalmccabe](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/cathalmccabe/32/3348_2.png) [@cathalmccabe](https://discuss.pynq.io/u/cathalmccabe)\
**Post date:** [April 23, 2021, 7:03am UTC](https://discuss.pynq.io/t/about-rfsoc-2x2/2556/8 "2021-04-23T07:03:01Z")

</div>

No, the PYNQ image doesn’t need to be modified. If you want to change the hardware, you do this in Vivado, and used the new design with the PYNQ image.  
Yes, you need a Vivado license to build designs for the RFSoC part on this board.

Cathal

---

<div class="post-metadata">

**Author:** ![Jorgep](https://avatars.discourse-cdn.com/v4/letter/j/9de053/32.png) [@Jorgep](https://discuss.pynq.io/u/Jorgep)\
**Post date:** [April 23, 2021, 1:54pm UTC](https://discuss.pynq.io/t/about-rfsoc-2x2/2556/9 "2021-04-23T13:54:48Z")

</div>

> [@cathalmccabe](#):
>
> If you want to change the hardware, you do this in Vivado, and used the new design with the PYNQ image.

Oh okay, I’m guessing one could SSH into the board and copy the bit, tcl and hwh files there then.

> [@cathalmccabe](#):
>
> the PYNQ image doesn’t need to be modified

In which cases would I want to modify the image? Or it isn’t necessary for common designs?

---

<div class="post-metadata">

**Author:** ![cathalmccabe](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/cathalmccabe/32/3348_2.png) [@cathalmccabe](https://discuss.pynq.io/u/cathalmccabe)\
**Post date:** [April 23, 2021, 2:13pm UTC](https://discuss.pynq.io/t/about-rfsoc-2x2/2556/10 "2021-04-23T14:13:15Z")

</div>

Yes, ssh etc. can be used. You can also upload directly via your web browser with Jupyter Notbeook/Lab.

You can install new software packages (apt-get install, pip install etc.) and copy new files or software to the PYNQ image, but you don’t need to rebuild or “modify” the image.

Cathal

---

<div class="post-metadata">

**Author:** ![Jorgep](https://avatars.discourse-cdn.com/v4/letter/j/9de053/32.png) [@Jorgep](https://discuss.pynq.io/u/Jorgep)\
**Post date:** [April 26, 2021, 3:48pm UTC](https://discuss.pynq.io/t/about-rfsoc-2x2/2556/11 "2021-04-26T15:48:08Z")

</div>

@cathalmccabe : when one configures the RFSoC Data converter IP via Vivado, is that enough to make the ADCs run with that initial config or is additional software intervention necessary?
