ClkDivider.v 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //////////////////////////////////////////////////////////////////////////////////
  2. // Company: TAIR
  3. // Engineer:
  4. //
  5. // Create Date: 10/30/2023 11:24:31 AM
  6. // Design Name:
  7. // Module Name: ClkDivider
  8. // Project Name: S5443_V3_FPGA3
  9. // Target Devices: BOARD: BY5443v3. FPGA: xc7s25csga225-2
  10. // Tool Versions:
  11. // Description: This modules is clock divider that divides clock frequency based on an input divider value.
  12. //
  13. // Dependencies:
  14. //
  15. // Revision:
  16. // Revision 1.0 - File Created
  17. // Additional Comments:
  18. //
  19. //////////////////////////////////////////////////////////////////////////////////
  20. module ClkDivider (
  21. input Clk_i,
  22. input [3:0] ClkDiv_i,
  23. input Rst_i,
  24. output Clk_o
  25. );
  26. //================================================================================
  27. // REG/WIRE
  28. //================================================================================
  29. reg [16:0] cnt;
  30. reg clk;
  31. wire clk_o;
  32. //================================================================================
  33. // ASSIGNMENTS
  34. //================================================================================
  35. assign Clk_o = (ClkDiv_i <= 1 )? Clk_i : (cnt < ClkDiv_i / 2) ? 1 : 0;
  36. //================================================================================
  37. // LOCALPARAMS
  38. //================================================================================
  39. //================================================================================
  40. // CODING
  41. //================================================================================
  42. always @(posedge Clk_i) begin
  43. if (Rst_i) begin
  44. cnt <= 0;
  45. end
  46. else begin
  47. if (cnt >= ClkDiv_i - 1) begin
  48. cnt <= 0;
  49. end
  50. else begin
  51. cnt <= cnt + 1;
  52. end
  53. end
  54. end
  55. endmodule