RoadTest: Avnet PicoZed XC7Z010 + FMC Carrier Card
Evaluation Type: Development Boards & Tools
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: Avnet Zedboard, Xilinx Zynq-7000 SoC ZC702 Evaluation Kit, Atlas-I-Z7e
What were the biggest problems encountered?: The Revision E version of the PicoZed removed the ability to software select the PMOD connector routed to the Zynq processor system (PS). The Avnet "Tutorial 06 PS SPI PMOD" and "Tutorial 08 PS I2C PMOD" do not work for my version of the PicoZed Z010 without resoldering jumper connections on the PicoZed SoM.
In this RoadTest, I will be testing a PicoZed 7010 module installed in a PicoZed FMC Carrier Card V2. The PicoZed FMC Carrier Card V2 (http://zedboard.org/product/picozed-fmc-carrier-card-v2) is a development board designed to work with the full range of PicoZed System On Module (SOM) cards. The PicoZed FMC Carrier Card V2 is a full featured development board, containing a large number of I/O hardware including Gigabit Ethernet, PCIe, USB, and more, depending on the features compatible with the PicoZed module. The combination of PicoZed and FMC Carrier Card offers a wide array of features, making it a compelling starting point for embedded and edge computing development including, but not limited to, real-time controls, digital signal processing, robotics, radar, software defined radio, and edge AI applications.
The PicoZed SOM cards are based on Xilinx Zynq 7000 series system on chip (SoC). The Xilinx Zynq SoC consists of an embedded ARM processor system (PS) and an Artix-7 equivalent programmable logic (PL) block. The PS and PL blocks are connected via an industry standard AXI (Advanced eXtensible Interface) bus, and Xilinx provides a software tools called Vivado Design Suite for configuration and programming of the PS, PL, and AXI-connected peripherals. A number of references and tutorials are available to help get started with development and to understand the features and capabilities of the Xilinx Zynq 7000 SoCs and PicoZed SoMs.
The Zynq Book is written specifically for the ZedBoard and Zynq development boards, but still provides an excellent introduction to Zynq 7000 series SoCs. It provides an overview of the Zynq PS and PL components as well as worked examples of how to use Vivado for system configuration, IP integration, and software development. The Zynq Book site contains a number of tutorials that are readily adapted to PicoZed modules.
Zedboard.org contains documentation and board definition files for the PicoZed module and the PicoZed FMC Carrier Card V2. The site also contains reference designs and tutorials for the PicoZed and Carrier Card. Also included are “out-of-box” images that allow the system to be booted for testing, as will be shown in the “Hardware Setup and First Boot” section. The PicoZed 7010/7020 SOM (System-On-Module) Hardware User Guide v. 2.0 and the PicoZed FMC Carrier Card V2 Hardware User Guide were especially useful during this test drive.
The Xilinx Vivado Design Suite contains tools required Zynq configuration and development. Include in the Vivado Design Suite is the Documentation Navigator, which provides reference documentation for Xilinx products, including the Zynq 7010. The Xilinx Vivado Design Suite WebPACK Edition is available as a free download (registration required) from https://www.xilinx.com.
The products included in this Test Drive is a PicoZed 7010 SoM (System on Module) and the PicoZed FMC Carrier Card V2. The PicoZed SoM is a single card that contains the Zynq 7010 SoC, RAM, QSPI Flash RAM, eMMC storage, etc. with control and I/O lines routed to three high-speed connectors on the reverse side of the PCB. The module is slightly larger than a credit card (2 ¼-inches by 4 inches), and fits in a Carrier Card.
The carrier card box is significantly larger than the PicoZed box and is packed in two layers. The top layer containing the PicoZed FMC Carrier Card V2, which measures approximately 11-inches by 4-inches. The bottom layer contains the accessories: an autoranging power supply, three international power cords, a micro USB cable, ethernet cable, an ATX power adapter cable, SD card, and mounting hardware.
The first step to seat the PicoZed SoM in the FMC Carrier Card V2 is to attach the provided metal standoffs in the top of the carrier card with four plastic screws at the perimeter of the SoM connectors. Then the three white connectors on the back of the PicoZed card are aligned with the three connectors on the FMC Carrier Card and pressed firmly into place. Finally, the PicoZed board is secured to the standoffs with the remaining four plastic screws.
After the PicoZed module is connected to the carrier card, the included power supply is connected to J2. The included micro USB cable is connected to J1 and the development system.
My development system used for these tests is a modest development desktop with 16 GB of RAM running Ubuntu 19.04. Xilinx Vivado and SDK version 2019.1 were used throughout this Test Drive for hardware and software development. Communication between the development system and the FMC Carrier Card was performed with the ‘screen’ command line utility:
$ screen /dev/ttyUSB0 115200
Booting the system using an “out-of-box” binary verifies that the PicoZed was correctly seated in the FMC Carrier Card and the system is functional. The out-of-box binary consists of a pre-compiled, bootable petalinux OS image with built-in system tests. The out-of-box binaries are available for each PicoZed card in the PicoZed Support Section, and for this test, I downloaded out-of-box design zip file for the PicoZed 7010. The contents of the zip file were extracted and copied directly to the SD card. The FMC Carrier Card was powered down, the SD card was inserted, and power switch was inserted. The boot process of the petalinux image was displayed on the development system serial console.
The “board definitions” are a collection of files that contain predefined settings about the FPGAs and SoCs used in a given production board. These settings include information such as GPIO and timings to assist in configuration and accurate simulations. Each PicoZed and Carrier Card combination has a set of definitions and are available for download from the PicoZed Support site. The board file are installed in Vivado by extracting the appropriate board definitions to <Xilinx install directory>/Vivado/2019.1/data/boad_data/ and <Xilinx install directory>/SDK/2019.1/data/board_data.
Now the PicoZed 7010 + FMC Carrier Card V2 will be available as a board when creating a new Vivado project.
During development and debugging phases it is a little cumbersome to repeatedly create a BOOT.bin file, copy to SD card, and boot the PicoZed. Most FPGA systems have a provision for programming and debug through a JTAG interface. The PicoZed FMC Carrier card possesses a dedicated 2x7 pin JTAG port, which is compatible with several JTAG programming cables. For this RoadTest Review, I opted for the JTAG-HS3 Programming Cable from Digilent, which is a reasonably priced programming cable that has good support for Xilinx Zynq SoC devices and is compatible with Xilinx Vivado and SDK. An additional advantage of using a JTAG cable during development is the ability to debug on the running system. This includes the ability to set breakpoints and examine register values for the PS through the Xilinx SDK, as well as capturing waveforms with an ILA (Integrated Logic Analyzer) IP block.
The next step in this RoadTest is a “Hello World” program. This is the first use of the Vivado Design Suite and the necessary steps to configure a Zynq system. I followed the PicoZed Tutorial 1 to create a “base system” containing the Zynq 7 Processing System block. The PicoZed base system is exported to the SDK to create the Hello World application, as described in Tutorial 2. Screenshots of the Base System project in Vivado, the Hello World application in Xilinx SDK, and the console output are shown below. The project files I created can be downloaded from my Github repository.
After successfully completing the Hello World example using the base processing system, the next step is to package custom IP block to demonstrate integrating the Zynq PL and PS components. To accomplish this, I followed this example of a basic hardware multiplier I found on the FPGA Developer blog. While simple, this creates an IP core from a straightforward VHDL hardware multiplier. A register is created to allow communication between the Zynq PS and PL components. A piece of C-code set the register value, the PL performs the multiplication, and the C-code retrieves the result and prints the answer on the serial console.
Unfortunately, I was unable to exercise all FMC Carrier card features as part of this RoadTest Review due to hardware configuration limitations. Certain features of FMC Carrier Card V2 are dependent on the PicoZed module. For example, PCIe interface is only compatible with PicoZed 7015/7030 modules which contain multi-Gigabit Transceivers.
The FMC Carrier Card V2 has four PMOD connections to utilize general purpose I/O (GPIO) signals available from the Zynq SoC. I intended to implement a GPIO test using the low-speed PMOD device connectors. Three of the PMOD connectors are assigned to Zynq PL, but are not supported on PicoZed 7010. The remaining PMOD connector (JSPS1) is dedicated to the Zynq PS, but is disabled by default on PicoZed Rev E to allow for a high-speed emmc connection. Unlike previous board revisions that allowed software selection of the PS PMO through a multiplexer, enabling the PS PMOD requires skillful resoldering of several jumpers, and disabling the eMMC device. Since the high-speed eMMC device is useful for other embedded applications, I decided not to make these modifications at this time.
During this RoadTest Review, I was able to bring up the hardware and exercise the Processing System and Programmable Logic components of the Xilinx Zynq with simple, but illustrative examples.
I had an overall positive experience with the PicoZed 7010 with FMC Carrier Card V2 and would recommend it for developers looking to work on the Zynq 7 series SoCs. The carrier card creates an excellent prototyping and development platform. The documentation provided on the PicoZed product support site is very complete and provides several good worked examples to help navigate the Zynq learning curve.
A word of caution, while the FMC Carrier Card V2 contains a large array of features and hardware interfaces, the choice of PicoZed will affect which features are available. It is important to examine documentation carefully to determine which PicoZed module is appropriate for a given application.
This RoadTest simply scratches the surface of development possibilities on the PicoZed. Some next steps I will be exploring with the PicoZed 7010 with FMC Carrier Card V2 is to build and configure petalinux and real-time operating systems, connect a DAC/ADC via the FMC connector and create DSP IP components in programmable logic.
Nice review, for such hardware within the given time-frame.
You should continue to update your findings in your blog, such as discovering the number of predefined IP's that can be compiled on this SOM.