Understanding the ZYBO Architecture

Before we start building Linux systems and FPGA designs, it's worth spending a few minutes understanding what is actually on the ZYBO board.

The ZYBO is built around a Xilinx Zynq-7000 device. What makes the Zynq family interesting is that it combines two very different technologies into a single chip:

  • A dual-core ARM processor system

  • An FPGA fabric

Think of it as a Linux computer and an FPGA living inside the same package.

The Processing System (PS)

The Processing System, usually abbreviated PS, contains the ARM processors and the hardware needed to run an operating system.

Some of the major components include:

  • Dual-core ARM Cortex-A9 processors

  • DDR memory controller

  • Ethernet controller

  • USB controller

  • SD card interface

  • UART interfaces

  • Timers and interrupt controllers

When we boot PetaLinux, the operating system runs entirely on the ARM processors inside the PS.

You can think of the PS as a small embedded computer. It can run C programs, Python scripts, network services, web servers, and everything else you would normally expect from a Linux system.

For many projects, the PS alone is enough.

The Programmable Logic (PL)

The Programmable Logic, usually abbreviated PL, is the FPGA portion of the device.

This is where we create custom hardware using VHDL or Verilog.

Examples include:

  • Signal generators

  • Digital filters

  • High-speed data acquisition systems

  • PWM generators

  • Communication interfaces

  • Custom peripherals

Unlike software running on a CPU, hardware in the PL operates in parallel. Multiple blocks can execute simultaneously on every clock cycle.

This makes the FPGA extremely powerful for tasks that require deterministic timing or high-speed data processing.

Why Put Both Together?......

Traditionally, an embedded system might require:

  • A microprocessor running software

  • An FPGA for custom hardware

This allows the ARM processors and FPGA fabric to work together very closely.

For example:

  • Linux can configure FPGA registers.

  • FPGA hardware can generate interrupts to Linux.

  • Linux applications can send data to FPGA hardware.

  • FPGA hardware can accelerate computationally intensive tasks.

This combination is one of the main reasons the Zynq family is so popular in embedded systems.

How the PS and PL Communicate

The PS and PL are connected internally through high-speed AXI buses.

AXI (Advanced eXtensible Interface) is simply a standardized communication protocol used throughout Xilinx designs.

When we create custom hardware in Vivado, we often expose configuration registers through an AXI interface.

Linux can then access those registers just like memory locations.

For example:

  • Linux writes a frequency value to a register.

  • The FPGA signal generator receives the value.

  • The FPGA begins generating the requested waveform.

From the software perspective, controlling FPGA hardware can be as simple as writing to memory.

The Development Workflow

When working with a ZYBO project, the tools generally have the following responsibilities:

Vivado

Vivado is used to design the hardware system.

Examples:

  • Configure the Zynq Processing System

  • Add FPGA peripherals

  • Connect AXI interfaces

  • Generate the FPGA bitstream

PetaLinux

PetaLinux takes the hardware definition produced by Vivado and creates a bootable Linux system.

Examples:

  • Linux kernel

  • Device tree

  • Root filesystem

  • Boot images

Vitis

Vitis is used to develop software that runs on the ARM processors.

Examples:

  • Bare-metal applications

  • Linux applications

  • Driver development

What We Will Build

Throughout this tutorial series, we will use Linux running on the ARM processors to control custom hardware implemented in the FPGA fabric.

The ARM processors will provide the flexibility of a full operating system, while the FPGA will provide custom hardware acceleration and deterministic timing.

Understanding this PS/PL relationship is the key concept behind every Zynq project. Once it clicks, the rest of the development flow becomes much easier to understand.