<= 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、其他
- Android SipDemo项目实现SIP协议
- 2 FPGA实现SPI接口--SPI接口芯片的实际使用
- 小程序php后台设置分享标题,微信小程序实现动态设置页面标题方法分享
- 算法介绍及实现——卡尔曼滤波
- 源码解析 HashMap底层实现和原理
- 7. TCP可靠传输的实现
- 基于inquirer实现一个控制台多级选择交互功能
- rust + gnome.gtk 实现的【图形用户界面】版 [npm
- 1.创建一个类实现Servlet并且重写接口的方法
- 简单的Java服务器功能——实现静态页面的访问