timer_wb.v 840 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * timer_wb.v
  3. *
  4. * vim: ts=4 sw=4
  5. *
  6. * Copyright (C) 2025 Krzysztof Skrzynecki, Jakub Duchniewicz <j.duchniewicz@gmail.com>
  7. * SPDX-License-Identifier: TODO:
  8. */
  9. `default_nettype none
  10. module timer_wb #(
  11. parameter DW = 32 // Data width for the Wishbone interface (32 bits)
  12. )(
  13. input wire clk,
  14. input wire rst,
  15. // Wishbone Interface
  16. output reg [DW-1:0] wb_rdata,
  17. input wire wb_cyc,
  18. output reg wb_ack
  19. );
  20. reg[31:0] cnt;
  21. always @(posedge clk or posedge rst) begin
  22. if (rst)
  23. cnt <= 32'h0;
  24. else
  25. cnt <= cnt + 32'h1;
  26. end
  27. // Wishbone read logic
  28. always @(posedge clk) begin
  29. if (wb_cyc) begin
  30. wb_ack <= wb_cyc & ~wb_ack;
  31. end
  32. end
  33. assign wb_rdata = cnt;
  34. endmodule