You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

47 lines
1.2 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. module zutils_edge_detecter (
  2. input clk, //clock input
  3. input rst_n, //asynchronous reset input, low active
  4. input wire in_signal,
  5. output in_signal_last,
  6. output in_signal_rising_edge,
  7. output in_signal_falling_edge,
  8. output in_signal_edge
  9. );
  10. reg in_signal_last = 0;
  11. reg in_signal_rising_edge = 0;
  12. reg in_signal_falling_edge = 0;
  13. reg in_signal_edge = 0;
  14. always @(posedge clk or negedge rst_n) begin
  15. if (!rst_n) begin
  16. in_signal_last <= 0;
  17. end else begin
  18. in_signal_last <= in_signal;
  19. end
  20. end
  21. always @(posedge clk or negedge rst_n) begin
  22. if (!rst_n) begin
  23. in_signal_rising_edge <= 0;
  24. in_signal_falling_edge <= 0;
  25. in_signal_edge <= 0;
  26. end else begin
  27. if (in_signal_last == 0 && in_signal == 1) begin
  28. in_signal_rising_edge <= 1;
  29. in_signal_falling_edge <= 0;
  30. in_signal_edge <= 1;
  31. end else if (in_signal_last == 1 && in_signal == 0) begin
  32. in_signal_rising_edge <= 0;
  33. in_signal_falling_edge <= 1;
  34. in_signal_edge <= 1;
  35. end else begin
  36. in_signal_rising_edge <= 0;
  37. in_signal_falling_edge <= 0;
  38. in_signal_edge <= 0;
  39. end
  40. end
  41. end
  42. endmodule