This week I want to talk about a few very important peripheral elements when it comes to learning FPGAs and SoCs in both development and for hardware testing.
Editor – As FPGA engineers, we spend a lot of our time writing code be it VHDL, System Verilog used for design capture, or other languages such as TCL, Python, SDC and XDC which hold together FPGA developments. Therefore, a good editing environment is crucial to support both efficient development and learning. I use VS Code with the TerosHDL plug which enables me to include timing diagrams using WaveDrom, register definitions using bitfield, and documentation using doxygen. The TerosHDL plug in also enables visualization of state machines, entities etc.
Verification Environment – Once we have written the HDL, we need to simulate to make sure it works as we intend. For many applications, we can use Vivado Simulator and its AXI Verification IP. However, we may also want consider verification frameworks such as UVVM, cocotb or OSVVM. To use these, you need to use one of the free and open-source simulators such as GHDL, Verilator and Icarus Verilog.
A good editor and verification environment will ensure that we are able to increase the quality of our design. Performing simulation etc. before running the design on hardware is a key part of professional development. Having a simulation when we deploy our design on the hardware also enables detailed visibility of the design behavior if issues are identified. A good simulation will enable you to easily apply the real-world conditions in an attempt to recreate the same behavior in the simulation.
Oscilloscope / Logic Analyser – We can do a lot of debugging internally in the device using an ILA or even the UART to AXI project that we have been examining. However, we do need the ability to look at signals on the board and often its interfaces. An oscilloscope can be very useful here, especially if it’s able to decode protocols such as I2C, SPI, UART etc. A logic analyser is also useful for decoding buses which you might route out to pins or headers on the development board. A combined logic analyser and oscilloscope is often a good investment. We have this in our lab along with higher-end equipment used for client contracts like several Digilent Analogue Discovery which provides two 30 MHz bandwidth 100 MSPS analogue channels, two channel arbitrary waveform generator, and a 16-bit logic analyser / pattern generator. Devices like the Analogue Discovery can be very powerful in helping to get your system up and running.
JTAG Programmer – Not all boards have a built-in JTAG programmer. We cannot easily debug an application using an SD Card or QSPI boot since there is no ability to use internal logic analysers. A low cost JTAG programmer like the HS3 can be very useful to help with these. It is also possible to use a Raspberry PI Pico to act as a JTAG programmer and also for a very low-cost JTAG programmer if possible.
RPI Pico – Not only can these be used for JTAG programming, but they can also be used to emulate sensors and interfaces using the I2C, SPI, UART and programmable IO. This can help de risk your development and even act as a very cheap UART to USB convertor from your FPGA with a simple line or two of MicroPython.
Depending on what you are working with, you may also want to consider things like USB power monitors which enable you to measure the power drawn by your development board. I also have a simple low-cost HMDI to USB dongle which enables me to grab frame output by image processing implementations in FPGAs which output the frames over HDMI.
With the exception of the oscilloscope, everything in the list above costs less than $10 or is free. These should help you get started on your development journey, and, like many of us, we build up our capabilities over several years, especially when just starting out.
Workshops and Webinars
Upcoming webinar - Introduction to Vivado 30th March Enjoy the blog why not take a look at the free webinars, workshops and training courses we have created over the years. Highlights include
Ultra96, MiniZed & ZU1 three day course looking at HW, SW and Petalinux
Arty Z7-20 Class looking at HW, SW and Petalinux
Mastering MicroBlaze learn how to create MicroBlaze solutions
HLS Hero Workshop learn how to create High Level Synthesis based solutions
Embedded System Book Do you want to know more about designing embedded systems from scratch? Check out our book on creating embedded systems. This book will walk you through all the stages of requirements, architecture, component selection, schematics, layout, and FPGA / software design. We designed and manufactured the board at the heart of the book! The schematics and layout are available in Altium here Learn more about the board (see previous blogs on Bring up, DDR validation, USB, Sensors) and view the schematics here.
Sponsored by AMD Xilinx