基于FPGA的SPI通信接口设计

现场可编程门阵列(FPGA)是在PALGALCPLD等可编程器件的基础上进一步发展的产物。作为专用集成电路领域中的一种半定制电路,它不仅解决了定制电路的不足,而且客服了原有可编程器件的限门电路的不足。用硬件描述语言完成的电路设计,通过简单的综合和布局,可以快速地烧录到FPGA上进行测试,是现代IC设计验证的主流技术。这些可编辑元素可用于实现基本逻辑门或更复杂的组合函数,如解码器或数学方程。

SPI总线系统是一个同步串行外围接口,它使单片机能够以串行方式与各种外围设备通信,实现信息交换。SPI总线可以直接连接到各厂家生产的各种标准外设,包括闪存、网络控制器、LCD显示驱动程序、A/D转换器、单片机等。该接口一般采用四行:串行时钟行、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择数据线NSS

本设计开发了一款基于FPGASPI通信接口设计。该设计使用FPGA技术,以Verilog HDL作为开发语言,实现自助设计的SPI接口数据传输功能。主要特点在于信号线少,协议简单,相对数据速率高。

1章 绪  ........................................................................................ 1

1.1 课题研究背景与意义.............................................................................. 1

1.2 课题研究内容与方法.............................................................................. 2

1.3 课题研究现状......................................................................................... 2

2章 关键技术介绍........................................................................... 3

2.1 FPGA概述.............................................................................................. 3

2.2 SPI介绍................................................................................................... 3

2.2.1 SPI总线结构介绍.................................................................................................... 3

2.2.2 SPI总线协议介绍.................................................................................................... 5

2.3 Verilog HDL概述.................................................................................. 6

3章 系统分析................................................................................... 7

3.1 系统架构描述......................................................................................... 7

3.1.1 功能架构.................................................................................................................. 7

3.1.2 框架具体描述.......................................................................................................... 7

3.2 系统实现方案......................................................................................... 8

3.2.1 开发环境的使用...................................................................................................... 9

3.2.2 FPGA开发板的选用.............................................................................................. 10

3.2.3 SPI接口的设计...................................................................................................... 10

3.2.4 主设备和从设备的选用........................................................................................ 11

3.3 SPI时序分析......................................................................................... 11

3.4 确立设计方案....................................................................................... 11

3.5 系统可行性分析.................................................................................... 12

3.5.1 技术可行性............................................................................................................ 12

3.5.2 经济可行性............................................................................................................ 12

4 系统设计................................................................................... 13

4.1 系统设计指导原则................................................................................ 13

4.1.1 指导思想................................................................................................................ 13

4.1.2 软件设计原则........................................................................................................ 13

4.1.3 硬件设计原则........................................................................................................ 13

4.1.4 软硬件环境............................................................................................................ 13

4.2 设计方案概括....................................................................................... 14

4.3 SPI总线逻辑电路.................................................................................. 15

4.3.1 控制模块TLC549模块......................................................................................... 16

4.3.2 寄存器模块TLC5615模块................................................................................... 16

4.4 系统设计框架....................................................................................... 16

4.4.1 硬件功能设计........................................................................................................ 16

4.4.2 系统设计流程图.................................................................................................... 19

一般来说,我们所说的数据传送方式有串行传送和并行传送两种,并行传送因为速度快的优势霸占了数据传送这个领域太久了,大多数的集成电路、外围设备都是采用并行传送的,从CPURAM/ROM到打印机,都被并行传送牢牢的掌控着。

众所周知,串行传输的传送方式是按位传输的,就通过一条信号线来进行数据传送,比如:想传输一个字节的数据流量(8位),是从这个字节中的最高位(8位)一位一位往下传输,最后到最低位。

但是并行传送是一次性将所有一字节中的8位信号一起进行传输。所以最少也要有8根信号线来同时进行。按照每次的数据流量传送速度来看,并行传输要比串口传输速度快的多,在计算机尚不成熟的时候,因为数据流量传送速度不是很快,并行传输是非常迅速的。但并行传输也有两个很大的缺点:那就是干扰问题和同步问题。

串行传送因为在信号线上只有1位信号,不存在位同步的现象,所以传输速率也能持续上升,现在的传送速度已经达到1GB/s1000M以上了,而且现在还可以继续提高,但是并行传输在100MB/s左右的时候就没有进展了,所以可以这样说,串行传送和并行传送相比,未来将会越来越迅速。

