Image processing is a good way to show the co-processing environment of Xilinx Zynq SOC (System on Chip). This demo shows the application of several image filters to a streaming high definition video stream.
The stream is input from a bidirectional HDMI port, passed through the integrated FPGA, filters applied and passed out into the VGA port. The on-board ARM Cortex A9 processor is managing the inputs and allowing the booting from SD card.
The goal of this instructable is to give a user a quick demonstration of what the Zybo board is capable of. There is no programming of the board and instead you are using the previously prepared files that are loading on the microSD Card. This means that this demo does NOT require you to build the source files. To do that you will need to have a base level understanding of the Xilinx chain as well as familiarity with programming the Zynq processor. Steps to do this are not included in this instructable.
Step 1: Gather your materials
Begin by gathering the materials for the demo
Step 2: Format the micro SD Card
Get your microSD card and get your computer to format it.
The Zybo reads files in the Fat32 Format.
It's recommended that you use a Windows PC:
If you have a Mac:
Step 3: Download file and put on SD Card
The Zynq chip (on the Zybo) has an ARM Cortex A9 processor integrated that allows you to boot from an SD Card.
Now that you have formatted your SD card in the correct file format, you need to put on the card what you want the board to load when it boots up.
This means you will need a BOOT.bin file.
You can download that file on the Digilent-Maker GIT Hub
or use the file attached on this page.
Once you have that file, drag it into your SD Card. It should reside in the main/root folder (no other folders).
Step 4: Put the SD card in your Zybo and apply power
Put your SD Card into your Zybo.
Make sure you change JP5 to the "SD" setting (load from SD Card)
Then, apply power using the wall plug (in the accessory kit).
It's important to make sure that your jumper is switched from USB Power (default how it ships) to Wall Power.
Once you have your board powered up you should see LD11 (red) and LD10 (green) turn on.
Step 5: Connect your camera (video source)
Next you will connect your video source.
The way that the demo is written, the Zybo only advertises that it supports 780p resolution.
Most higher end cameras will adjust their output streams to what the display advertises.
It was this feature that helped us select using the GoPro.
The GoPro has microHDMI output and the Zybo has full HDMI input. You will need to get a micro to Full HDMI cable.
Plug both in and turn on the GoPro.
Step 6: Connect your monitor using the VGA
Next connect your monitor using the VGA cable.
Make sure your monitor is on.
Once you have camera and monitor connected you setup is done!
Step 7: Play with the video stream!
The video conversions fall into two categories:
The bulk of the video conversions is being carried out in the programmable logic fabric (FPGA) of the Zynq 7010 part. If you want to dig into these conversions you can take a peek at the source code that is in git folder. We'll go into building these into a later tutorial, but for now it's about using the pre-loaded conversions.
Step 8: Buttons = Linear Filters
Three types of Linear Filtering has been employed:
A good place to learn about Linear Filtering
Step 9: Changing the Color Space Conversion
The switches change the color space.
Using 3 of the switches SW0-SW3 as binary inputs there are 8 possible selections that correspond to the color-space conversions that are programmed.
A good place to understand color conversions can be found here
Step 10: Troubleshooting
If the feed stops or looks corrupted, the first thing to try is to press the red PS-RST button.
e.g losing the video feed or video corruption
Alternatively you can power on or off the Zybo to do a hard reset.