InternalDspTb.v 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. `timescale 1ns / 1ps
  2. module InternalDspTb;
  3. parameter AdcDataWidth = 14;
  4. parameter ChNum = 4;
  5. parameter ResultWidth = 32;
  6. parameter CmdDataRegWith = 24;
  7. reg rst;
  8. reg clk_50;
  9. reg [31:0] tb_cnt;
  10. reg StartCalcCmdReg ;
  11. wire [AdcDataWidth-1:0] adcData;
  12. wire measDataRdy;
  13. reg startMeas;
  14. reg [CmdDataRegWith-1:0] measCtrl;
  15. reg calModeEn;
  16. reg [8-1:0] ifFtw0;
  17. reg [CmdDataRegWith-1:0] ifFtw1;
  18. //==========================================================================================
  19. //clocks gen
  20. always #10 clk_50 = ~clk_50;
  21. //==========================================================================================
  22. initial begin
  23. clk_50 = 1'b1;
  24. rst = 1'b1;
  25. #10;
  26. rst = 1'b0;
  27. end
  28. always @(posedge clk_50) begin
  29. if (!rst) begin
  30. tb_cnt <= tb_cnt+1;
  31. end else begin
  32. tb_cnt <= 0;
  33. end
  34. end
  35. always @(posedge clk_50) begin
  36. if (tb_cnt == 10) begin
  37. measCtrl <= {8'h0,8'h55,8'b0};
  38. calModeEn <= 1'b0;
  39. ifFtw0 <= 8'h89;
  40. ifFtw1 <= 24'h256041;
  41. end
  42. end
  43. always @(posedge clk_50) begin
  44. if (rst) begin
  45. startMeas <= 1'b0;
  46. end else begin
  47. if (tb_cnt == 20) begin
  48. startMeas <= 1'b1;
  49. end else if (measDataRdy) begin
  50. startMeas <= 1'b0;
  51. end
  52. end
  53. end
  54. CordicNco
  55. #( .ODatWidth (14),
  56. .PhIncWidth (32),
  57. .IterNum (10),
  58. .EnSinN (0))
  59. ncoInst
  60. (
  61. .Clk_i (clk_50),
  62. .Rst_i (rst),
  63. .Val_i (1'b1),
  64. .PhaseInc_i (32'h25604189),
  65. .WindVal_i (1'b1),
  66. .WinType_i (),
  67. .Wind_o (),
  68. .Sin_o (adcData),
  69. .Cos_o (),
  70. .Val_o ()
  71. );
  72. InternalDsp
  73. #(
  74. .AdcDataWidth (AdcDataWidth),
  75. .ChNum (ChNum),
  76. .ResultWidth (ResultWidth),
  77. .CmdDataRegWith (CmdDataRegWith)
  78. )
  79. InternalDsp
  80. (
  81. .Clk_i (clk_50),
  82. .Rst_i (rst),
  83. .adc1ChAData_i (adcData), //A
  84. .adc1ChR1Data_i (adcData), //R1
  85. .adc2ChR2Data_i (adcData), //R2
  86. .adc2ChBData_i (adcData), //B
  87. .StartMeas_i (startMeas),
  88. .MeasCtrl_i (measCtrl),
  89. .CalModeEn_i (calModeEn),
  90. .IfFtw_i ({ifFtw1,ifFtw0}),
  91. .Adc1ImAData_o (),
  92. .Adc1ReAData_o (),
  93. .Adc1ImR1Data_o (),
  94. .Adc1ReR1Data_o (),
  95. .Adc2ImR2Data_o (),
  96. .Adc2ReR2Data_o (),
  97. .Adc2ImBData_o (),
  98. .Adc2ReBData_o (),
  99. .MeasDataRdy_o (measDataRdy)
  100. );
  101. endmodule