一种基于FPGA的SPI拓展应用

来源 :电子产品世界 | 被引量 : 0次 | 上传用户:fgfg56
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:基于FPGA(現场可编程门阵列)的SPI(串行设备接口)总线,实现主从设备之间的状态查询及数据采集。利用FPGA高集成、高速率、高可靠性及丰富的逻辑和I/O(输入/输出)资源的特点,解决现有的单片机I/O不充裕,运行速度慢等问题。针对产品模块化、小型化的需求,采用FPGA+ARM(RISC微处理器)的嵌入式数据采集方案,搭建SPI总线实现数据传输。设计满足了数据采集实时性高,传输数据准确性、稳定性的要求,确保了系统长期可靠地运行,实现用户对整个系统状态的监控。
  关键词:FPGA;SPI
  0 引言
  SPI(Serialperipheralinterface——串行设备接口)是摩托罗拉公司推出的一种同步串行通信接口”。用于MCU和外围扩展芯片之间的串行连接,现已发展成为一种工业标准2。一路SPI数据总线只占用3或4个I/O(MasterOutputSlaveInput,MOSI;MasterInputSlaveOutput,MISO;SerialClock,SCK;ChipSelect,CS)端口,可以简化电路设计,节省端口资源,提高设计可靠性。SPI总线主要特点:全双工;可以当作主机或者从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。基于以上特点结合FPGA的特性,通过将SPI总线与FPGA相结合,可使SPI总线的应用,更加灵活多变,为解决通信技术问题提供更好的选择和可行方案。
  结合已交付的项目的经验(项目中主设备采用ARM芯片,从设备采用FPGA),探讨基于FPGA的SPI总线传输方案在实际中的应用,拓展SPI技术的应用范围,同时对设计中遇到的具体问题提出了有效的解决方案。
  1系统分析和设计
  系统的SPI总线连接如图1所示。系统中的各从设备可以按照实际需要,实时采集不同的状态数据信息,并按SPI总线通信方式上报给主设备,主设备将最终的处理结果上报PC端,从而实现对系统的实时监控。
  从设备需要采集的数据种类繁多,相对于使用单片机的单线程串行的工作方式来进行多种数据采集处理的工作方案,使用FPGA的工作方式显然是更优的选择(并行处理能力、运行速度快、管脚多、体积小,同时具有处理复杂问题的逻辑功能),从集成性、可靠性、兼容性等方面综合考虑,很明显最佳的设计方案就是从设备使用FPGA进行数据采集、处理。
  主设备主要向从设备发送查询指令,同时将采集到的数据进行有效性判断并上传电脑。相对于从设备来说,主设备处理过程比较简单,选择较灵活、功耗低的ARM嵌入式最为合适。并且ARM具有现成的SPI接口驱动供开发者使用,大大降低了开发成本。
  2系统时序
  时序是通信系统中首要考虑的因素之一,时序无误才能保证数据在传输、处理过程中的有效性,使系统保持正常的工作状态。根据时序的不同,SPI总线有4种工作模式(SPI0,SPI1,SPI2,SPI3),见图2,其中SPIO和SPI3两种工作模式使用的最广泛。通过配置系统的SPI总线的时钟极性(CPOL)和时钟相位(CPHA)可得到满足传输要求的工作模式。
  当CPOL=0,串行同步时钟的空闲状态为低电平;当CPOL=1,串行同步时钟的空闲状态为高电平。可见,CPOL对于SPI总线传输协议没有较大的影响。
  传输协议的模式选择主要通过配置时钟相位(CPHA)实现。当CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;当CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。确保SPI主、从设备之间的正常通信,就必须满足二者的时钟相位和时钟极性一致4。
  现以某项目(采用SPI0模式)为例,选择其中1路SPI总线并对其时序进行详细阐述。时序图如图3。
  片选信号cs在主设备发送数据前跳变为低电平,使被选中的从设备SPI通信端口开启;从设备完成数据发送的一段时间后,片选信号cs跳变回高电平,从设备SPI通信端口关闭。主设备发送查询/控制命令的数据帧长度为a个字节,每个字节包含8位有效数据,每位数据占用一个时钟脉冲信号;当有数据发送时,sck伴有对应的同步时钟信号,无数据发送则无时钟脉冲信号。同时,相邻字节间存在时间间隔t,在时间内sck无时钟脉冲,即同步时钟信号是一份一份的,每份包含8个时钟脉冲。
  因此,一帧完整的查询/控制指令,其数据中的每;个字节占用8个时钟信号,主设备发送一条帧长度为a字节的数据需要8Xa个时钟脉冲信号;假设从设备的缓存模块fifo和发送模块datatx完成对应的数据反馈过程所需最少时钟脉冲信号个数为8Xn。为保证系统的通信功能正常,sck传输的时钟脉冲数应不少于该SPI总线完成-次查询/控制所需时钟信号个数(8X(a+n))。3技术难点及解决方案
  3.1数据同步
  从图3的SPI时序图可看出,有数据才有时钟脉冲,总线的时钟不是连续而是一份一份的(每份为8个连续时钟信号),为了保证系统能正常通讯,必须确保数据在主、从设备中同步传输,这就增加了系统在数据传输过程中的难度。
  就从设备而言,必须满足从设备在接收/发送状态下,经过每一份时钟信号中接收/发送的都是的一个完整且有效的字节。即主设备发送数据的每个有效字节的第1位都是在第(8Xx-7)个时钟信号(x为整数,0<x<a)被从设备的接收模块采样(上升沿采样,下同),然后依次采样直至该字节的最后一位在第(8Xx)个时钟信号被采样。同时,要求主设备接收数据的每个字节的第1位都是在第(8Xy-7)个时钟信号输出(y为整数,n>y>a),,然后依次采样直至该字节的最后一位在第(8Xy)个时钟信号输出完毕,如图5所示。.
  为了实现数据同步,可以采用如下方式:   (1)从设备利用片选信号cs复位清零。通过片选信号cs的下降沿,触发从设备中的数据采集模块datarx、数据缓存模块fifo及数据发送模块datatx的计数清零,确保系统在片选有效后的第一个时钟脉冲开始计数,避免因计数错误造成数据采样失效。若采用第一个时钟脉冲进行计数清零,会使数据的采集滞后1位,以致采集到无效数据,造成通讯失效。
  (2)利用时钟信号sck计数。本文SPI总线采用SPI0工作模式,利用时钟信号sck的上升沿触发采集模块内部计数器计数,确保模块的数据采样同步,获得有效数据。
  (3)从设备中的数据发送模块datatx提前发送数据。
  假设数据发送模块datatx在数据发送过程中,某字节的第1位在第(8Xy-7)个时钟信号输出(y为整数,n>y>a,时钟信号的上升沿输出数据,下同),第八位在第(8Xy)个时钟信号输出,那么将会出现如图6所示的情况。
  由于总线采用SPI0工作模式,那么主设备将通过同步时钟信号的上升沿触发数据采集,此时采集到的数据正处于电平跳变中,以致主设备采集到不确定的无效数据。
  结合图6可以发现,datatx模块通过提前发送数据,能有效的解决该问题,数据传输示意图如下。
  当datatx模块在发送某个字节时,利用上一字节的最后一个时钟脉冲(第(8Xy-8)个时钟脉冲)的下降沿触发该字节第1位的发送,第(8Xy-7)个时钟脉冲的下降沿触发该字节第2位的发送,直至该字节第8位在第(8Xy-1)個时钟脉冲的下降沿发送完毕。使用这种方法,主设备在每个sck时钟信号的上升沿都能同步采集到正确的数据,确保总线通信正常。
  3.2多个从设备并联的问题
  笔者在调试过程中,系统连接板上只接入1台主设备和1台从设备,系统能正常运行。但在接入多个从设备后(从设备的接口类型-致),会出现一个或者几个从设备工作失效。具体表现为从设备没有任何信息反馈,且故障无规律可循:
  a)与从设备插入插槽的位置没有特定规律。例如,有A、B两台从设备,连接板有5个插槽(编号1-5)。A插入1,B插入2,此时B失效。将B依次换至剩余插槽,可能会出现B失效、A失效,甚至两者失效的情况。然而,在A、B都能正常运行的情况下,互调A、B位置,也可能出现上述三种失效现象。或者将从设备B换成完全相同的从设备C,这种新的组合相较于之前A+B的组合,在接入方式完全相同的情况下又可能产生不同的结果。
  b)与从设备的插入数量没有特定规律。连接板上从设备数量的增加或者减少,对整个系统的好坏并没有特定方向的影响。加上插槽位置对系统工作的影响也很复杂。
  为了解决这个问题,笔者做过如下依次尝试,但情况并没有发生好转,从设备依旧没有任何信号输出:
  a)将待机状态的从设备输出置高阻;
  b)I/O设置上下拉电阻;
  最终笔者通过对设备内部的信号输入至信号处理部份采用SIGNALTAP进行实时分析、观察,发现数据处理模块fifo在固定位置丢失一个同步时钟脉冲(fifo的所有触发只与同步时钟sck有关)。经过分析,决定在fifo中加入异步时钟参与触发和计数,故障现象没有再次发生,多个从设备并联的问题得到了有效解决。
  4结论
  利用ARM+FPGA模式搭建了SPI总线,使SPI接口技术的使用更加灵活多变,丰富了系统的I/O数量,增强了系统的数据处理能力,拓展了SPI技术的应用范围,实现了系统数据的长期可靠传输,为后端用户的决策提供了稳定可靠的理论依据。
  参考文献
  [1]ilinxLimited.CoolRunner-lISerialPeripheralInterfaceMaster.2002
  [2]蔡向东。单片机软件模拟SPI接口的解决方案[J].信息技术,2006(6):18-20
  [3]李大江,崔建明。一种基于FPGA的可配置SPI+Master接口设计实现[J].电子技术应用,2010(10):60-62
  [4]张经爱,许凯华,刘玉华。基于MSP430的模拟SPI串口通信的实现[J].计算机工程与设计,2008,29(5):1169-1171
