
Build the block diagram by adding key IP cores: Zynq processor, processor system reset, AXI direct memory access, AXI4-Stream subset converter, XADC, AXI interconnects, AXI GPIO.
Implement two high-level gpio configuration functions for single or dual channel gpio, initialize with XGpio_Initialize() with the correct parameters, check status, run XGpio_SelfTest(), and set data direction.
Experiment with prepped color combinations to reveal vibrant, dynamic RGB LEDs while running the project, and explore your own color variations for further possibilities.
Master baremetal programming for the AMD Zynq-7000 SoC using the standalone driver set with no prior knowledge. Learn essential concepts, practical examples, and the architecture for baremetal and Linux programming.
Discover how AMD's Vivado and Vitis HLS streamline FPGA development with high-level synthesis and IP-based design, enabling timing closure, IP reuse, and block design across 7-series, Ultrascale+, and Versal devices.
Explore a layered bare-metal and Linux programming architecture for the Zynq-7000 SoC, using a portable, OS-neutral driver model across RTOS adapters, including FSBL, clocks, DDR, and secure-boot options.
Define custom delay functions and integrate xiltimer to access the global timer for precise delays, then measure and profile function times using inline assembly no-ops and PMU or AXI monitoring.
Explore high-level AXI GPIO functions to read buttons and switches on the Zynq-7000, organizing code into header, c, and main files, with initialization, data direction, and 10 ms polling.
Demonstrates a basic rgb led control function with pwm, duty cycle validation (0–50%), and 0–500 microseconds timing, mapping red, green, and blue channels to gpio bits in a vivado project.
Explore the zynq-7000 xadc peripheral, featuring 12-bit resolution at 1 msps and 2 lsb integral non-linearity, with 1 mv accuracy and 17 analog input channels, via ps and axi interconnect.
Builds a Vivado hardware platform for a Zynq-7000 with an XADC instance, selects the single-channel mode and calibration, then exports hardware to Vitis for a bare-metal XADC application.
Initialize the XADC peripheral on the AMD Zynq-7000 by generating the XSA, configuring with XAdcPs_LookupConfig and XAdcPs_CfgInitialize, running a self-test, and confirming the PS base address 0xF8007100.
Set up the workspace, hardware platform, and Vitis project; enable safe mode and continuous sequencer mode for six-channel XADC sampling, then read and convert data, and monitor LM35 temperature.
Build a Vivado hardware platform for simple temperature control by reading the on-chip temperature via XADC and driving a cooling fan through AXI GPIO on the Arty Z7 board.
Implement an on-off temperature control loop in a Vitis project, reading XADC temperatures, comparing to a user-defined limit, and driving a fan via GPIO with a timer and PWM.
Initialize the AXI DMA in Vitis by configuring the device ID, memory base, and burst size, while setting up ping-pong buffers to overlap DMA transfers with processing.
If this video clarified why I2C can be deceptively hard (especially in programmable logic) the next natural step is to strengthen your intuition of how the protocol really behaves on the wire. A Basic Guide to I2C is an excellent follow-up read. For junior engineers, it builds a clean mental model of SDA/SCL behavior, ACK/NACK phases, pull-ups, rise times, and clock stretching. For mid and senior engineers, it’s a surprisingly effective refresher: many of the “gotchas” that break real designs are explained clearly, with waveforms and electrical context that directly relate to the issues discussed in this video.
Once you’re comfortable with the concepts, there is no substitute for going to the source. The Philips I2C Bus Specification, now maintained by NXP Semiconductors, is not just a formal document: it’s institutional knowledge. This is where details like clock stretching rules, arbitration, timing constraints, and electrical limits are defined precisely. Many real-world bugs only make sense once you’ve seen how the protocol is supposed to behave according to the spec. Treat this document not as optional reading, but as a long-term reference you’ll come back to whenever an I2C bus behaves “mysteriously.”
Learn to run a minimal I2C scanner on the AMD Zynq-7000 SoC to verify wiring, pull-ups, and driver setup before working with devices like ADS1115 and MAX30102.
Compare axi iic and iicps and learn safe i2c transaction patterns, including repeated start, stop, and timeouts, plus memory address mapping and hardware-to-software handoff in vivado and vitis.
Explore configuring and using the mlx90393 magnetometer in burst mode over i2c, including repeated starts and interrupt signaling data, and interpreting 3-axis magnetic field signatures for orientation and position detection.
Practice baremetal programming for the Zynq-7000 SoC on dummy projects to master it. Dive back into videos, experiment creatively, and leverage this on-demand course to refine your skills.
Baremetal applications run without an OS, i.e. a scheduler or virtual memory, so your code’s behavior is fully determined by what you write. This makes them ideal when “missing a time deadline” is unacceptable.
Learning baremetal programming on the Zynq-7000 SoC is the foundation for deterministic, high-performance, and deeply understood AMD embedded systems that use the PS-PL platforms.
Learning to program at the standalone (baremetal) level on the PS helps you understand the PS–PL interconnect, AXI protocols, and driver design before layering on an OS.
In addition, the resulting codes between C and C++, as well as standalone and Linux builds, are similar between them.
Other reasons for taking this course:
In this course, you’ll get verified, clearly explained, and accurate code that works for this SoC.
Tired of unanswered forum questions? I’ve gathered some of the most common pitfalls and answered them here.
Every project done on this course is broken down step-by-step, guided by both the official documentation and my real-world experience.
It’s the very hands-on, practical course I wish I had seen around when I first got my Arty Z7 board.
Join me on this baremetal journey with the AMD Zynq-7000 SoC. Enroll now and build something amazing!