
Explore the course framework for embedded design with Xilinx Zynq SoC and SDK, covering tool installation, hardware verification, design flow, and evolving peripherals, GPIO, timers, debugging, profiling, and memory options.
Install the tools and set up an account, choose the supported Movado version (2018.4 recommended; 2019.1 last), and prepare a third-party board, drivers, and hardware for robot detection.
Identify compatible tools and hardware for the course by confirming supported devices and selecting the recommended software versions (2018.3–2019.1), including the software development kit, to replicate concepts.
Follow the installation steps to verify Privado 2018.3 is installed, download the free Xilinx Webpack license, copy it into the tool, and confirm license installation is successful to proceed.
Explore the embedded design field with a hello world console example, then discuss the design process, project types, and constraint scenarios.
Create a project and walk through building a block design with the IP integrator, generate an HDL wrapper and bitstream, and download the hardware image to an FPGA.
Create a new application project, select the proper template, and configure the design; perform synthesis and implementation to generate the bitstream, program the FPGA, and verify via the SDK terminal.
Navigate the Flow Navigator to configure project settings, language, device, and simulation options, then choose between text-based design or IP integrator block design, and synthesize, implement, and generate a bitstream.
Learn to configure the Xilinx Zynq processing system IP using block presets, enable or disable peripherals, and adjust boot, SPL, and clock settings with debugging and cross-triggering options.
Automatically generate ports and constraints by adding IPs, connect signals, and let the tool infer clock and I/O constraints for peripherals, then synthesize and implement the bitstream.
Learn when to apply I/O constraints in Zynq designs by performing synthesis, reviewing the synthesis design view, and applying constraints only where pins are not pre-fixed, prior to bitstream generation.
Identify the directives and folders automatically added to a new project, including the source, dot sirc, and DCL block-design file, plus wrapper and invoker in the sdk.
Automate embedded system design on the Xilinx Zynq using Tcl scripts for block design, creating projects, configuring devices, and generating and validating bd with DCL.
Export hardware to the sdk and include default and custom files to initialize a zynq design, then explore the hardware specification, ip blocks, addresses, and drivers.
Set up an SDK project on the Xilinx Zynq platform, choose standalone or OS options, select a processor and C or C++, and automatically compile the source code.
Compare three reporting mechanisms—print, printer, and a third option—across constant strings, fixed-point integers, and floating-point values, analyzing memory use and executable size to choose the most efficient option.
Explore how to initialize drivers on Xilinx Zynq SoC by using the lookup config API, the instance and config structures, and the CFD initialize function.
Initialize Xilinx drivers by declaring and instantiating a configuration structure, performing a lookup, and calling cfg_initialize with the instance and config, then verify status for successful initialization.
Identify which mio pins drive the led and connect an email interface on a xilinx zynq board, using pins 7, 48-49, and 50-51, then validate the design.
Explore setting up a Zynq embedded project in Xilinx sdk, configure gpio driver, initialize gpio, set pin seven as output, and blink the led with a one-second cycle.
Configure the zynq processing system to drive gpio emio leds using gpi with emi. Create a block design, enable the emio gpi, generate constraints, and validate through synthesis.
Configure gpio emio to drive leds and buttons by mapping emio pins to switches, set constraints in the sdk, and generate the bitstream after synthesis.
Configure gpio emio for leds and button on Zynq, initialize periphery, read pins 54–57, drive 58–61 leds, and run a hello world app in sdk to verify operation.
Demonstrate how to connect a single-channel AXI GPIO IP to the processing system using smart interconnect, configuring clock, reset, and master-slave interfaces to read a switch and drive a peripheral.
Configure a multi-channel AXI GPIO IP, enable clock and reset, set a fabric clock, connect channel one to a switch, channel two to an entity, then generate.
Explore an intermediate peripheral view in embedded system design, focusing on drivers and three methods of communicating data from this system.
Explore configuring GPIO and UART/RS-232 communications on a Zynq system, including BSP input/output settings and external serial converter integration, with data verification in the processing system.
Configure MIO to enable UART0 and connect a PMOD interface to extend capabilities; use a serial converter and manage flow control with DTI and CTS.
Learn to configure EMIO connections to map the programmable logic to external hardware via UART on a Xilinx Zynq system, including IP reconfiguration, clock reset, and bitstream synthesis.
Learn how to set up and initialize axi uartlite using emio in a zynq design, create dual uart instances, and manage data transmission and reception between ip blocks.
Explore the fundamentals of timers in the Xilinx Zynq processing system, covering private timers, axi timer blocks, triple timer/counter, and system timer, with initialization and operation modes.
This lecture covers timers and counters in Zynq processing system, including 32-bit cpu timer, 64-bit global timer, 32-bit watchdog, and triple timer counters, plus enabling, modes, interrupts, and timer APIs.
learn to implement and initialize a watchdog timer on Xilinx Zynq, using drivers to restart an application when the maximum time is exceeded and to detect reset signals.
Explore how to configure and use the 32-bit private timer in the Xilinx Zynq processing system, including initialization, starting and stopping, loading delays, and switching between normal and reload modes.
Explore how a 32-bit timer uses a prescaler to divide the input clock and set the output frequency. See how configuring the prescaler and disabling auto reload affect timing.
Configure time-triggered communication in polled mode on the Zynq SoC by enabling timers, setting clock sources, selecting interface types, validating connections, and building a wrapper for design objects.
Develop and initialize a new TTC application on a Xilinx Zynq SoC, configuring GTC with lookup config, self-test, and FPGA programming, preparing for fixed-point generation.
Configure a TTC in polled mode on the Xilinx Zynq by defining a DDC setup with frequency, interval, scalar, and option, and calculate the interval from frequency.
Utilize the ttc timer and gpio mio to create a 1 hz blinking output on an oled in polled mode, configuring and initializing gpio, computing interval, and programming the fpga.
Explore using the PL timer with the AXI timer IP in a Zynq design, selecting a timer, setting its count, and enabling it via the master AXI interface.
Configure AXI timer IP in the PL, enable auto reload and down-count, initialize and program the timer, then start it and monitor expiry for a five-second interval at 100 MHz.
Use the serial window to print and observe variable values during initialization and verify a simple block design executes correctly. Use breakpoints for continuous value updates during debugging.
Learn to set, enable, and disable breakpoints by line number in embedded development, adding and removing breakpoints in a for loop to control program execution.
Learn how to use the debug perspective to set and manage breakpoints, monitor variables, view assembly, and dynamically control execution on hardware for the Xilinx Zynq SDK.
Learn how breakpoints pause program execution and how resume advances to the next breakpoint or end, with suspend, disconnect, and re-launch of a hardware debug session in Xilinx Zynq SDK.
Master debugging embedded code with breakpoint P4 by using step into, step over, and resume to trace function calls, inspect variables, and view assembly to verify program flow.
Explore debugging of local and global variables using breakpoints, watches, and stepping into functions, showing how global variables interact with local ones in a simple block design.
Analyze memory content with a memory content viewer, viewing multiple addresses in a single window for clearer debugging, then set breakpoints and switch to a single-column format.
Use the xsct console to read and write memory, set and verify bitstream generation, and debug Zynq SoC applications with target memory commands and Amedee memory read options.
Use the ILA probe P2 to debug an FPGA by exporting hardware, programming the device from the SDK with the hardware manager, and noting bitstream is optional.
Learn to use the ILA to understand the P2 communication protocol by launching a debugging session, setting trigger conditions, and analyzing validator transactions and signal data for timing insights.
Explore profiling to measure function execution times, identify CPU hotspots, and optimize applications on the Xilinx Zynq SoC and SDK using the 64-bit global timer profiling features.
Profile function execution using the AXI timer by configuring a single timer with a 50 MHz fabric clock, calculating elapsed ticks, and converting them to nanoseconds and microseconds.
Profile an application with the 64-bit global timer to achieve high-resolution timing beyond the 32-bit counter. Convert timer counts to nanoseconds and microseconds using the CPU frequency and related macros.
Explore how to use the SDK profiling feature to identify resource-hungry functions on a Zynq-based embedded system, compare hardware and software execution, and guide optimization decisions.
Explore a common interrupt driver skeleton for Zynq, covering peripheral initialization, config and instance structures, lookup config, enabling exception handlers, and wiring the interrupt handler for GPIO interrupts.
Configure two GPIO instances to detect a switch change and generate an interrupt for the Zynq processing system, enabling clock and reset and linking to the processing system for validation.
Initialize and configure two GPIO IPs in a Xilinx Zynq design, set up config and instance structures, load drivers, and verify successful GPI/GPO initialization before launching the application.
initialize and enable the GPIO interrupt for P3, register its type and handler, and implement a discrete read of the switch that displays results on an LCD.
Learn how to implement multiple interrupts from a light switch and a button by configuring the ip, enabling clocks, and wiring gpi blocks in a Zynq design.
Learn to configure and use interrupts with the Xilinx TTC timer on Zynq SoC, including initializing drivers, setting up an interrupt handler, and testing with different frequencies.
explore memory resources management in embedded design, handling small versus large memory demands, and implement reliable drivers for the processing system.
Explore how to initialize and use AXI BRAM on a Xilinx Zynq system by implementing pointer-based writes and reads, verifying data, and handling device status in an SDK workflow.
Learn bram rtl simulation by building a project and generating block memories, configuring address, clock, and enable signals to validate data flow in a Zynq design.
Explore handling ddr transactions on a Xilinx Zynq SoC, including memory initialization, writing and reading data via a library, and validating the design through practical steps.
Learn to handle ddr to bram transactions by configuring a simple interface with a single portal, enabling read and write, initializing the bram interface, and verifying data transfer.
Diagnose AP transaction error and DPI status f0000021 when programming an FPGA by selecting the correct interface (default SPI) and setting the du type word via jumper configuration.
Fix missing include path errors after modifying a Zynq design by updating VSP include paths and exporting updated hardware and bitstreams for the SDK import from Cortex-A9 workspace.
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.