Charles Clarkeworai aiIdris Somoye
Published

Custom LED Blink IP on AUP-ZU3 Zynq UltraScale+

Designed a Verilog LED IP, integrated it on AUP-ZU3 with PS clocking, handled constraints, and validated on hardware.

BeginnerWork in progress10 hours61
Custom LED Blink IP on AUP-ZU3 Zynq UltraScale+

Things used in this project

Hardware components

AMD AUP-ZU3
×1

Software apps and online services

VS Code
Microsoft VS Code
Verilog
Vivado Design Suite
AMD Vivado Design Suite
Vitis Unified Software Platform
AMD Vitis Unified Software Platform

Story

Read more

Schematics

block diagram and design

Code

led_design_wrapper.v

Verilog
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 04/19/2026 10:37:44 AM
// Design Name: Charles Clarke
// Module Name: led_blink101
// Project Name: led_blink101
// Target Devices: ZU3 AUP
// Tool Versions: 
// Description: Simple LED blink module for IP creation
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// Blinks an LED using the input clock
//
//////////////////////////////////////////////////////////////////////////////////

module led_blink101 #
(
    parameter integer CLK_FREQ_HZ = 100_000_000, // 100 MHz input clock
    parameter integer BLINK_HZ    = 1            // 1 Hz LED blink
)
(
    input  wire clk,
    input  wire rst,
    output reg  led
);

    localparam integer COUNT_MAX = CLK_FREQ_HZ / (2 * BLINK_HZ);

    reg [31:0] counter;

    always @(posedge clk) begin
        if (rst) begin
            counter <= 32'd0;
            led     <= 1'b0;
        end
        else begin
            if (counter == COUNT_MAX - 1) begin
                counter <= 32'd0;
                led     <= ~led;
            end
            else begin
                counter <= counter + 1'b1;
            end
        end
    end

endmodule

led_design_wrapper.v

Verilog
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 04/19/2026 10:37:44 AM
// Design Name: Charles Clarke
// Module Name: led_blink101
// Project Name: led_blink101
// Target Devices: ZU3 AUP
// Tool Versions: 
// Description: Simple LED blink module for IP creation
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// Blinks an LED using the input clock
//
//////////////////////////////////////////////////////////////////////////////////

module led_blink101 #
(
    parameter integer CLK_FREQ_HZ = 100_000_000, // 100 MHz input clock
    parameter integer BLINK_HZ    = 1            // 1 Hz LED blink
)
(
    input  wire clk,
    input  wire rst,
    output reg  led
);

    localparam integer COUNT_MAX = CLK_FREQ_HZ / (2 * BLINK_HZ);

    reg [31:0] counter;

    always @(posedge clk) begin
        if (rst) begin
            counter <= 32'd0;
            led     <= 1'b0;
        end
        else begin
            if (counter == COUNT_MAX - 1) begin
                counter <= 32'd0;
                led     <= ~led;
            end
            else begin
                counter <= counter + 1'b1;
            end
        end
    end

endmodule

Constraints_File

Tcl
pin Assignment to the AUP board
## led_blink101.xdc
## External output port from your block design wrapper: led_0
## Map it to AUP-ZU3 white user LED 0

set_property PACKAGE_PIN AF5 [get_ports led_0]
set_property IOSTANDARD LVCMOS12 [get_ports led_0]

Credits

Charles Clarke
1 project • 0 followers
Hardware Engineer specializing in embedded systems, FPGA design, circuit development, and low-level IoT integration.
worai ai
1 project • 1 follower
Idris Somoye
1 project • 1 follower

Comments