【QuartusII入門】LED点灯回路の作成3(寄り道:Verilogの解説1, LED_BLINK)

前回までに使ったVerilogの解説をしていきます。

まずはLED_BLINKから。全体はこんな感じ。

`timescale 1ns/1ps
module led_blink(
    clk         , //クロック50MHz
    reset_n     , //リセット信号(ローアクティブ)
    led           //LED
    );
    input  wire        clk     ; //クロック50MHz
    input  wire        reset_n ; //リセット信号(ローアクティブ)
    output reg  [ 7:0] led     ; //LED

    reg  [31:0] ctr; //時間計測用カウンタ

    always @(posedge clk)
    begin
        if(!reset_n)//リセットボタンが押された時
        begin
            ctr <= 32'd1; //カウンタの値を1にリセット
        end
        else if(ctr == 32'd25000) //25000回クロックをカウント(=0.5ms経過)した時
        begin
            ctr <= 32'd1;//カウンタの値を1にリセット
        end
        else  begin
            ctr <= ctr + 32'd1; //それ以外の時はカウンタを加算
        end
    end

    always @(posedge clk)
    begin
        if(!reset_n)
        begin
            led <= 8'hFF;
        end
        else if(ctr == 32'd25000) //0.5ms経った時、LEDを反転
        begin
            if(led == 8'hFF)
            begin
                led <= 8'h00;
            end
            else begin
                led <= 8'hFF;
            end
        end
    end
endmodule

“【QuartusII入門】LED点灯回路の作成3(寄り道:Verilogの解説1, LED_BLINK)” の続きを読む