You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
1.5 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. `timescale 10ns / 10ns
  2. module test_top;
  3. reg sys_clk;
  4. reg rst_n;
  5. wire core_board_debug_led;
  6. reg spi1_cs_pin;
  7. reg spi1_clk_pin;
  8. reg spi1_tx_pin;
  9. wire spi1_rx_pin;
  10. initial begin
  11. spi1_cs_pin = 1;
  12. spi1_clk_pin = 1;
  13. spi1_tx_pin = 1;
  14. end
  15. task spi_write_reg;
  16. input [15:0] addr;
  17. input [31:0] data;
  18. integer i;
  19. begin
  20. addr[15] = 1;
  21. spi1_cs_pin = 0;
  22. #30; // 100ns
  23. for (i = 0; i < 48; i = i + 1) begin
  24. spi1_clk_pin = 0;
  25. if (i <= 15) spi1_tx_pin = addr[i];
  26. else spi1_tx_pin = data[i-16];
  27. #30;
  28. spi1_clk_pin = 1;
  29. #30;
  30. end
  31. spi1_clk_pin = 0;
  32. #10;
  33. spi1_clk_pin = 1;
  34. #20;
  35. spi1_cs_pin = 1;
  36. spi1_tx_pin = 1;
  37. #300;
  38. end
  39. endtask
  40. Top top_impl (
  41. .sys_clk(sys_clk),
  42. .rst_n(rst_n),
  43. .core_board_debug_led(core_board_debug_led),
  44. .spi1_cs_pin (spi1_cs_pin),
  45. .spi1_clk_pin(spi1_clk_pin),
  46. .spi1_rx_pin (spi1_tx_pin),
  47. .spi1_tx_pin (spi1_rx_pin)
  48. );
  49. initial begin
  50. sys_clk = 0;
  51. rst_n = 0;
  52. #100;
  53. rst_n = 1;
  54. #100;
  55. spi_write_reg(16'h0020, 32'h00000001);
  56. spi_write_reg(16'h0021, 32'h00000010);
  57. spi_write_reg(16'h0022, 32'h00000100);
  58. spi_write_reg(16'h0023, 32'h00001000);
  59. spi_write_reg(16'h0020, 32'h00000002);
  60. spi_write_reg(16'h0021, 32'h00000020);
  61. spi_write_reg(16'h0022, 32'h00000200);
  62. spi_write_reg(16'h0023, 32'h00002000);
  63. end
  64. always #1 sys_clk = ~sys_clk; // 50MHZ时钟
  65. endmodule