Zybo Z7-20でLチカ

執筆者:

カテゴリ:

書籍を参考に、LED点滅回路のRTLを作成します。コードはVerilogからSystemVerilogに変更しました。

module blink (
    input logic CLK,
    input logic RST,
    output logic [2:0] LED_RGB
    );
    
    logic [25:0] cnt26;
    logic ledcnten;
    logic [2:0] cnt3;

    always_ff @(posedge CLK) begin
        if (RST)
            cnt26 <= 26'h0;
        else
            cnt26 <= cnt26 + 26'h1;
    end

    assign ledcnten = (cnt26 == 26'h3ffffff);

    always_ff @(posedge CLK) begin
        if (RST)
            cnt3 <= 3'h0;
        else if (ledcnten)
            if (cnt3 == 3'd4)
                cnt3 <= 3'h0;
            else
                cnt3 <= cnt3 + 3'h1;
    end

    always_comb begin
        case (cnt3)
            3'd0:    LED_RGB = 3'b100;
            3'd1:    LED_RGB = 3'b010;
            3'd2:    LED_RGB = 3'b001;
            3'd3:    LED_RGB = 3'b111;
            default: LED_RGB = 3'b000;
        endcase
    end
endmodule

制約ファイルはほぼそのまま。

# Zybo Z7 constraints file
# chapter: 2
# project: blink

# Clock
set_property -dict {PACKAGE_PIN K17 IOSTANDARD LVCMOS33} [get_ports {CLK}]
create_clock -add -name sys_clk_pin -period 8.00 -waveform {0 4} [get_ports {CLK}]

# Reset
set_property -dict {PACKAGE_PIN Y16 IOSTANDARD LVCMOS33} [get_ports {RST}]

# LED_RGB
set_property -dict {PACKAGE_PIN V16 IOSTANDARD LVCMOS33} [get_ports {LED_RGB[2]}]
set_property -dict {PACKAGE_PIN F17 IOSTANDARD LVCMOS33} [get_ports {LED_RGB[1]}]
set_property -dict {PACKAGE_PIN M17 IOSTANDARD LVCMOS33} [get_ports {LED_RGB[0]}]

コンパイル、FPGAボードのジャンパー設定、コンフィギュレーションすると、LEDが点滅することを確認できました。

小林優『FPGAプログラミング大全 Xilinx編 第2版』、秀和システム、2021年。

小林優『続FPGAプログラミング大全』、Zenn、2025年。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA