PulseGenTb.v 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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 PulseGenTb();
  22. //================================================================================
  23. // PARAMETERS
  24. parameter CmdRegWidth = 32;
  25. localparam [CmdRegWidth-25:0] ModeBurst = 8'd4;
  26. localparam [CmdRegWidth-25:0] ModeCont = 8'd5;
  27. localparam [CmdRegWidth-25:0] ModeSingle = 8'd1;
  28. localparam [CmdRegWidth-25:0] ModeDouble = 8'd2;
  29. localparam [CmdRegWidth-25:0] ModeTripple = 8'd3;
  30. localparam [CmdRegWidth-25:0] ModeDisable = 8'd0;
  31. localparam [CmdRegWidth-1:0] P1Del_i = 32'd5;
  32. localparam [CmdRegWidth-1:0] P2Del_i = 32'd6;
  33. localparam [CmdRegWidth-1:0] P3Del_i = 32'd7;
  34. localparam [CmdRegWidth-1:0] P1Width_i = 32'd1;
  35. localparam [CmdRegWidth-1:0] P2Width_i = 32'd1;
  36. localparam [CmdRegWidth-1:0] P3Width_i = 32'd1;
  37. //================================================================================
  38. // REG/WIRE
  39. reg Clk50;
  40. reg Rst;
  41. reg EnPulse;
  42. reg EnPulseR;
  43. reg OpMode;
  44. reg [CmdRegWidth-1:0] PulsePeriod;
  45. reg StartMeasEvent;
  46. reg [CmdRegWidth-25:0] Mode;
  47. //================================================================================
  48. // ASSIGNMENTS
  49. //================================================================================
  50. // CODING
  51. always #10 Clk50 = ~Clk50;
  52. initial begin
  53. Clk50 = 1'b1;
  54. Rst = 1'b1;
  55. OpMode = 1'b0;
  56. PulsePeriod = 32'd0;
  57. StartMeasEvent = 1'b0;
  58. EnPulse = 1'b0;
  59. // Mode = ModeSingle;
  60. // Mode = ModeDouble;
  61. Mode = ModeTripple;
  62. // Mode = ModeBurst;
  63. #50
  64. Rst = 1'b0;
  65. PulsePeriod = 32'd20;
  66. #20
  67. EnPulse = 1'b1;
  68. #20
  69. EnPulse = 1'b0;
  70. #100
  71. StartMeasEvent = 1'b1;
  72. #5000
  73. Mode = ModeDisable;
  74. end
  75. always @(posedge Clk50) begin
  76. EnPulseR <= EnPulse;
  77. end
  78. PulseGen
  79. #(
  80. .CmdRegWidth (32),
  81. // .GenMode ("GATING")
  82. .GenMode ("MODULATOR")
  83. )
  84. PulseGenInst
  85. (
  86. .Rst_i (Rst),
  87. .Clk_i (Clk50),
  88. .EnPulse_i (EnPulseR),
  89. .PulsePol_i (1'b0),
  90. .EnEdge_i (1'b0),
  91. .Mode_i (Mode),
  92. .P1Del_i (P1Del_i),
  93. .P2Del_i (P2Del_i),
  94. .P3Del_i (P3Del_i),
  95. .P1Width_i (P1Width_i),
  96. .P2Width_i (P2Width_i),
  97. .P3Width_i (P3Width_i),
  98. .Pulse_o ()
  99. );
  100. endmodule