| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- module ClkGen (
- input Clk_i,
- input [3:0] ClkDiv_i,
- input Rst_i,
- output Clk_o
- );
- reg [16:0] cnt;
- reg clk;
- wire clk_o;
- always @(posedge Clk_i) begin
- if (Rst_i) begin
- cnt <= 0;
- end
- else begin
- if (cnt == ClkDiv_i+1) begin
- cnt <= 0;
- end
- else begin
- cnt <= cnt + 1;
- end
- end
- end
- assign clk_o = (cnt < ClkDiv_i/2+1) ? 1 : 0;
- BUFG BUFG_inst (
- .O(Clk_o), // 1-bit output: Clock output
- .I(clk_o) // 1-bit input: Clock input
- );
- endmodule
|