PacketAnalyzer4MosiTb.v 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. `timescale 1ns / 1ns
  2. module PacketAnalyzer4MosiTb (
  3. );
  4. //===============USER DEFINE===================
  5. localparam [3:0] CNT_LMX_DATA = 1;
  6. localparam [1:0] CNT_DDS_DATA = 1;
  7. localparam [0:0] CNT_POT_DATA = 1;
  8. localparam [0:0] CNT_DAC_DATA = 1;
  9. localparam [0:0] CNT_ATT_DATA = 1;
  10. localparam [1:0] CNT_SH_REG_DATA = 1;
  11. localparam [2:0] CNT_MAX_DATA = 3;
  12. localparam [1:0] CNT_GPIO_DATA = 1;
  13. //===============USER DEFINE_END===============
  14. localparam MODE_4MOSI = 1'b1;
  15. localparam MODE_1MOSI = 1'b0;
  16. //===============USER DEFINE===================
  17. localparam MODE_SELECT = MODE_4MOSI;
  18. //===============USER DEFINE_END===============
  19. localparam CFG_REG = {MODE_SELECT, CNT_LMX_DATA, CNT_DDS_DATA,
  20. CNT_POT_DATA, CNT_DAC_DATA, CNT_ATT_DATA,
  21. CNT_SH_REG_DATA, CNT_MAX_DATA, CNT_GPIO_DATA, 7'b0};
  22. localparam CNT_DATA_WORDS = CNT_LMX_DATA + CNT_DDS_DATA + CNT_POT_DATA
  23. + CNT_DAC_DATA + CNT_ATT_DATA + CNT_SH_REG_DATA
  24. + CNT_MAX_DATA + CNT_GPIO_DATA;
  25. reg clkMain_tb;
  26. reg rstMain_tb;
  27. reg busyMosi1_tb;
  28. reg [23:0] dataFromSpi_tb;
  29. reg valdataFromSpi_tb;
  30. always #10 clkMain_tb = ~clkMain_tb;
  31. initial begin
  32. clkMain_tb = 0;
  33. rstMain_tb = 1;
  34. busyMosi1_tb = 0;
  35. #100
  36. rstMain_tb = 0;
  37. end
  38. reg [7:0] state;
  39. reg [63:0] cnt;
  40. reg [63:0] countState;
  41. always @(posedge clkMain_tb) begin
  42. if (rstMain_tb) begin
  43. cnt <= 0;
  44. state <= 0;
  45. valdataFromSpi_tb <= 0;
  46. dataFromSpi_tb <= 0;
  47. countState <= 0;
  48. end
  49. else begin
  50. case(state)
  51. 0: begin
  52. dataFromSpi_tb <= CFG_REG;
  53. if (cnt == 6) begin
  54. cnt <= 0;
  55. valdataFromSpi_tb <= 1;
  56. state <= state + 1;
  57. end
  58. else begin
  59. cnt <= cnt + 1;
  60. state <= state;
  61. end
  62. end
  63. 1: begin
  64. valdataFromSpi_tb <= 0;
  65. if (cnt == 1) begin
  66. cnt <= 0;
  67. state <= state + 1;
  68. end
  69. else begin
  70. cnt <= cnt + 1;
  71. state <= state;
  72. end
  73. end
  74. 2: begin
  75. dataFromSpi_tb <= 24'hA; //DATA0
  76. if (cnt == 6) begin
  77. cnt <= 0;
  78. valdataFromSpi_tb <= 1;
  79. state <= state + 1;
  80. countState <= countState + 1;
  81. end
  82. else begin
  83. cnt <= cnt + 1;
  84. state <= state;
  85. end
  86. end
  87. 3: begin
  88. valdataFromSpi_tb <= 0;
  89. if (countState == CNT_DATA_WORDS) begin
  90. state <= 5;
  91. end
  92. else if (cnt == 1) begin
  93. cnt <= 0;
  94. state <= state + 1;
  95. end
  96. else begin
  97. cnt <= cnt + 1;
  98. state <= state;
  99. end
  100. end
  101. 4: begin
  102. dataFromSpi_tb <= 24'hF; //DATA1
  103. if (cnt == 6) begin
  104. cnt <= 0;
  105. valdataFromSpi_tb <= 1;
  106. state <= state + 1;
  107. countState <= countState + 1;
  108. end
  109. else begin
  110. cnt <= cnt + 1;
  111. state <= state;
  112. end
  113. end
  114. 5: begin
  115. valdataFromSpi_tb <= 0;
  116. if (countState == CNT_DATA_WORDS) begin
  117. state <= state;
  118. end
  119. else if (cnt == 1) begin
  120. cnt <= 0;
  121. state <= 2;
  122. end
  123. else begin
  124. cnt <= cnt + 1;
  125. state <= state;
  126. end
  127. end
  128. endcase
  129. end
  130. end
  131. PacketAnalyzer4Mosi DUT (
  132. .Clk_i (clkMain_tb),
  133. .Rst_i (rstMain_tb),
  134. .DataFromSpi_i (dataFromSpi_tb),
  135. .ValDataFromSpi_i (valdataFromSpi_tb),
  136. .BusyMosi1_i (busyMosi1_tb),
  137. .ValLmxDataToFifo_o (),
  138. .ValDdsDataToFifo_o (),
  139. .ValPotDataToFifo_o (),
  140. .ValDacDataToFifo_o (),
  141. .ValAttDataToFifo_o (),
  142. .ValShRegDataToFifo_o (),
  143. .ValMaxDataToFifo_o (),
  144. .ValGpioDataToFifo_o (),
  145. .Busy_o ()
  146. );
  147. endmodule