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.

104 lines
2.1 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
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 spi2_cs_pin;
  7. reg spi2_clk_pin;
  8. reg spi2_tx_pin;
  9. wire spi2_rx_pin;
  10. wire sync_ttl_out1;
  11. wire sync_ttl_out1_state_led;
  12. wire sync_ttl_out2;
  13. wire sync_ttl_out2_state_led;
  14. wire sync_ttl_out3;
  15. wire sync_ttl_out3_state_led;
  16. wire sync_ttl_out4;
  17. wire sync_ttl_out4_state_led;
  18. initial begin
  19. spi2_cs_pin = 1;
  20. spi2_clk_pin = 1;
  21. spi2_tx_pin = 1;
  22. end
  23. task spi_write_reg;
  24. input [15:0] addr;
  25. input [31:0] data;
  26. integer i;
  27. begin
  28. addr[15] = 1;
  29. spi2_cs_pin = 0;
  30. #30; // 100ns
  31. for (i = 0; i < 48; i = i + 1) begin
  32. spi2_clk_pin = 0;
  33. if (i <= 15) spi2_tx_pin = addr[i];
  34. else spi2_tx_pin = data[i-16];
  35. #30;
  36. spi2_clk_pin = 1;
  37. #30;
  38. end
  39. spi2_clk_pin = 0;
  40. #10;
  41. spi2_clk_pin = 1;
  42. #20;
  43. spi2_cs_pin = 1;
  44. spi2_tx_pin = 1;
  45. #300;
  46. end
  47. endtask
  48. Top top_impl (
  49. .sys_clk(sys_clk),
  50. .rst_n(rst_n),
  51. .core_board_debug_led(core_board_debug_led),
  52. .spi2_cs_pin (spi2_cs_pin),
  53. .spi2_clk_pin(spi2_clk_pin),
  54. .spi2_rx_pin (spi2_tx_pin),
  55. .spi2_tx_pin (spi2_rx_pin),
  56. .sync_ttl_out1(sync_ttl_out1),
  57. .sync_ttl_out1_state_led(sync_ttl_out1_state_led),
  58. .sync_ttl_out2(sync_ttl_out2),
  59. .sync_ttl_out2_state_led(sync_ttl_out2_state_led),
  60. .sync_ttl_out3(sync_ttl_out3),
  61. .sync_ttl_out3_state_led(sync_ttl_out3_state_led),
  62. .sync_ttl_out4(sync_ttl_out4),
  63. .sync_ttl_out4_state_led(sync_ttl_out4_state_led)
  64. );
  65. initial begin
  66. sys_clk = 0;
  67. rst_n = 0;
  68. #100;
  69. rst_n = 1;
  70. #100;
  71. spi_write_reg(16'h0020, 32'h00000001);
  72. spi_write_reg(16'h0021, 32'h00000010);
  73. spi_write_reg(16'h0022, 32'h00000100);
  74. spi_write_reg(16'h0023, 32'h00001000);
  75. spi_write_reg(16'h0020, 32'h00000002);
  76. spi_write_reg(16'h0021, 32'h00000020);
  77. spi_write_reg(16'h0022, 32'h00000200);
  78. spi_write_reg(16'h0023, 32'h00002000);
  79. #100000000;
  80. $stop;
  81. end
  82. always #1 sys_clk = ~sys_clk; // 50MHZ时钟
  83. endmodule