基于FPGA的SPI通信接口设计
现场可编程门阵列(FPGA)是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。作为专用集成电路领域中的一种半定制电路,它不仅解决了定制电路的不足,而且客服了原有可编程器件的限门电路的不足。用硬件描述语言完成的电路设计,通过简单的综合和布局,可以快速地烧录到FPGA上进行测试,是现代IC设计验证的主流技术。这些可编辑元素可用于实现基本逻辑门或更复杂的组合函数,如解码器或数学方程。
SPI总线系统是一个同步串行外围接口,它使单片机能够以串行方式与各种外围设备通信,实现信息交换。SPI总线可以直接连接到各厂家生产的各种标准外设,包括闪存、网络控制器、LCD显示驱动程序、A/D转换器、单片机等。该接口一般采用四行:串行时钟行、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择数据线NSS。
本设计开发了一款基于FPGA的SPI通信接口设计。该设计使用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
一般来说,我们所说的数据传送方式有串行传送和并行传送两种,并行传送因为速度快的优势霸占了数据传送这个领域太久了,大多数的集成电路、外围设备都是采用并行传送的,从CPU、RAM/ROM到打印机,都被并行传送牢牢的掌控着。
众所周知,串行传输的传送方式是按位传输的,就通过一条信号线来进行数据传送,比如:想传输一个字节的数据流量(8位),是从这个字节中的最高位(8位)一位一位往下传输,最后到最低位。
但是并行传送是一次性将所有一字节中的8位信号一起进行传输。所以最少也要有8根信号线来同时进行。按照每次的数据流量传送速度来看,并行传输要比串口传输速度快的多,在计算机尚不成熟的时候,因为数据流量传送速度不是很快,并行传输是非常迅速的。但并行传输也有两个很大的缺点:那就是干扰问题和同步问题。
串行传送因为在信号线上只有1位信号,不存在位同步的现象,所以传输速率也能持续上升,现在的传送速度已经达到1GB/s(1000M)以上了,而且现在还可以继续提高,但是并行传输在100MB/s左右的时候就没有进展了,所以可以这样说,串行传送和并行传送相比,未来将会越来越迅速。
就因为这样,串行传输已经变成现在外设接口的最优先的传输方式,在这种环境下,Motorola公司研究出了同步外设接口,即SPI总线接口,而且还在进行着不断的改进,因为SPI接口占用线的资源少,而且非常稳定,SPI总线被广泛应用于EEPROM、ADC、FLASH和显示驱动器这样的慢速外设器件这方面的通讯,如今大量的单片机等都用SPI接口来连接外围设备,以此来使主机和外设之间的数据传输变得非常方便。
SPI是一种同步串行传送方式,是一种三线同步总线,这是一种常用的标准接口,因为它使用起来简单方便并且节省系统资源的特点,大量的芯片都开始支持该接口。当然了,串口传输还有另外的接口方式,比如UART。SPI接口和UART相比,又多了一条同步时钟线,上面UART的缺点也就是SPI接口的优点了,对通信两方的时序要求不严格的时候,不同设备之间会非常容易结合,而且通信的速度很快。经常用于产品内部元件之间的高速数据通信上面,如大容量存储器等。这就凸显SPI的好处。为此,研究SPI接口,可以更容易了解并外围器件传输过程,并对其已定义的进行改进,并使之更加可靠,功能强化。
SPI接口可以通过两种方法进行操作(硬件和软件),如果要通过软件来模拟SPI接口,这样的方法可能相对来说比较简单方便,不得不提的是速度方面有限制,在目前的数字系统中,要求高速并且越来越复杂,这样的结果很明显没有办法通过系统的要求,所以我们现在都采用硬件来模拟SPI接口。在这种环境下能模拟SPI接口的软件就变得非常简单,让CPU有大量的时间进行其他工作。
SPI接口实际上是一个标准。它没有标准的协议。制造商通常通过摩托罗拉的定义来设计SPI接口。串行接口以其传输速率高、线路连接简单等优点成为传输接口的发展趋势。已知的外围端口有USB、wishbone和parallel端口。基于串行传输思想的SPI接口总线已成为标准的、常用的外围设备连接方式。
根据预期对基于FPGA的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从设备。这样就完成了SPI总线模块的主设备对另一个SPI总线模块的从设备数据的读写功能。
如今应用设计当中,许多单片机都包含了SPI接口,可见SPI接口得到了广泛的应用。现在的单片机具有SPI接口,以及DSP等集成SPI接口,从这里可以看出大多数的芯片都是用硬件来实现的,而不是用软件。这是因为软件仿真SPI接口方法简单方便,但速度有限。
- 微信
- 赶快加我聊天吧
- 开发交流群
- 海纳百川,大家来水