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.

69 lines
1.1 KiB

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. spi1_cs_pin = 0;
  20. #10; // 100ns
  21. for ( i = 0; i <= 48; i=i+1) begin
  22. spi1_clk_pin = 0;
  23. if (i <= 15) spi1_tx_pin = addr[i];
  24. else spi1_tx_pin = data[i-16];
  25. #10;
  26. spi1_clk_pin = 1;
  27. #10;
  28. end
  29. #10
  30. spi1_cs_pin = 1;
  31. endtask
  32. Top top_impl (
  33. .sys_clk(sys_clk),
  34. .rst_n(rst_n),
  35. .core_board_debug_led(core_board_debug_led),
  36. .spi1_cs_pin (spi1_cs_pin),
  37. .spi1_clk_pin(spi1_clk_pin),
  38. .spi1_rx_pin (spi1_tx_pin),
  39. .spi1_tx_pin (spi1_rx_pin)
  40. );
  41. initial begin
  42. sys_clk = 0;
  43. rst_n = 0;
  44. #100;
  45. rst_n = 1;
  46. #100;
  47. // spi_write_reg(16'h0020, 32'h00000000);
  48. end
  49. always #1 sys_clk = ~sys_clk; // 50MHZ时钟
  50. endmodule