/////----------------------------------------/////
module clk_gen(
/////----------------------------------------/////
input clk,
input rst_n,
input en,
output reg clk_2,
output reg clk_4,
output reg clk_1k
);
/////----------------------------------------/////
always @(posedge clk, negedge rst_n) begin
if (rst_n == 0) begin
clk_2 <= 1'b1;
end
else begin
if (en == 1) begin
clk_2 <= ~clk_2;
end
else begin
clk_2 <= 1'b1;
end
end
end
/////----------------------------------------/////
always @(posedge clk_2, negedge rst_n) begin
if (rst_n == 0) begin
clk_4 <= 1'b1;
end
else begin
if (en == 1) begin
clk_4 <= ~clk_4;
end
else begin
clk_4 <= 1'b1;
end
end
end
///// clock gen 1kHz
reg [16:0] cnt_1k;
/////----------------------------------------/////
always @(posedge clk, negedge rst_n) begin
if (rst_n == 0) begin
cnt_1k <= 17'd0;
clk_1k <= 1'b1;
end
else begin
if (en == 1) begin
if (cnt_1k == 17'd0) begin
cnt_1k <= 17'd24999;
clk_1k <= ~clk_1k;
end
else begin
cnt_1k <= cnt_1k - 1'b1;
end
end
else begin
cnt_1k <= 17'd0;
clk_1k <= 1'b1;
end
end
end
endmodule
DE2-115 보드의 System Clock 은 50 MHz 이므로 50,000,000 / 1,000 = 50,000 (50MHz / 1kHz = 50,000) 이다. cnt_1k = 25,000 마다 clk_1k≪ ~clk_1k 반전하여 clk_1k 1kHz 를 출력한다.