就因为这样,串行传输已经变成现在外设接口的最优先的传输方式,在这种环境下,Motorola公司研究出了同步外设接口,即SPI总线接口,而且还在进行着不断的改进,因为SPI接口占用线的资源少,而且非常稳定,SPI总线被广泛应用于EEPROMADCFLASH和显示驱动器这样的慢速外设器件这方面的通讯,如今大量的单片机等都用SPI接口来连接外围设备,以此来使主机和外设之间的数据传输变得非常方便。

SPI是一种同步串行传送方式,是一种三线同步总线,这是一种常用的标准接口,因为它使用起来简单方便并且节省系统资源的特点,大量的芯片都开始支持该接口。当然了,串口传输还有另外的接口方式,比如UARTSPI接口和UART相比,又多了一条同步时钟线,上面UART的缺点也就是SPI接口的优点了,对通信两方的时序要求不严格的时候,不同设备之间会非常容易结合,而且通信的速度很快。经常用于产品内部元件之间的高速数据通信上面,如大容量存储器等。这就凸显SPI的好处。为此,研究SPI接口,可以更容易了解并外围器件传输过程,并对其已定义的进行改进,并使之更加可靠,功能强化。

SPI接口可以通过两种方法进行操作(硬件和软件),如果要通过软件来模拟SPI接口,这样的方法可能相对来说比较简单方便,不得不提的是速度方面有限制,在目前的数字系统中,要求高速并且越来越复杂,这样的结果很明显没有办法通过系统的要求,所以我们现在都采用硬件来模拟SPI接口。在这种环境下能模拟SPI接口的软件就变得非常简单,让CPU有大量的时间进行其他工作。

SPI接口实际上是一个标准。它没有标准的协议。制造商通常通过摩托罗拉的定义来设计SPI接口。串行接口以其传输速率高、线路连接简单等优点成为传输接口的发展趋势。已知的外围端口有USBwishboneparallel端口。基于串行传输思想的SPI接口总线已成为标准的、常用的外围设备连接方式。

根据预期对基于FPGASPI接口设计要求实现的功能,以及工业环境中的应用,我对功能框架做了以下设计

39.png

SPI总线通信系统是一个可以实现SPI主设备与从设备通信的系统,也就是利用该系统可以实现SPI主设备对SPI从设备的数据的读写。整个系统的设计框图如图

40.png

由上图可以看出,本文所涉及的SPI总线通信系统主要由三个模块组成,是两个SPI总线模块,与接口模块。其中SPI总线模块主要使用来将符合SPI总线传输协议的数据传输给SPI设备或接口模块以便于进行接下来的数据传输,SPI总线模块与SPI设备及接口模块相连,而接口模块的主要功能则是在接收来自SPI总线数据的同时将该数据转换成符合另一种通信协议的数据(我们在这里用的都是SPI总线协议),并将该数据再发送给SPI总线进而发送给SPI设备,简单来说也就是实现了两种数据格式的相互转换,但是我们在这里并没有进行数据格式的转换。

当实现SPI主设备与从设备的通信时,也就是实现SPI主设备对从设备数据的数据读写功能,此时与SPI总线模块相连的是SPI主设备,SPI总线模块的主要功能则是在主设备的控制下接收其发送来的满足SPI协议的数据并将数据传输给接口模块,在这个过程中接口模块充当的是SPI从设备的作用;接口模块在接收到由SPI总线发送来的数据后再将数据传输给另一个SPI总线,在这里接口模块充当的是另一个SPI总线的主设备;后者接收到来自接口模块的数据后将其发送给与SPI总线模块相连的SPI从设备。这样就完成了SPI总线模块的主设备对另一个SPI总线模块的从设备数据的读写功能。

如今应用设计当中,许多单片机都包含了SPI接口,可见SPI接口得到了广泛的应用。现在的单片机具有SPI接口,以及DSP等集成SPI接口,从这里可以看出大多数的芯片都是用硬件来实现的,而不是用软件。这是因为软件仿真SPI接口方法简单方便,但速度有限。

  • 微信
  • 赶快加我聊天吧
  • 开发交流群
  • 海纳百川,大家来水
  • weinxin
微义工作室

发表评论 取消回复