September 30, 2022
Editor’s Note: This content is republished from the MicroZed Chronicles, with permission from the author.
Over the last few weeks, I have been creating a course centered around the Avnet ZUBoard which will be like the MiniZed and Ultra96-V2 classes I’ve done previously. While planning the content of the course, I came across a series of videos released by MATLAB recently that walk through a simple filter application implementation using Simulink, Model Composer, and the DSP and signal processing toolboxes.
Over the four videos, John Pitrus walks us through how to create a simple bandpass filter.
The first video examines the target development board, the ZUBoard, and discusses how to install the board definitions for the ZUBoard from the Avnet GitHub. The video also introduces the MathWorks tools which are used to create the example MATLAB and Simulink. This is coupled with the AMD-Xilinx Model Composer which integrates with Simulink and enables the generation of HLS solutions for AMD-Xilinx devices. Of course, we will also need Vivado to implement this. For these videos, the following tool chains are used:
The second video explains how to create the bandpass filter in MATLAB / Simulink using the Model Composer library. In this video, John walks us through how to create the filter and, more importantly, how to simulate its performance in the Simulink environment. One of the benefits of this development flow is the rapid simulation and the ability to easily use real-world data in the simulation environment.
With the design created and exported from the MATLAB environment, the third video demonstrates how to import the created IP block into Vivado, connects its IO, and then create and run a behavioral simulation within Vivado.
With a simple example, these videos show the power that can be provided by working at a higher level of abstraction.
We recently attended the FPGA World Conference in Sweden where we demonstrated a Spartan-7 FPGA running an image processing pipeline. Into that image processing pipeline, we used MATLAB / Simulink to create a simple auto white balancing (AWB) algorithm. This AWB algorithm was implemented as an IP block into the design and produced results quickly. I wrote this up as a Hackster project, the before and after white balanced images can be seen below.
I know there is always a debate about the use of high-level tools. I am real fan of leveraging levels of abstraction when appropriate because I see it as our job as engineers to select the most appropriate tool for the task at hand.
Incidentally, it will be our nine-year anniversary by the time this blog is published. The first MicroZed Chronicles was published on September 30, 2013. I never imagined I would write as many as I have or that it would enable what followed. Thanks to you all for your reads, views, and comments over the years and here.