loading

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

  • Zybo Development Kit- you can purchase from Digilent Inc. directly.
  • Zybo Accessory Kit- you can find these pieces individually, but Digilent runs a promotion that you buy this with your Zybo and you get $20.00 off, you will need to cart the Zybo and the option to select the kit as an add on appears.
    1. Voucher for Xilinx Vivado® Design Suite: Design Edition
    2. (One full seat, node locked, device-locked to the Zynq-7000 XC7Z010)
    3. 4GB Micro SD card
    4. Micro USB cable
    5. 5V 2.5A switching power supply
  • VGA Cable to connect to a monitor
  • Monitor capable of doing 720p with a VGA Input
  • MicroSD Card Adapter
  • Windows PC
  • Camera capable of doing 720p streaming video over HDMI (most modern laptop computers work or a GoPro).
  • active internet connection

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:

  • Connect SD card (My PC happens to have a SD Card slot, so I only needed a SD Card adapter to get it connected. Others may have different connections. )
  • Once you have your SD Card connected to your PC find the SD Card then > Right Click > Select Format
  • Select Fat32 (should be the Default)
  • Click format.

If you have a Mac:

  • Attach your SD Card > Open your Launchpad > Find the "Other" folder > Disk Utility
  • Then you will open Disk Utility and you should see your SD Card.
  • Select the actual SD Card Name (usually indented below the SD Card Description).
  • Go to the Erase menu
  • Select MS DOS (FAT)

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:

  • BTN1- Smoothing
  • BTN2- Sobel (or Edge Detection)
  • BTN3- Sharpening
  • BTN0 - Returns the image to no Filter.

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.

  • 000- No conversion
  • 001- grayscale
  • 010- sepia
  • 011- color inversion
  • 100- BGR (red and blue channels are swapped, but green stays the same)
  • 101- red only
  • 110- green only
  • 111- blue only

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.

<p>Hi congrats for the demo!</p><p>I tried to follow the steps - the only differences being a quite new 20 inch monitor (rather than the specific 23&quot; one) and a kitvision escape rather than a go-pro. Everything seems to be working except that my monitor image seems to be somewhat out of sync (i.e. double idols and very noisy) however the switches and buttons work as they should. Any ideas?</p><p>Thanks! </p>
<p>In step 5 do you mean 720P instead of 780P?</p>
<p>Hello! Thanks for share this very nice demo!!</p><p>I'm trying to do something like this demo but with Vivado indead ISE, but i wanna know how to initialize your HDMI_RX core.</p><p>Could you offer me some documentation to charnue@correo.ugr.es?</p><p>I need it for my final high school work! THANKS! =D</p>
<p>sir I have purchased zync7010 and want some basic tutorials on it with codes.</p><p>how can I acquire image through camera and load it in the board ? can you please give me basic steps.</p><p>Thanks in advance.</p>
<p>WOW !!!</p><p>Could you mod this to drive ws2812b leds and process the video to generate ambilight ??</p>

About This Instructable

36,458views

15favorites

License:

Bio: Marketing Manager and engineering evangelist for Digilent Inc. I believe that all things are better with microcontrollers... and that anyone can learn anything... provided they ... More »
More by LariSan:WSU Hackathon 2015 Digilent Design Competition 2015 Digilent MakerSpace- LabVIEW Hacker 
Add instructable to: