PYNQ Z-2 FPGA Development board overview follow-up
Here is a quick follow-up to my series of videos about PYNQ Z-2, an FPGA Development board. The main goal of this article is to provide a quick summary of the video for the people who prefer to read and also to give links to resources.
The board for this video was kindly provided by Seeed studio, check out this board and other hardware for machine learning acceleration at Seeed studio store!
Overview
FPGA stands for field programmable gate array. Field programmable here points at the fact that their internal logic configured by a customer or a designer after manufacturing. FPGAs contain an array of programmable logic blocks, a little bit of high speed memory for holding data in use, some dedicated circuits for doing math quickly, and blocks for I/O operations, among others. If you think the name FPGA is difficult, I can agree with you on this one. You could call them “generic hardware blocks that can be completely reconfigured by software”.
PYNQ Z-2 is built around Zynq Z7020 system on chip, which includes dual-core ARM Cortex-A9 processor integrated with 28nm Artix-7 based programmable logic. This combination of ARM processor and an FPGA enables quick prototyping of programmable logic designs. What it means for you is that you can use PYNQ Z-2 as a regular development board running Ubuntu image and for parts of your application that require hardware acceleration, for example machine learning or signal processing, you can access the programmable logic using its Python libraries.
There are many FPGA boards on the market, but PYNQ boards are one of the most user-friendly ones: there are a lot of examples and demos you can run from Jupyter Notebook, which is a browser-based interactive computing environment. Overall I found it is easy to get started with using programmable logic and hardware acceleration on PYNQ boards, even without prior extensive knowledge of FPGA programming.
Hardware
ZYNQ XC7Z020-1CLG400C
• 650MHz dual-core Cortex-A9 processor
• DDR3 memory controller with 8 DMA channels and
4 High Performance AXI3 Slave ports
• High-bandwidth peripheral controllers: 1G Ethernet,
USB 2.0, SDIO
• Low-bandwidth peripheral controller:
SPI, UART, CAN, I2C
• Programmable logic equivalent to Artix-7 FPGA
• 13,300 logic slices, each with four 6-input LUTs
and 8 flip-flops
• 630 KB of fast block RAM
• 4 clock management tiles, each with a phase
locked loop (PLL) and mixed-mode clock
manager (MMCM)
• 220 DSP slices
• On-chip analog-to-digital converter (XADC)
Memory
• 512MB DDR3 with 16-bit bus @ 1050Mbps
• 16MB Quad-SPI Flash with factory programmed
48-bit globally unique EUI-48/64™ compatible
identifier
• MicroSD slot
Power
• Powered from USB or 7V-15V external power source
USB and Ethernet
Audio and Video
• HDMI sink port (input)
• HDMI source port (output)
• I2S interface with 24bit DAC with 3.5mm TRRS jack
• Line-in with 3.5mm jack
Switches, Push-buttons and LEDs
• 4 push-buttons
• 2 slide switches
• 4 LEDs
• 2 RGB LEDs
Expansion Connectors
• Two standard Pmod ports
• 16 Total FPGA I/O (8 shared pins with
Raspberry Pi connector)
• Arduino Shield connector
• 24 Total FPGA I/O
• 6 Single-ended 0-3.3V Analog inputs to XADC
• Raspberry Pi connector
• 28 Total FPGA I/O (8 shared pins with Pmod
A port)
Software and demos
PYNQ-Z2 Boot Image
A selection of projects from the PYNQ community
Machine Learning on Xilinx FPGAs with FINN
In the links above you can find links to github repositories for both demos shown in the video, together with the description of two architectures for ML acceleration(Feed-forward Dataflow and Dataflow with loopback) available for PYNQ boards.