2025-05-13 19:44:53 +08:00

52 lines
1.0 KiB
Verilog

/***************************************************
* Module Name : clk_generator
* Engineer : Crazy Bingo
* Target Device : EP2C8Q208C8
* Tool versions : Quartus II 9.1SP1
* Create Date : 2011-6-25
* Revision : v1.0
* Description :
**************************************************/
/*************************************************
fc = 50MHz 50*10^6
fo = fc*K/(2^32)
K = fo*(2^32)/fc
= fo*(2^32)/(50*10^6)
**************************************************/
module clk_generator
#
(
parameter FREQ_WORD = 32'd8590 //1KHz
)
(
input clk, //50MHz
input rst_n, //clock reset
output reg clk_out
);
//--------------------------------------
reg [31:0] max_value;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
max_value <= 1'b0;
else
max_value <= max_value + FREQ_WORD;
end
//--------------------------------------
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
clk_out <= 1'b0;
else
begin
if(max_value < 32'h7FFF_FFFF)
clk_out <= 1'b0;
else
clk_out <= 1'b1;
end
end
endmodule