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!

Showing results for 
Search instead for 
Did you mean: 

Adam Taylor’s MicroZed Chronicles Part 150: A first look at Trenz Electronic’s ZynqBerry Board

Xilinx Employee
Xilinx Employee
0 0 47.7K


By Adam Taylor


Continuing on our exploration of embedded vision and looking at how we can interface different image sensors and cameras to our Zynq-based embedded system, I want to take a look at an area we have not yet explored: how we can use image sensors designed for mobile applications. Typically these sensors provide cost-effective imaging solutions for many applications.


Many of these image sensors use the MIPI CSI-2 (Mobile Industry Processor Interface Camera Serial Interface Type 2). This interface is very simple. It uses an I2C interface (called the Camera Control Interface) for control and a number of serialized, reduced-swing LVDS data lanes running at up to 1Gbps to provide the image data. (This is called the D-PHY interface.)


This interface is ideal for implementing within a Zynq SoC because we can use the I2C Interface in the Zynq SoC’s PS (processor system) to control the camera module and the Zynq SoC’s PL (programmable logic) to receive and process the image data. There are several such image sensors we can use from the maker market. Many of these are designed for the Raspberry Pi dev board that operate in the visible and near-IR spectrum.


What would be great is if there was a platform we could use to interface with these cameras with ease. There is. It’s called the ZynqBerry, designed and marketed by Trenz Electronic. The Trenz ZynqBerry follows the popular Raspberry PI model 2 form factor and comes with the necessary CSI-2 camera interfaces as well as USB, Ethernet, audio, and HDMI.


There is also support for debugging software written for the board over a USB micro B connection, which provides power, JTAG, and UART functionality. When it comes to storing the configuration data for the board, we can use the ZynqBerry’s Quad SPI Flash memory or an SD Card. The default is to boot from the Quad SPI Flash memory.





Trenz Electronic’s Zynq-based ZynqBerry board



Over the next few blogs, we are going to look at how we can get this board up and running as a video platform using low-cost CSI-2 cameras and particularly how we can use SDSoC for creating these applications.


This discussion benefits two kinds of readers:


  • It enables engineers to be able to quickly and easily get these low-cost cameras up and running before committing to developing custom hardware.
  • It allows members of the maker community—who often do not use FPGAs or SoCs—to understand how to develop high-performance image-processing applications using Zynq SoCs.


To get the ZynqBerry up and running, we can use the numerous resources on the Trenz Web site. You’ll find a Vivado HL example and an SDSoC example.


If we download the Vivado example (2016.2) and extract the files, we will see a number of directories and batch files. We then have two options. We can transfer the pre-built files to an SD Card and try the example directly or we can re-create the project and explore the design using one of the command files.





Clicking on the Vivado_create_project_guimode.cmd will create a Vivado project that we can use to understand how the demo application works. We can also do the same with the SDK_create_prebuilt_project_guimode.cmd batch file.


When I generated this project, I was able to see the following block diagram:






This should get us going very well.


This download also includes the board files, which we need to develop our own applications on the ZynqBerry platform. We can move these into the <Vivado>/2016.2/data/boards directory. This will provide us the ability to create our own projects from scratch with the correct settings for the ZynqBerry.


Over the next few blogs we will look more in depth at how we can use the ZynqBerry demo applications and add functions for our own applications.


Incidentally this is the 150th Sunday I have sat down to write this blog, looking back we have covered quite a lot of ground on using the Zynq.



Editor’s Note: This is blog post number 150 in Adam Taylor’s immensely popular MicroZed Chronicles series. Congratulations Adam!


Code is available on Github as always.


If you want E book or hardback versions of previous MicroZed chronicle blogs, you can get them below.




  • First Year E Book here
  • First Year Hardback here.




MicroZed Chronicles hardcopy.jpg 



  • Second Year E Book here
  • Second Year Hardback here




MicroZed Chronicles Second Year.jpg 




All of Adam Taylor’s MicroZed Chronicles are cataloged here.