QuadSPImTb.v 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. `timescale 1ns / 1ps
  2. module QuadSPImTb ();
  3. parameter CLK_PERIOD = 8.13; // Clock period in ns
  4. //================================================================================
  5. // REG/WIRE
  6. //================================================================================
  7. reg rst;
  8. reg clk;
  9. wire [31:0] data = 32'hFAFA_0101;
  10. wire [1:0] widthSel = 2'h2;
  11. wire clockPol = 1'b0;
  12. wire clockPhase = 1'b0;
  13. wire endianSel = 1'b0;
  14. wire lag = 1'b0;
  15. wire leadx = 1'b0;
  16. wire [5:0] stopDelay = 6'h0;
  17. wire selSt = 1'b1;
  18. reg [31:0] tbCnt;
  19. wire start = (tbCnt>=100);
  20. //================================================================================
  21. // ASSIGNMENTS
  22. //================================================================================
  23. //================================================================================
  24. // CODING
  25. //================================================================================
  26. always #(CLK_PERIOD/2) clk = ~clk;
  27. initial begin
  28. clk = 0;
  29. rst = 0;
  30. #40
  31. rst = 1;
  32. #100
  33. rst = 0;
  34. end
  35. always @(posedge clk) begin
  36. if (rst) begin
  37. tbCnt <= 0;
  38. end else begin
  39. tbCnt <= tbCnt+1;
  40. end
  41. end
  42. QuadSPIm QuadSPIm
  43. (
  44. .Clk_i(clk),
  45. .Start_i(start),
  46. .Rst_i(rst),
  47. .EmptyFlag_i(1'b0),
  48. .SpiData_i(data),
  49. .Sck_o(),
  50. .Ss_o(),
  51. .Mosi0_o(),
  52. .Mosi1_o(),
  53. .Mosi2_o(),
  54. .Mosi3_o(),
  55. .WidthSel_i(widthSel),
  56. .PulsePol_i(clockPol),
  57. .ClockPhase_i(clockPhase),
  58. .EndianSel_i(endianSel),
  59. .Lag_i(lag),
  60. .Lead_i(leadx),
  61. .Stop_i(stopDelay),
  62. .SelSt_i(selSt),
  63. .Val_o()
  64. );
  65. endmodule