首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

spi总线简介及FPGA实现

spi总线简介及FPGA实现

spi(serial peripheral interface),串行外围设备接口。由一个主设备和一个或多个从设备组成。主设备启动一个与从设备的同步通讯,从而完成数据的交换。  SPI,是一种高速的、全双工、同步的通信总线。在芯片的管教上只占用四根线,节约了芯片的管教,同时为PCB的布局上节省了空间,该接口的四条线为:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线CS。
  SPI的通信原理很简单,它以主从方式工作。需要4跟线,3跟也可以(非双工),这些线也是所有基于SPI的设备共有的,他们是SDI,SDO,SCK,CS
  ①SDO-主设备数据输出,从设备数据输入
  ②SDI-主设备数据输入,从设备数据输出
  ③SCK-时钟信号,有主设备产生
  ④CS-从设备片选信号,有主设备控制
  接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。
  在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。 (I2C寻址时,先写入地址,在写入数据)
  SPI通信
  该总线通信基于主-从配置。它有以下4个信号:
  MOSI:主出/从入
  MISO:主入/从出
  SCK:串行时钟
  SS:从属选择
  芯片上“从属选择”(slave-select)的引脚数决定了可连到总线上的器件数量。
          在SPI传输中,数据是同步进行发送和接收的。数据传输的时钟基于来自主处理器的时钟脉冲,摩托罗拉没有定义任何通用SPI的时钟规范。然而,最常用的时钟设置基于时钟极性(CPOL)和时钟相位(CPHA)两个参数,CPOL定义SPI串行时钟的活动状态,而CPHA定义相对于SO-数据位的时钟相位。 CPOL和CPHA的设置决定了数据取样的时钟沿。
  数据方向和通信速度
        SPI传输串行数据时首先传输最高位。波特率可以高达5Mbps,具体速度大小取决于SPI硬件。例如,Xicor公司的SPI串行器件传输速度能达到5MHz。
  
  
  SPI总线接口及时序
  SPI是一个环形总线结构由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。
   假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送
  那么第一个上升沿来的时候数据将会是sdo=1;寄存器=0101010x。下降沿到来的时候,sdi上的电平将所存到寄存器中去,那么这时寄存器=0101010sdi,这样在8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个spi时序
verilog代码设计
  为了适应上升沿传输,下降沿捕捉,这里我们使用SPI-CK的两倍信号作为系统时钟,第一个上升沿发送,下一个上升沿捕捉,正好对应着SPI-CK的上升沿和下降沿
   
继承事业,薪火相传
返回列表