The Zynq Book
Tutorials
Louise H. Crockett
Ross A. Elliot
Martin A. Enderwitz
Robert W. Stewart
Department of Electronic and Electrical Engineering
University of Strathclyde
Glasgow, Scotland, UK
v1.2 - July 2014
Acknowledgements
There are a number of people whom we would like to thank specifically for their help and contribution of
feedback with regards to the practical tutorials.
Once again, our sincerest thanks must go to Cathal McCabe of Xilinx University Program, who has not only
provided vital feedback and support in the creation of the tutorial material, but has also coordinated the
distribution of those materials to others. Our thanks must also go to Austin Lesea and Y.C. Wang at Xilinx
for taking the time to attempt the tutorial exercises at an early stage, and for providing us with valuable
feedback and suggestions. We also greatly appreciate the support of our colleagues from University of
Strathclyde, Iain Chalmers, Sarunas Kalade, and David Northcote, who have likewise been a great help in
working through the tutorials and feeding back their experiences.
Louise Crockett, Ross Elliot, Martin Enderwitz, and Bob Stewart.
July 2014.
i
Contents
1. First Designs on Zynq
2. Next Steps in Zynq SoC Design
1
Creating a First IP Integrator Design ............................................................................................4
Creating a Zynq System in Vivado .............................................................................................10
Creating a Software Application in the SDK ..........................................................................20
29
Expanding the Basic IP Integrator Design ..............................................................................32
Creating a Zynq System with Interrupts in Vivado ..............................................................35
Creating a Software Application in the SDK ..........................................................................45
Adding a Further Interrupt Source ............................................................................................52
57
Creating Projects in Vivado HLS .................................................................................................60
Design Optimisation in Vivado HLS ..........................................................................................66
Interface Synthesis ..........................................................................................................................77
79
Creating IP in HDL ...........................................................................................................................82
Creating IP in MathWorks HDL Coder ....................................................................................101
Creating IP in Vivado HLS ...........................................................................................................109
117
Importing IP to the Vivado IP Catalog ....................................................................................120
ZedBoard Audio in Vivado IP Integrator ...............................................................................127
Creating an Audio Software Application in SDK ................................................................137
3. Designing With Vivado High Level Synthesis
4. IP Creation
5. Adventures with IP Integrator
iii
iv
The Zynq Book Tutorial
First Designs on Zynq
1
v1.3, April 2014
Revision History
Date
Version
Changes
14/06/2013
19/06/2013
27/01/2014
30/04/2014
1.0
1.1
1.2
1.3
First release for Vivado Design Suite version 2013.1
Updated for changes in Vivado Design Suite version
2013.2
Updated for changes in Vivado Design Suite version
2013.4
Updated for changes in Vivado Design Suite version
2014.1
First Designs on Zynq
v1.3, April 2014
www.zynqbook.com
2
Introduction
Introduction
This tutorial will guide you through the process of creating a first Zynq design using the Vivado™ Integrated
Development Environment (IDE), and introduce the IP Integrator environment for the generation of a
simple Zynq processor design to be implemented on the ZedBoard. The Software Development Kit (SDK)
will then be used to create a simple software application which will run on the Zynq’s ARM Processing System
(PS) to control the hardware that is implemented in the Programmable Logic (PL).
The tutorial is split into three exercises, and is organised as follows:
Exercise 1A - This exercise will guide you through the process of launching Vivado IDE and creating a
project for the first time. The various stages of the New Project Wizard will be introduced.
Exercise 1B - In this exercise, we will use the project that was created in Exercise 1A to build a simple Zynq
embedded system with the graphical tool, IP Integrator, and incorporating existing IP from the Vivado IP
Catalog. A number of design aids will be used throughout this exercise, such as the Board Automation feature
which automates the customisation of IP modules for a specified device or board; in this case we will be using
the ZedBoard Zynq Evaluation and Development Kit. The Designer Assistance feature, which assists with the
connections between the Zynq PS and the IP modules in the PL will also be demonstrated.
Once the design is finished, a number of stages will be undertaken to complete the hardware system and
generate a bitstream for implementation in the PL. The completed hardware design will then be exported to
the Software Development Kit (SDK) for the development of a simple software application in Exercise 1C.
Exercise 1C - In this short third exercise, the SDK will be introduced, and a short software application will
be created to allow the Zynq processor to interact with the IP implemented in the PL. A connection to the
hardware server that allows the SDK to communicate with the Zynq processors will be established. The
software drivers that are automatically created by the Vivado IDE for IP modules will be explored and
integrated into the software application, before finally building and executing the software application on the
ZedBoard.
NOTE: Throughout all of the practical tutorial exercise we will be using C:\Zynq_Book as the working
directory. If this is not suitable, you can substitute it for a directory of your choice, but you should be aware
that you will be required to make alterations to some source files in order for exercises to complete
successfully.
First Designs on Zynq
v1.3, April 2014
www.zynqbook.com
3
3