
Install the development environment and tools, apply the license for target devices, and learn how to add third-party boot images when not listed in the default boot options.
Sign into a Xilinx account and download the Vitis IDE for Zynq SoC, choosing between the self-destructing web installer or offline installer for a smooth setup.
Choose installation settings by downloading and installing the embedded software development kit, sign in to Xilinx.com, select device options, and set the installation location.
Install and load your license via the license manager by copying the license file and opening it to complete the installation, then proceed with Xilinx.
Download and unzip the board package, copy all board folders into the Vivado board files directory, and update the references to access third-party boards not shown by default.
Verify tool configurations and pin setup, implement a simple example on the Zynq SoC with Vitis IDE, and explore block design, reporting mechanisms, driver initialization, and fixed- and floating-point analysis.
Navigate a three-pane design window to create a new Xilinx Zynq project, configure a block design with a processing system, and enable essential peripherals and constraints.
Validate the design to ensure all peripheral requirements are met, then generate objects through synthesis and implementation, using flow navigator steps and pin-connection checks to confirm FPGA pin alignment.
Export the hardware design as a platform after bitstream generation, then use Vitis IDE to create and build an application project and program the FPGA.
Discover project types for Xilinx Zynq SoC and Vitis IDE, including example project, important project, new planning project, food synthesis project, and ideal project, to plan embedded system designs.
Navigate the flow navigator in embedded system design, exploring project manager options, device and language settings, IP integrator block design, simulation, synthesis, and bitstream generation with Vitis IDE.
Determine when to synthesize versus proceed to implementation, and ensure all design ports are mapped to hardware with proper constraints, enabling automatic or custom interface configuration before bitstream generation.
perform synthesis, use planning and device views to identify fixed ports and apply constraints to non fixed ports. validate port connections through fixed indicators or by resynthesizing after constraint changes.
Master block automation in Xilinx Zynq projects with Tcl scripts. Learn to create a Vivado project, configure the processing system IP, and remove unnecessary resets and master interfaces.
Explore the structure of a vivado/vitis project directory, including project files, sources, simulation and synthesis/implementation folders, ip, block design wrappers, and design constraint files.
Explore three reporting mechanisms to send strings, fixed-point values, and floating-point numbers to a console, and compare memory sizes to guide initialization verification and debugging.
Demonstrate reporting mechanisms to the console in embedded design by comparing string, fixed point, and floating point outputs with format specifiers, and show build and debug steps in Vitis IDE.
Understand toolchain configuration and categorize access into simple, intermediate, and complex GPO setups, then examine fabric APIs and single versus multiple IP instances.
Learn three methods to access Zynq peripherals: direct processing-system to peripheral signals, fabric-driven processing-system to programmable-logic connections, and APIs that convert processing-system data to standard interfaces.
Explore how to access peripherals from the Zynq processing system using multiplexed io, email, and emi configurations, and extend routing with programmable logic to connect more signals.
Understand the fundamentals of xil drivers by classifying complexity from simple to complex, and organize initialization data in nested structures for gpi and gpo configurations.
Master the driver initialization workflow in Xilinx Zynq projects by using lookup config to obtain the device ID, and initialize with the CFD initialize function, handling instance and config structures.
Declare and initialize instance and config structures, look up the config, perform initialization, and verify status equals success to report device initialization as successful and enable gpio debugging.
Identify the recommended GPIO driver from the board support package, include it, declare config and instance structures, perform lookup_config, then initialize using the driver, and verify initialization status.
Learn to drive a led on a Zynq MIO pin by configuring GPIO via the PS and EMIO paths, enabling pins, wrapping the design, and generating a bitstream for validation.
Export the bitstream, program the fpga, and create a hardware platform in Vitis for the Zynq SoC, then implement a GPIO led blink on pin seven with initialization and delays.
Configure a pushbutton on the zynq processing system, map to MIO pins, disable pull-up, read button status, drive a blinking LED, and generate hardware bitstream with Vitis IDE.
Configure gpio mio led and pushbutton p2 on the zynq with vitis ide; read pushbutton on pin 51, drive led on pin 50, with a two-second delay and console output.
Configure emio pins and gpio in the Zynq processing system through the block design, assign pin numbers, extend the external interface, validate, synthesize, generate a wrapper, and produce the bitstream.
Export hardware, build a Zynq platform, and configure EMIO GPIO pins to initialize and drive outputs, enabling blinking LEDs with proper tri-state handling.
Add and configure a single channel AXI GPIO IP in a Zynq design, enabling clock and reset, setting up a master interface, and validating the connection through synthesis and bitstream.
Export a Xilinx Zynq project, build the platform and application, and initialize a single-channel AXI GPIO by configuring the channel, direction, and writing data to blink LEDs.
Learn to configure a dual channel axi gpio ip for a Zynq processing system, set up clock and interconnect, then validate and generate objects.
Configure a dual channel AXI GPIO on a Zynq platform. Read switch values every two seconds and display results on an LCD and the console during hardware debugging.
Reconfigure the Zynq ip to support dual channels, update the block design, generate a new bitstream, and refresh xparameters.h and hardware specifications accordingly.
Enable dual channel, export hardware, and update the xparameters.h by regenerating the BSP with a script, then build and verify that the parameters reflect the new configuration.
Configure a Zynq processing system in Vitis IDE to support multiple AXI GPIO IP instances, name them by function, connect ports automatically, validate design, and generate footprints for hardware mapping.
Configure and initialize multiple AXI GPIO instances on the Xilinx Zynq board with GPI drivers. Set data directions, read switch status, and drive the led and lcd with one-second delays.
Explore configuring the board and configuration model, selecting clock frequency, and managing intermediate complexity with multiple instances, modes, and verification for open hardware.
Explore three communication methods for the Zynq system, including email data transfer and UART links, and learn BSP configuration for standalone use with synthesis and auditing in the processing system.
Validate your MIO UART P1 design by inspecting system connectivity and peripheral mappings, then generate an HDL wrapper for the block design and proceed to hardware implementation.
Initialize and configure the MIO uart p2 driver, set up the device config, and dynamically change the baud rate from 115200 to 9600, validating changes with a serial terminal.
Demonstrate sending an 11-byte Hello world string over MIO UART P3 using a data buffer and a polling transmit function, and verify success via the serial terminal.
Use the polling function to start and monitor MIO UART P4 data transmission, verifying ongoing sending and completion, then build and debug the project to confirm successful data transfer.
Demonstrate receiving data over MIO UART P5 in local loopback and normal modes, storing bytes in a buffer, and validating transmission to a console via a peripheral initialization workflow.
Interface uartlite p1 with Zynq processing system by enabling the clock and mgb e0 interface, validating and synthesizing the design, connecting multiple IP instances, and generating a wrapper for implementation.
Learn to configure and use two independent UARTLITE P2 instances on a Xilinx Zynq board, initialize drivers, perform bidirectional data transfer, and verify communication with Vitis IDE.
This agenda covers timer and counter blocks in zynq projects, including private timers, an independent triple timer counter, a 64-bit fabric timer, and timer ip dwell time in normal mode.
Explore how processing system manages time with timers, including 32-bit and 64-bit timers and watchdogs, and learn to enable and use timer APIs in a Xilinx Zynq SoC with Vitis.
Explore the private watchdog timer and private CPU timer on Zynq SoC, compare full mode polling with interrupt mode, and outline exporting hardware and creating Vitis IDE platform projects.
Configure and use the private watchdog timer (WDT) on a Xilinx Zynq SoC with Vitis IDE, covering down-counter and timer modes, periodic refresh, and initialization with self-test.
Learn to configure and operate a private watchdog timer (wdt) on the Zynq platform, including setting the mode, loading a five-second delay, starting and restarting to prevent system resets.
Explore configuring a private 32-bit SCU timer on the Xilinx Zynq SoC using a HAL driver, including normal and auto-reload modes, lookup config, initialization, and self-test with the siu timer.
Configure a private 32-bit SCU timer P2 on Zynq SoC by stopping, disabling auto-reload, loading a five-second count, starting, and polling for expiration to realize a delay.
Understand auto-reload mode in the timer, implement a 100 ms interval to update and print the counter, and compare it with normal (non auto-reload) timer behavior.
Explore how auto-reload mode automatically reloads the timer counter to the user-specified value, enabling five-second delays and continuous timer operation through start, stop, and interrupt clear actions.
Restart the timer to reload its counter in auto reload mode by calling the restart timer function with an instance, observing timer values every 500 ms and five second reloads.
Apply a prescaler to the timer clock to vary its frequency and observe timer expiration, as the frequency is halved per prescaler.
Enable and configure triple timer counters in a Xilinx Zynq SoC design using Vitis IDE, customizing IP, setting clocks, and validating bitstream generation from a PCL script.
Configure and initialize the dds timer driver for zynq using vitis, compute interval and prescaler from a 1 Hz output, and start a multi-parameter timer to produce regular one-second delays.
Enable and configure the processing system to generate a blinking effect on the OLED using TTC P1. Enable GPI on pins 50 and 51 and validate the design.
Configure GPIO 7 as an output, initialize the GPIO peripheral, and toggle its value every second to create a blinking MIO LED on TTC P2 using Vitis IDE.
Configure and use the AXI timer IPs on the Zynq processing system, covering 32-bit private sleep, 32-bit timer rate, 64-bit global timer, profiling and watchdog timers, and interface setup.
Explore configuring the AXI timer in a Zynq design, cascade 32-bit timers to a 64-bit timer, initialize, set down-count mode, start, and poll for expiry.
Learn to configure the AXI timer in autoreload mode to automatically reload the count value after expiry, enabling a continuous five second interval and visible console output.
Learn how to achieve timer reload behavior with the axI timer by using the reset API to reload the counter, and compare it to the autoreload option.
Configure and use two timers in the zynq soc with vitis, enabling timer zero and timer one, loading counts, and handling start, stop, and expirations for five-second and one-second delays.
Configure the AXI timebase watchdog timer in WTT mode to produce a fixed delay from 100 MHz clock. The WTT parameter (8–13) fixes the interval at design time.
Configure and run the AXI timebase watchdog timer (WDT) using the WD db driver in a Zynq project, initialize the device, and verify expiration after a 10-second interval.
Explore hardware and software debugging techniques for embedded systems, including input/output IP, integrated logic analyzer and VIO, plus breakpoints and variable expressions to diagnose issues.
Master debugging techniques with a serial terminal to verify initialization and observe variable values, using breakpoints and simple wrappers in Zynq workflows.
Create a new project from the template and run the platform initialization. Declare and initialize variables, then print strings and floating point values during hardware debugging via a serial terminal.
Learn to set, view, and delete breakpoints using line numbers, double-clicks, and right-click options, and understand debugging a simple multiplication and addition routine.
Build your application project, add a breakpoint, and launch hardware to pause at the first line of main, then inspect variables, breakpoints, and expressions in the IDE.
Explore debugging with multiple breakpoints, using step in, step over, and step return to inspect functions, variables, and control flow, while leveraging the variable view and breakpoint expressions.
Add the ram controller to the block design and connect it to the Zynq processing system to understand memory usage, set the frequency to 50 megabytes, and generate the bitstream.
Initialize the block memory controller, read config, and use memory viewer to write 15 random samples to a base address with 4-byte offsets, demonstrating byte-oriented memory access.
Add base addresses to the memory report by clicking the plus button, then resume the application to debug and analyze memory via memory viewer at specific addresses.
Explore debug strategies from the XSCT console to read memory, starting at a specific address with an optional count, and read data from a file.
Explore memory operations in XSCT P2, including writing to and reading from specific addresses, updating values, and dumping memory to text or binary files for debugging on the Zynq platform.
Configure clock, reset, and GPI IP to use integrated logic analyzer for debugging nets. Create a single system with multiple net slots and manage data depth to optimize FPGA memory.
Explore the integrated logic analyzer to configure triggers, capture AXI transactions, and analyze awvalid, awaddr, wdata, and gpio interactions in a Zynq and Vitis IDE workflow.
Explore fundamental profiling for embedded apps on Xilinx Zynq with Vitis IDE, using 32-bit and 64-bit timers and the built-in facility to profile whole or partial applications.
Profile your design with the 64-bit global timer and AXI timer IP connected to the Zynq processing system. Enable clock reset and a 100 MHz clock for in-built profiling.
Profile an application rate with the AXI timer P2 by initializing, configuring the mode, loading the 15-second interval, and measuring elapsed clock ticks at 100 MHz.
Profile software on the Zynq processing system using the 64-bit global timer to measure execution time, convert tick counts to nanoseconds and microseconds, and compare with 32-bit timer results.
Explore profiling an entire application across four function rates with an internal profiling feature, configure a block with clocks and timers, and validate the design on hardware boards.
Enable software profiling with Vitis Profiler P2 on a Zynq SoC project by configuring BSP, timer, and compiler flags, then run profiling and review the profile viewer to optimize functions.
Outline the application development pattern for Zynq systems, covering debugging and profiling, interrupt handling, driver fundamentals, and fabric APIs for GPO, timers, exact time, exchange rate, and CPU resources.
Master the fundamentals of interrupt drivers by outlining a common skeleton for configuring and handling GPIO interrupts, including initialization, exception handlers, and enabling input and output switches.
Configure the zynq processing system to enable gpio interrupts, set a 50 mhz fabric clock, connect light switches to gpio pins, and validate the design via block design.
Add the gpio driver from the board support package with the X GPI prefix. Initialize by looking up configuration, create instance and config structures, and set direction to input.
Learn to initialize and handle gpio interrupts on Xilinx Zynq using Vitis IDE, including device lookup, config setup, enabling exception handling, and registering interrupt handlers with unique IDs.
Configure and handle GPIO interrupts by initializing the periphery, enabling and disabling interrupts, and reading switch values to display on the console.
Learn to handle multiple interrupts from two sources by configuring the Zynq processing system, enabling clocks, and wiring GPI channels for the slate IP and push button through fabric interconnect.
Initialize two independent GPIO input instances (slide switch and push-button) and configure per-channel input settings and interrupts for the Zynq SoC design.
Initialize the gas driver and config, generate a gas config, and register and enable two independent GPIO interrupts (light switch and push button), with exception handling and console output.
Configure the Zynq processing system to integrate the AXI timer IP, enabling the master p0 interface, fabric, and peer-to-peer connections, then validate and generate the bitstream.
Configure the AXI timer using Xilinx drivers, initialize it to a two-second period, enable interrupts, and handle expiry with a callback that logs to the console.
Explore configuring and using the private SCU timer interrupt on a 32-bit timer, including initialization, driver interactions, auto reload, and interrupt handling within Xilinx Zynq and Vitis.
Initialize and configure the private SCU timer to generate a one-second delay, handle interrupts, and enable the exception handler for the processing system.
Learn to initialize and configure a private watchdog timer (WDT) in timer mode, enable interrupts and auto-reload, and verify initialization with device lookup, config structures, and driver APIs.
Enable the dc block within the processing system, configure the timer and clock settings, and validate that all data connections are correctly wired to the pins before generating the design.
Configure and initialize the DDC on the Xilinx Zynq SoC, including lookup config, cfg initialize, and enabling TTC interrupts with an exception handler.
Xilinx Zynq SoC's are know to provide maximum performance per watt along with maximum reconfiguration flexibility. Zynq family features Dual-Core ARM Cortex A9 processors tightly coupled with the 7-series FPGA to enable faster communication interfaces development with ARM Design flow and hardware acceleration. Zynq devices are available in two categories viz. Zynq-7000s family FPGA for the cost-effective application such as IoT related applications while Zynq 7000 family FPGA are best for high-performance applications such as Embedded Vision etc. The Zynq 7000s comes with Single core ARM while Zynq 7000 comes with Dual-Core ARM.
This course covers fundamentals of Popular Xilinx drivers viz. UART, AXI Timers, UART16550, AXI GPIO, AXI BRAM, etc. The course also illustrates the usage of the AXI interrupt controller for handling Interrupts. Also to felicitate incorporation of Hardware accelerators with Zynq based design few examples on building Custom AXI Peripherals are also included. Software and Hardware Debugging, Profiling fundamentals are demonstrated with Zynq to felicitate performance measurement.
This course will create the foundation necessary to quickly start building applications on Zynq FPGA devices without prior experience in this domain. The entire course is a Lab-based course with a major focussed on building skills necessary to handle simple peripherals such as GPIO, Intermediate Peripherals such as UART PS, AXI BRAM, and complex Peripherals such as AXI Interrupt Controller, AXI Timers, GIC etc.