关于SPI协议中MCU与FPGA片间通信的理解(FPGA作为从机)

该博客详细介绍了如何在SPI协议中使用MCU与FPGA进行片间通信,FPGA作为从机。文章讲解了SPI的基本构成和工作模式,特别强调了CPOL=0,CPHA=1的配置,以及在上升沿采样的重要性。博主通过Verilog代码展示了数据同步和亚稳态避免的方法,并提供了仿真脚本和结果,验证了8'h95和8'hbe数据正确接收。
摘要由CSDN通过智能技术生成
  • Module Name : SPI_receive
  • Engineer : Bai Fengqiang
  • Target Device : EP2C8Q208C8
  • Tool versions : Quartus II 13.1
  • Create Date : 2017-7-17
  • Revision : v1.0
  • Description :

这里写图片描述
由以上时序图可知,我们采用主机模式,同时SPI作为一种外部串行传输协议,它主要由四根线控制,即SPI_CS(片选信号,有了它可以实现一个主机,多个从机的片间通信,),SPI_SCK(SPI数据串行传输时钟线),SPI_MOSI(从机输入/主机输出数据),SPI_MISO(从机输出/主机输入数据),关于传输协议一共有4种模式,由CPHA与CPOL控制,具体情况,具体分析,在此文中,我门将CPOL配置为0,CPHA配置为1,(CPOL=0,CPHA=1),即时钟上升沿采样。
由时序图可分析如:
1.SPI_CS在低电平时有效,高电平时属于无效状态。
2.SPI_MOSI在片选信号下降沿时有效,并在SPI_CLK上升沿捕获数据。
3.SPI_MISO在片选信号下降沿时有效,并在SPI_CLK上升沿捕获数据。

所以SPI_CLK的上升沿极为重要,我们可以利用脉冲边缘检测法获得,同时从MCU中送入FPGA的各种数据或者信号,属于不同时钟域的,故需要做同步,在脉冲边缘检测时,使用了两个寄存器,故在这里也使用两个,另外为了防止亚稳态的产生,我们这里采用同步释放,异步复位的处理机制。
具体代码如下:
module SPI_receiver(
clk,
rst_n,
spi_cs,
spi_data_in,
spi_clk,
reveice_data,
receiver_flag,
true_rst,
rst_n1,
rst_n2,
spi_clk1,
spi_clk2,
spi_posedge_clk,
spi_cs1,
spi_cs2,
spi_data1,
spi_data2,
spi_cs_true,
spi_true_data,s
pi_receiver_data_finish_flag,
receiver_data_cnt,
receiver_data_r
);

//global input clk and rst_n
input clk;
input rst_n;

//SPI user interface
input spi

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值