Implementing a Cryptographic Coprocessor on PYNQ

I’m planning on implementing a cryptographic coprocessor on the PYNQ Z2. So what I’m trying to figure is whether I should use the ARM core as my main processor and implement the coprocessor on the PL, or if I should implement, say for example, a RISC-V core on the PL and further implement a tightly-coupled coprocessor for it. I’m just an undergraduate so I’m still learning all these which is why I’m confused on what a better option is. If I were to go the first route, would it still be a coprocessor, considering that I’m not actually extending the main processor. But that seems to be easier to implement, since I could use the python environment for encapsulating it in an application level IoT project. If the second route is a better option, how would I be able to connect the RISC-V core to the internet? Are there any PYNQ examples where I can use the ethernet or a usb wifi dongle for this purpose.
Excuse me if this is all stupid, but I found it to be good project where I could learn a lot :slight_smile:

Hi mate,

First of all, don’t call yourself stupid. Because it sometimes prevents you from learning and achieving things. Stay humble instead.

And yes, both approaches are co-processor. The difference between them is the main processor.

In my opinion, ARM is more popular that you can easily find examples to learn how PS-PL can interact, using Xilinx OpenCL or pure AXI transaction.


What a great comment! Thank you @haipnh

1 Like

Hi @ddpcodes
I think you should definitely use the ARM processor. It is already there as part of the Zynq chip, and PYNQ runs on the Ubuntu based OS on this processor, so you get everything you need free. You only need to design your cryptographic core, and you can use PYNQ to test and run it. The ARM processor has a USB and Ethernet controller that are connected to the ports on the board.

Adding a RISC-V is not necessary just to test your coprocessor, and would be a lot of work. Adding an OS. You won’t be able to use the Ethernet and USB ports on the board directly, as these are connected to the ARM processor.

Good luck with your project!