Gowin Vol.3 第1部第3章 リスト2

module top (
input wire clk, // 27MHzクロック入力
output wire [6:0] segment_output, // LED(A~G)への出力
output wire dot_output, // LED(DP)への出力(ここでは使用しない)
output wire [5:0] digit_output // 表示する桁の指定(ここでは使用しない)
);
localparam CLK_FREQ = 27_000_000;

assign dot_output = 1’b0;
assign digit_output = 6’b000000;

// 前章で作成したタイマ・モジュール
// 1秒に1回count_maxがHになる
wire count_max;
timer #(
.COUNT_LIMIT (CLK_FREQ)
) timer_i (
.*
);

// count_maxがHになったタイミングでdecimal_numberをインクリメントするロジック
logic [3:0] decimal_number = 4’d0;
always_ff @ (posedge clk) begin
if (count_max) begin
if (decimal_number == 4’d9) begin
decimal_number <= 4’d0;
end else begin
decimal_number <= decimal_number + 4’d1;
end
end
end

// decimal_numberの値をsegment_outputをへ変換するモジュール
segment_driver segment_driver_i (
.*
);

endmodule