In addition to questions about the best beginner development boards, I am often asked which books I recommend for FPGA developers just starting out.
Designing with Xilinx FPGAs Using Vivado – This book provides a wide-ranging introduction to Vivado and looks at elements such as Vivado projects, IP flows, memory and processor options along with advanced elements such as HLS, timing closure, power analysis / optimization and much more. Written by a team of AMD (former Xilinx) engineers, this book is a great companion to help you get started, especially alongside the MicroZed Chronicles.
The Scientist and Engineer's Guide to Digital Signal Processing – This is perhaps one of the best books on implementing DSP algorithms. It provides clear and concise examples and explanations using a lovely pseudo code style approach enabling you to create DSP processing in either the programmable logic or within a Zynq-7000 SoC, Zynq MPSoC or MicroBlaze if appropriate. I first came across this book when I started developing telecommunication systems for satellites while working at what is now Airbus Defence and Space.
Digital Signal Processing with Field Programmable Gate Arrays – While the book above explains DSP algorithms, this book focuses on how to implement them effectively in programmable logic focusing on filters, multi-rate systems, Fourier Transforms, communication systems, and adaptive systems. I first bought this book in 2006 when I was developing early machine learning systems for scene-based calibration of thermal imagers. I recently bought the latest version for the company library and it has grown significantly over time.
Zynq Book and Zynq MPSoC Book– Both of these books are excellent companions to the MicroZed Chronicles because they focus on the architecture of the Zynq-7000 and Zynq MPSOC devices. Both walk the developer through the architecture of the system and interfacing between PS and PL. There is also a focus on PYNQ and machine learning in the Zynq MPSoC book.
Parallel Programming for FPGAs – This book was written by those involved in the creation of AutoESL which became Vivado HLS (and has evolved to Vitis HLS) when Xilinx purchased AutoESL Inc. It introduces basic concepts of HLS and signal processing with HLS such as FIR Filter, CODRIC, DFT and FFTs. This book also examines matrix multiplication, sorting algorithms, vision systems, and encoding schemes such as Huffman encoding.
Of course, there is also my own recently released book which is more focused on designing an entire FPGA-based product. In the example contained, we set out with requirements and designed the board throughout the book. The idea was to provide new and junior engineers an understanding of the process of creating an SoC-based embedded system. Since it’s difficult to write about designing boards, without making the boards and testing them. We manufactured and commissioned the board designed in the book.
What are your favourite books? Let me know which ones you recommend and why and I’ll create a list on the site we can use for reference.
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