We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

Bringing up the Avnet MicroZed with Vivado

by Xilinx Employee ‎09-30-2013 02:35 PM - edited ‎02-06-2014 01:14 PM (171,339 Views)

By Adam Taylor – APTaylor@theiet.org


I recently received the Adam Taylor Edition of Avnet’s Zynq-based MicroZed board, which was sent by the very kind people at Xilinx. I have been writing about the ZedBoard for a while now over on All Programmable Planet. For the original ZedBoard, I used the more traditional PlanAhead, Xilinx Platform Studio, and Software Design Kit (SDK) flow. With that in mind, I decided that for the MicroZed I would implement the system using the Xilinx Vivado Design Suite, which turned out to be surprisingly easy. My aim is to progress with the MicroZed in a similar manner to the ZedBoard: looking at creating the system, using the on-chip XADC, boot-loading the MicroZed, adding my own peripheral, and finally adding an operating system. I expect this will progress rapidly expect due to my familiarity with the ZedBoard.



Photo 1 - MicroZed Adam Taylor Special Edition.jpg 



The first step is to download the MicroZed board definition and configuration, which are available at http://www.zedboard.org/documentation/1519. The first file to download is the MicroZed board definition file, which should be extracted to your Xilinx implementation directory. In my case, the directory is loacated at C:\Xilinx\Vivado\2013.2\data\boards\zynq. This file provides the Vivado Design Suite with MicroZed configuration information.  The second file you’ll need is a TCL file containing the necessary preset information for the MicroZed. We’ll run this TCL file once we have created a project.


After starting Vivado, the first step is to create a new project. My first MicroZed project will be an RTL project and will not contain any initial source code. The next step is to select the MicroZed 7010 board as a default target using the definition file just downloaded.


Photo 2 - Vivado New Project screen.jpg 


Now that the project is created, we need to add the Zynq SoC’s processing system (PS). The best way to do this is to create a new block diagram and add in the Zynq PS from the IP library in Vivado. We can then create a block diagram by selecting the option under the flow-control window on the left-hand side of the Vivado screen.


Photo 3 - Vivado Block Design with Zynq All Programmable SoC.jpg 


With the PS now added to the block diagram, we need to define the system. We could do this by hand (as would be the case for a custom board). Rather helpfully, the MicroZed people have created a TCL file that defines the MicroZed system. It’s the preset file we downloaded at the start. This TCL file defines the PS bank voltages, buses, clocks, fabric clocks, DDR3 settings, external peripherals, and the MIO configuration.


Note: Remember to use linux style forward separators:




Photo 4 - Vivado Td Console with TCL.jpg



Having applied this file, we then double click on the system and we see the Zynq PS design. Notice that this definition ties up with the capabilities of the MicroZed board's Ethernet, USB, DDR3 etc.



Photo 5 - Zynq PS configuration in Vivado.jpg 


Once we’re happy with the PS configuration, we need to declare the system’s external I/O. In this case, we want to declare the DDR and the fixed I/O. Within the Zynq PS, the fixed I/O includes the MIO, clocks, and resets along with the DDR3 reference voltages. As these are fixed, no UCF file is required because we are not working with the programmable logic (PL) side of the Zynq. We will need to create UCFs later when we use the Zynq’s PL side.


To add these external I/O declarations, you click on the “run design automation” option that appears at the top of the diagram. This will generate a warning. Clicking on “OK” allows you to proceed and you will then see outputs added to the fixed IO and the DDR within the block diagram.


Photo 6 - Adding Outputs to the Zynq PS configuration.jpg 



Now we’re nearly ready to proceed to build the system. However, we must first validate the design to ensure that it is valid and contains no errors by selecting the “validate design” button on the left side of the Vivado screen.



Photo 7 - Successful Validation of the Zynq PS configuration.jpg 


Having created a valid block diagram we will want to save this before we proceed. Once you have saved the design, the next step is to generate the files needed to implement the system, starting with the creation of the HDL wrapper. But first, we need to determine which language we’re going to work in (VHDL or Verilog). We select the HDL via the Tools->Project Settings Menu.


Once we’ve selected our preferred language, we right click on the uzed.bd file under “sources” and select “Create HDL Wrapper” to generate the wrapper.



Photo 8 - Creating the HDL Wrapper in Vivado.jpg 



We can also create the necessary synthesis and place-and-route files by selecting the “Generate Output Products…” option from the same menu that we used to generate the HDL wrapper.


Once these files have been created, it’s time to generate the bitstream by selecting the “Generate Bitstream” option in the flow navigator on the left of the Vivado screen. When the bitstream generation completes, you will see:



Photo 9 - Generating the Zynq SoC Bitstream for MicroZed.jpg

With the bitstream created, we then export the data into SDK. Then we’re ready to write the software to run on the MicroZed’s Zynq SoC.  I’ll discuss this process in my next blog, but a sneak peak of where we are headed appears below.



Photo 10 - Talking to MicroZed via Tera Term.jpg



I spent an afternoon bringing up the MicroZed and really enjoyed the experience. My next blog post will wrap up SDK project creation and boot loading with the MicroZed.


Note: Please do not be concerned if you see an error in Vivado version 2013.2 which reports “Failed to get a license:Internal Bit stream.” This is a bug in the current version. You can check in the implementation log to make sure that the license was in fact obtained.


by Explorer
on ‎07-23-2014 02:19 AM

hi Adam,


nice tutorial Smiley Happy


by the way, we can change the frequency of serial port into our design definition to 9600baud, in order to open directelly the show on tera without change this value on setting of tera term 

by Observer taylo_ap
on ‎07-25-2014 12:12 PM

Hi Gma


Thanks for the kind words  on my tutorial


You can and it is very easy to do this can be acheived by using configuring the Zynq and looking on the PS-PL configuration tab. As shown in the diagram below




by Newbie andrest1221
on ‎05-17-2016 01:27 PM

Hi Adam.


Congratulations!!. Do you have a tutorial with ZedBoard Zynq 7000?. or an interesting link about zedboard?


Thank you.

by Observer taylo_ap
on ‎05-18-2016 02:29 PM



This is the first of a series which is still running, currently there are over 130 blogs covering everything Zynq related locatted here http://adiuvoengineering.com/?page_id=285 The techniques are the same regardless of which baord you are using MicroZed, Zybo, Zed etc as it focuses mainly upon the Zynq itself. 



About the Author
  • Be sure to join the Xilinx LinkedIn group to get an update for every new Xcell Daily post! ******************** Steve Leibson is the Director of Strategic Marketing and Business Planning at Xilinx. He started as a system design engineer at HP in the early days of desktop computing, then switched to EDA at Cadnetix, and subsequently became a technical editor for EDN Magazine. He's served as Editor in Chief of EDN Magazine, Embedded Developers Journal, and Microprocessor Report. He has extensive experience in computing, microprocessors, microcontrollers, embedded systems design, design IP, EDA, and programmable logic.