ClkGen.v 537 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. module ClkGen (
  2. input Clk_i,
  3. input [3:0] ClkDiv_i,
  4. input Rst_i,
  5. output Clk_o
  6. );
  7. reg [16:0] cnt;
  8. reg clk;
  9. wire clk_o;
  10. always @(posedge Clk_i) begin
  11. if (Rst_i) begin
  12. cnt <= 0;
  13. end
  14. else begin
  15. if (cnt >= ClkDiv_i-1) begin
  16. cnt <= 0;
  17. end
  18. else begin
  19. cnt <= cnt + 1;
  20. end
  21. end
  22. end
  23. assign clk_o = (cnt < ClkDiv_i/2) ? 1 : 0;
  24. BUFG BUFG_inst (
  25. .O(Clk_o), // 1-bit output: Clock output
  26. .I(clk_o) // 1-bit input: Clock input
  27. );
  28. endmodule