RefSequenseGen.v 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. `timescale 1ns / 1ps
  2. //////////////////////////////////////////////////////////////////////////////////
  3. // Company:
  4. // Engineer:
  5. //
  6. // Create Date: 10:02:35 04/20/2020
  7. // Design Name:
  8. // Module Name: PulseGen
  9. // Project Name:
  10. // Target Devices:
  11. // Tool versions:
  12. // Description:
  13. //
  14. // Dependencies:
  15. //
  16. // Revision:
  17. // Revision 0.01 - File Created
  18. // Additional Comments:
  19. //
  20. //////////////////////////////////////////////////////////////////////////////////
  21. module RefSequenceGen
  22. #(
  23. parameter CmdRegWidth = 32
  24. )
  25. (
  26. input Rst_i,
  27. input Clk_i,
  28. input StartMeasEvent_i,
  29. input OpMode_i,
  30. input [CmdRegWidth-1:0] PulsePeriod_i,
  31. output Pulse_o
  32. );
  33. //================================================================================
  34. // LOCALPARAM
  35. //================================================================================
  36. reg [CmdRegWidth-1:0] periodCnt;
  37. reg pulsePreset;
  38. //================================================================================
  39. // ASSIGNMENTS
  40. assign Pulse_o = pulsePreset;
  41. //================================================================================
  42. // CODING
  43. always @(*) begin
  44. if (OpMode_i) begin
  45. if (!Rst_i) begin
  46. if (StartMeasEvent_i) begin
  47. if (periodCnt == 0) begin
  48. pulsePreset = 1;
  49. end else begin
  50. pulsePreset = 0;
  51. end
  52. end else begin
  53. pulsePreset = 0;
  54. end
  55. end else begin
  56. pulsePreset = 0;
  57. end
  58. end else begin
  59. pulsePreset = 0;
  60. end
  61. end
  62. always @(posedge Clk_i) begin
  63. if (!Rst_i) begin
  64. if (OpMode_i) begin
  65. if (StartMeasEvent_i) begin
  66. if (periodCnt != PulsePeriod_i-1) begin
  67. periodCnt <= periodCnt+32'd1;
  68. end else begin
  69. periodCnt <= 32'd0;
  70. end
  71. end else begin
  72. periodCnt <= 32'd0;
  73. end
  74. end else begin
  75. periodCnt <= 32'd0;
  76. end
  77. end else begin
  78. periodCnt <= 32'd0;
  79. end
  80. end
  81. endmodule