其他文献
本文针对危险化学品突发事故及其特点进行综合性论述,并对近年来发生的各种化学污染物突发事故进行调查,对危险化学品的环境安全性管理方法与措施进行了讨论。
6月17日,国家食品药品监督管理局庆祝建党90周年暨“两优一先”表彰大会在北京隆重举行。来自国家局直属机关的29个基层党组织、1000多名党员干部和职工以及100多名离退休干部
【正】古代印度有个关于人和猴子的故事。一个人抓了只猴子,关在屋子里,想看看聪明的猴子首先会干什么。他在门边留了个洞,出来溜达了一会儿,然后再回去。结果,当他从门缝里
近日,三菱化学公司表示已研发出首个新型生物基聚碳酸酯二醇(一种高效能的多元醇),并计划开始在全球市场的开发和销售。据三菱方面透露,采用其独家制造工艺生产的这种新型产品,
近日,湖南省湘西州永顺县食品药品监督管理局开展了学校食堂食用油安全飞行检查。共督查学校食堂15个,托幼机构23家,检查食用油品种7个54批次,下架停用索票索证不规范食用油4桶,合
文章从"豆腐渣"工程的具体事例出发,引发人们对建筑工程质量的深思,进一步分析了造成建筑质量问题的几个具体原因,并提出相应的解决方案.
环境保护部发布公函,同意以中国科学院高能物理研究所为依托单位,与环境保护对外合作中心、中国环境科学研究院、沈阳环境科学研究院、上海万强科技开发有限公司、贵州银星集团
带下病是妇科常见病,从脾辨证论治,取得较好的疗效。
5月7日.在第二届农药行业经济运行分析会暨农药行业排行榜发布会上,新安集团蝉联全国农药销售百强企业榜首。这是自中国农药工业协会2011年首次发布排行榜以来,新安集团第四次获
介绍了一款UHF波段脉冲功率放大器的设计方法,重点介绍了该功放的主要技术指标、组成框图、分配合成电路设计及控制检测保护电路的设计。使用ADS软件对两路功率合成分配器以