MicroZed Chronicles: Getting to Grips with DSP in FPGA.
- Adam Taylor
- Aug 6
- 4 min read
Recently I was talking to a good friend of mine and he mentioned that a lot of the FPGA engineers he was talking to lacked DSP experience. Being the consummate businessman that I am, I immediately pitched him a two day DSP course for his engineers to get hands on with it.
This did get me thinking however that I had over the years created a lot of content related to DSP and maybe I should pull it together in a blog to help identify some resources already available.
Of course the heart of DSP is mathematics and we cannot do that without understanding how fixed and floating math works within our FPGA. Over the years I have written a lot about this, it was one of the first articles I wrote about back in the Xilinx Xcell Journal. You can find information on FPGA math here
Fixed and Floating point in FPGA – Introduction to fixed and floating point math using the VHDL 2008 Libraries
Fixed Point Math – A look at fixed point math in FPGAs
Introduction to the Versal DSP58 – A look at the capabilities of the DSP58
DSP58 and FP32 Mode – How to work with the DSP58 in Floating Point 32 mode.
DSP 58 and Simulink – Looking at how we can leverage Versal DSP58 in Simulink
FPGA Maths - One hour webinar with slides and example code provided.
One key aspect of FPGA mathematics, especially for fixed point math is how we perform rounding. To help shed some light on this I wrote a blog looking specifically at the topic of rounding.
We also may want to be able to implement transcendental functions in out FPGA such as Sine, Cosine, Square Root etc. One very useful algorithm for achieving this is the CORDIC algorithm which I explained here.
While not strictly speaking DSP, a lot of the work we do with FPGA and DSP requires we are able to access or generate analogue signals. Being able to understand how to work with ADC and DACs is address not only in this blog but also in this one hour video here (mixed signal madness) which provides slides and examples along with a blog and Hackster project on creating a delta sigma DAC.
At the heart of our DSP solutions is often filtering, filtering is a wide topic from a simple rolling average filter to a complex FIR band pass or stop filter. To help you get started with filters in the digital world I wrote a couple of Hackster projects. One uses real world signals and interfaces to ADC and DACs while the second uses PYNQ to generate the signals for the filters. Both projects are great to start getting to grips with digital filters.
A specialised version of signal processing is image processing, we recently released a white paper on image processing and the techniques required to create an image processing system along with a webinar, Hackster project and associated blog on generating a sliding window filter.
The final element of the DPS world is of course working with the frequency domain, this is an area I will generate more information in. However in the meantime here is my introduction to the frequency domain along with a couple of projects showing how we can implement FFTs in MPSoC UltraScale+ and Zynq 7000 devices.
Hopefully collating all these resources into one place makes it a little easier for you to get started with DSP in your FPGA. If you are looking for a good starting point book I highly recommend the scientists and engineers guide to DSP.
So what do you think I missed and should I add to my course, although this only scratches the surface of my course proposal.
UK FPGA Conference
FPGA Horizons - October 7th 2025 - THE FPGA Conference, find out more here.
Workshops and Webinars:
If you enjoyed the blog why not take a look at the free webinars, workshops and training courses we have created over the years. Highlights include:
Upcoming Webinars Timing, RTL Creation, FPGA Math and Mixed Signal
Professional PYNQ Learn how to use PYNQ in your developments
Introduction to Vivado learn how to use AMD Vivado
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
Perfecting Petalinux learn how to create and work with PetaLinux OS
Boards
Get an Adiuvo development board:
Adiuvo Embedded System Development board - Embedded System Development Board
Adiuvo Embedded System Tile - Low Risk way to add a FPGA to your design.
SpaceWire CODEC - SpaceWire CODEC, digital download, AXIS Interfaces
SpaceWire RMAP Initiator - SpaceWire RMAP Initiator, digital download, AXIS & AXI4 Interfaces
SpaceWire RMAP Target - SpaceWire Target, digital download, AXI4 and AXIS Interfaces
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