1 FPGA实现SPI接口--什么是SPI接口?( 四 )

<= 1'b0;//初始复位spi_start <= 1'b0; data_send <= 8'd0; spi_miso <= 1'bz; spi_end <= 1'b0; #80//80个时钟周期后sys_rst_n <= 1'b1;//拉高复位,系统进入工作状态#30//30个时钟周期后拉高SPI开始信号,开始SPI传输spi_start <= 1'b1; #20 spi_start <= 1'b0;endalways@(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)begindata_send <= 8'd0;spi_end <= 1'b0;cnt_send <= 4'd0;endelse if(send_done)begin//数据发送完成if(cnt_send == 4'd10)begincnt_send <= 4'd0; spi_end <= 1'b1;//拉高结束标志,结束SPI传输过程 data_send <= 8'd0;endelse begincnt_send <= cnt_send + 4'd1; spi_end <= 1'b0;data_send <= data_send + 4'd1;//发送数据累加 endendelse begindata_send <= data_send;spi_end <= 1'b0;//其他时候保持SPI传输(不结束) endend//------------<设置时钟>----------------------------------------------always #10 sys_clk = ~sys_clk;//系统时钟周期20nsendmodule
仿真结果如下:
可以看到,在拉高了开始传输信号后,主机一直在发送数据,MOSI上的数据分别是8‘d0~8‘d10,每次发送一个BYTE的数据后,即拉高一次 。当结束信号被拉高后,就终结了这次SPI传输 。
【1FPGA实现SPI接口--什么是SPI接口?】5、其他