Advertisement
Bobita

clock_divder

Nov 22nd, 2023 (edited)
759
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module clk_gen#(parameter tact=5000000)(input clk, // the 50 MHz clock input
  2.         input rst,
  3.         input en,
  4.         output clk_div); //the 5 MHZ clock output
  5.  
  6. reg [26:0] cnt_reg, cnt_nxt;
  7. reg clk_div_reg, clk_div_nxt;
  8.  
  9. always @(posedge clk or negedge rst)
  10.     if (rst == 0)
  11.     begin
  12.         cnt_reg <= 0;
  13.                 clk_div_reg <= 0;
  14.     end
  15.     else
  16.     begin
  17.         cnt_reg <= cnt_nxt;
  18.         clk_div_reg <= clk_div_nxt;
  19.     end
  20.  
  21.  
  22. always @(en, cnt_reg)
  23. begin
  24.     clk_div_nxt = clk_div_reg;
  25.     if(en == 1)
  26.     begin
  27.         if(cnt_reg == tact)
  28.         begin
  29.             cnt_nxt = 0;
  30.             clk_div_nxt = ~clk_div_reg;
  31.         end
  32.         else
  33.         cnt_nxt = cnt_reg + 1;
  34.     end
  35. end
  36.  
  37. assign clk_div = clk_div_reg;
  38.  
  39. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement