`timescale 10ns / 10ns module test_top; reg sys_clk; reg rst_n; wire core_board_debug_led; reg spi1_cs_pin; reg spi1_clk_pin; reg spi1_tx_pin; wire spi1_rx_pin; initial begin spi1_cs_pin = 1; spi1_clk_pin = 1; spi1_tx_pin = 1; end task spi_write_reg; input [15:0] addr; input [31:0] data; integer i; begin addr[15] = 1; spi1_cs_pin = 0; #30; // 100ns for (i = 0; i < 48; i = i + 1) begin spi1_clk_pin = 0; if (i <= 15) spi1_tx_pin = addr[i]; else spi1_tx_pin = data[i-16]; #30; spi1_clk_pin = 1; #30; end spi1_clk_pin = 0; #10; spi1_clk_pin = 1; #20; spi1_cs_pin = 1; spi1_tx_pin = 1; #300; end endtask Top top_impl ( .sys_clk(sys_clk), .rst_n(rst_n), .core_board_debug_led(core_board_debug_led), .spi1_cs_pin (spi1_cs_pin), .spi1_clk_pin(spi1_clk_pin), .spi1_rx_pin (spi1_tx_pin), .spi1_tx_pin (spi1_rx_pin) ); initial begin sys_clk = 0; rst_n = 0; #100; rst_n = 1; #100; spi_write_reg(16'h0020, 32'h00000001); spi_write_reg(16'h0021, 32'h00000010); spi_write_reg(16'h0022, 32'h00000100); spi_write_reg(16'h0023, 32'h00001000); spi_write_reg(16'h0020, 32'h00000002); spi_write_reg(16'h0021, 32'h00000020); spi_write_reg(16'h0022, 32'h00000200); spi_write_reg(16'h0023, 32'h00002000); end always #1 sys_clk = ~sys_clk; // 50MHZ时钟 endmodule