Reading & Printing Register Values

I need to read and print the data from the registers on the CW305 board. I’m aware of the simpleserial method but my project involves an encrypted bitstream using JTAG/Vivado, so it seems clear that I can’t use simpleserial since its implemented by the USB/ChipWhisperer.

It seems like I can download a hardware configuration to the board in Vivado, then use Vitis to code a software program to read the registers out to a console in eclipse. Is this a good way to do this? Is there an easier way? Thanks!

I’m confused - whether or not your bitstream is encrypted has no bearing whatsoever on how you can communicate with the CW305 FPGA. It may impact how you program the FPGA (as per your previous thread), but once the FPGA is programmed, it does not matter at all if the bitstream was encrypted or not.

With that out of the way, here are the ways you can communicate to a CW305 FPGA target:

  • If your design follows the USB/register interface of our AES example, then you can use fpga_write() and fpga_read() from CW305.py.
  • An alternative is to use simpleserial as we do in our CW308 Spartan6 example (see hardware/victims/cw308_ufo_target/spartan6lx9).

Both of these methods are well suited to communicating with pure hardware targets (e.g. not a soft-core processor). The first one is usually preferred since it’s faster and simpler.

If what you want to talk to on your FPGA target is a processor, then one option is to use simpleserial as we do in our CW305 Arm DesignStart example.

I hope this is helpful,
Jean-Pierre

1 Like