RoadTest: Digilent ARTY Z7 Dev Board
Author: alvieboy
Creation date:
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?: Parallella
What were the biggest problems encountered?: Lack of layout diagrams, designs are for old versions of Vivado suite/Petalinux.
Detailed Review:
I was born in 1975. And according to multiple sources, it all started in 1975. On this year, Signetics and Intersil introduced two integrated circuits, the 82S100 and IM5200, respectively. These IC were called FPLA – Field Programmable Logic Array, and they eventually evolved to what we know today as CPLD (Complex Programmable Logic Array) and FPGA (Field Programmable Gate Array). In the mean term, other devices with similar purpose existed, such as PLD (Programmable Logic Device) and GAL (Gate Array Logic).
The FPGA themselves have improved over time, with more resources, better (faster and lower-power) architectures. Often a soft-core CPU was implemented in FPGA, or placed side by side, because some workloads are more easily managed by a CPU than by pure logic.
Then back in 2011 Xilinx introduced a new type of device – one that merges CPU (a dual-core ARM Cortex-A9) and FPGA fabric into a single chip die – the Zynq 7000 series. Altera followed the trend by launching Cyclone V the very next year. These new devices bridged the gap between the CPU and the programmable logic, leading to very fast interconnects and a level of integration never seen before.
In 2012 Digilent introduced one of the first Zynq-based evaluation boards to the market targeting starter engineers, hobbyists and academics – The Zedboard. Other boards then appeared on the market (from Digilent), such as Zybo-Z7, Pynq-Z1, Cora-Z7 and the board under scrutiny here, the Arty-Z7 (-20 variant).
The board arrived well-packed, in a very small paper case where one could find the board and some protection plastic. After opening the box, one thing was clear, though - there were no cables at all, nor a power supply. According to the documentation, the board can be powered by either USB or by using an external DC adaptor (9V to 15V), requiring one to change a jumper in case you are not interested in the default power option (which is external power supply).
At the heart of this Arty Z7 20, you can find the Xilinx FPGA SoC: The Zynq XC7Z020. It features the dual-core ARM, as well as 53,200 LUT, 106,400 Flip Flops, almost 5Mb of internal block RAM (~600KByte), more than 200 DSP slices. Juicy.
It was also clear from the documentation that I’d need an SD card – my plan was to run a Petalinux distribution of considerable size, and the board lacks an eMMC, and probably won’t be feasible to place the system on the QSPI flash. Luckly I had a spare SD card around, so no problem on that side.
The programmable logic (PL) on Zynq devices can be implemented using the Xilinx Vivado suite. For this roadtest I have used Vivado v2017.3, which I had already installed previously for other projects. Note that you will have to import the board design files into Vivado prior to use any pre-built design for Arty.
For this roadtest I decided to use a freshly-developed RGB panel controller I wrote in VHDL. Although not intended for Zynq devices, the only changes required was to migrate from the Wishbone bus I use on my projects to the AXI and AXI-Lite buses required for Zynq.
Instead of starting from scratch, I have based my design on Digilent’s linux_bd design, which you can find here: https://github.com/Digilent/Arty-Z7 .
So after rewriting the bus part of the RGB controller, and adding it to the Vivado project, all I had to do was to run the connection automation and connect a few other missing wires (such as reset), as well as picking a new clock from the PS core (I need 64Mhz for the RGB clock). I also had to remove two GPIO controllers, the ones accessing the headers on the Arty board, because I will need to use those to drive the panels (through a shield board, we’ll come to it).
Here's the full design as seen in Vivado. You can see the RGB controller on the top-right of the screen.
A full view of the design:
Here's a closer view of the RGB contoller.
A view of the IO constraints for the design, where the RGB signals are mapped to FPGA pins and therefore to the shield headers.
Only the braves mess with Petalinux. Luckly enough, I had previous experience with Petalinux so only a minor amount of bravery was needed to get things working on this board.
The design was based on the Petalinux files available here: https://github.com/Digilent/Petalinux-Arty-Z7-20 .
The initial plan was to use the v2017.4-1 as tagged in that repository, but soon enough I realised it was not complete. Attempts to use any of the other tags with my installed Petalinux 2018.1 failed after me losing quite some time.
So, first thing was I had to downgrade Petalinux to an older 2017.2 version.
And it sort of worked.
I require two things for my tests and demonstration. Plan was to create a linux kernel driver for my RGB controller and expose the framebuffer as a linux “fbdev”. Second one was to install a media player suitable for playing anything on the said framebuffer. At first I tried “mplayer”, but although there are some recipes in OpenEmbedded for it, they seem not to work with Petalinux/Yocto – I actually lost quite some time with this one too.
I then decided to try “vlc”. It also did not show up in Petalinux config, but I was able to add it and since it already shipped with Petalinux it seemed to work.
Adding the kernel driver was the easiest part of this, and not hard to develop for me because I already did something similar before for ZPUino uClinux.
In order to connect the Arty to the RGB panels I decided a shield would be needed. This would ease connections since I no longer needed patch cables, and improve robustness by adding 3.3V to 5V buffers, because the panels run at 5V, and although they do work with 3.3V, the noise susceptibility is much higher.
After googling quite a bit in search for the Arty layout, or for what it’s worth, the so-called ChipKIT connector layout, and founding nothing useful (might be me…) I had to rely on some hand measurements to figure out the distance of the connectors, pitches, so on. I then moved to design the shield board and produce it, as well as ordering the components I was missing.
And I failed, hard.
When I assembled the board and went to plug it into Arty, it did not plug at all:
Here’s what happens if I place a breadboard side-by-side with J4 and J2/J3: if I align the breadboard holes with J4, the misalignment on J2/J3 is clearly visible, and equals 50mils (half regular spacing between holes).
So, this rendered the “v1” board useless. I had to order a new one, but unfortunately did not arrive in time for this roadtest (but I plan to update it once it does).
Booting the Arty with the newly-build Petalinux was quite easy, once I knew all the required details:
Booting via SD card.
Let me talk you a bit about the RGB panel. It’s a “massive” panel, built with standard HUB75 32x32 panels, on a matrix 5 by 4, totalling 160 pixels by 128 pixels. Looks not very much, but here is it, with the “v1” shield connected and Arty board side by side. Also a size comparison with Arty itself.
Unfortunately I had not the time to test this beast, but I plan to do it on the upcoming days, using jumper cables as you can see attached to the shield board. Probably I’ll have to do some fixing on the VHDL too.
The Arty-Z7 is a nice board. It includes a massive FPGA and the dual-core CPU that runs Linux natively.
The pros:
The cons:
All my design files will be available on https://github.com/alvieboy/Arty-Z7-RoadTest
Top Comments
Hi Alvaro,
Very interesting review, which I need to go through in a bit more detail, but I like the way you've jumped straight into the detailed Zynq processor and Petalinux. I'd love to see you light that…
A nice review. I can see you put some work into this. A shame that a small alignment mistake caused problems. (We all make mistakes, but why we're still burdened with that original Arduino one is a mystery…
Very nice roadtest review. I enjoyed the brief history of Field Programmable Logic Arrays. What an exciting time.
It will be interesting to see your finished project.
Good luck,
Gene