SPI总线接口的FPGA设计与实现
第25卷第2期2004年6月
军 事 通 信 技 术
JournalofMilitaryCommunicationsTechnology
Vol.25No.2 Jun.2004
SPI总线接口的FPGA设计与实现
杨承富1,徐志军2
(1.解放军理工大学通信工程学院研究生2队,江苏南京210007;
2.解放军理工大学通信工程学院电子信息工程系)
Ξ
摘 要:文中介绍了采用Alterea公司FLEX10K型的FPGA器件实现串行外设接口(SPI)的原理与过程,
给出了逻辑框图以及部分Verilog代码。用此种方法实现的接口与专用接口芯片相比,具有使用灵活,系统配置方便的优点。
关键词:串行外设接口;现场可编程门阵列;Verilog硬件描述语言中图分类号:TP336文献标识码:A文章编号:003221289(2004)0220072205
DesignandImplementSPIBusInterfacewithFPGA
YANGCheng2fu,XUZhi2jun
1
2
(1.PostgraduateTeam2ICE,PLAUN2.DepartmentofEelctronicInformICE,)
Abstract:wimpentingaSPIinterfacewithFPGAare
introduced,andsomeVerilogcodearepresented.Thechipimplementedinthiswayhasmoreagilityandismoreconvenienttoconfigurethanothers.
Keywords:SPIinterface;FPGA;VerilogHDL
串行外设接口SPI(SerialPeripheralInterface)是Motorola公司推出的一种同步串行接口。Motorola公
司生产的绝大多数单片机都配有SPI硬件接口,如68系列单片机。但也有许多单片机没有SPI接口,在需要应用SPI进行通信的场合,就需要对其进行SPI接口扩展。SPI接口的扩展有硬件和软件两种方法,软件模拟SPI接口方法虽然简单方便,但是速度受到限制,若用来进行通信,则速度不会很高。因此我们可以用FPGA来实现SPI接口,FPGA的速度很高,可以实现高速串行通信。根据SPI总线的电气特性,我们采用易ALTERA公司的FLEX10K系列FPGA器件设计并实现了SPI总线的通信接口,该总线接口具有高速、调试、配置灵活等等优点,大大地减少了系统的开发周期。
1 SPI简介
三线通信的系统。它允许处理器与各种外围设备SPI接口是工业标准的同步串行接口,是一种全双工、
以串行方式(8位数据同时、同步地被发送和接收)进行通信。在SPI接口中,数据的传输需要1个时钟信号和两条数据线。
从机输入线(MOSI),主机输入 从机输出线SPI总线由四根线组成:串行时钟线(SCK),主机输出
(MISO),还有一根是从机选择线(SS),它们在与总线相连的各个设备之间传送信息。
Ξ收稿日期:2003206205;修回日期:2003206220
作者简介:杨承富(1980-),男,硕士生.
SPI总线中所有的数据传输由串行时钟SCK
来进行同步,每个时钟脉冲传送1比特数据。SCK由主机产生,是从机的一个输入。时钟的相位(CPHA)与极性(CPOL)可以用来控制数据的传输。CPOL=“0”表示SCK的静止状态为低电平,则表示SCK静止状态为高电平。时钟CPOL=“1”
相位(CPHA)可以用来选择两种不同的数据传输模式。如果CPHA=“0”,数据在信号SS声明后的第一个SCK边沿有效;而当CPHA=“1”时,数据在信号SS声明后的第二个SCK边沿才有效。因此,主机与从机中SPI设备的时钟相位和极性必须要一致才能进行通信。图1和图2分别为不同相位与极性的时钟控制下的数据传输模式。
SPI可工作在主模式或从模式下。在主模
式,每一位数据的发送 接收需要1次时钟作
图2 CPHA=1时的传输模式
用;而在从模式下,每一位数据都是在接收到时钟信号之后才发送 接收。一个典型的SPI系统包括1个主M和1,如图3所示。单片机通过SPI,就可以与系统中的从机进行通信,,。但同一时间,图1 CPHA=0时的传输模式
2 SPI总线接口模块设计
我们最终设计的目标是用硬件描述语言建立一个SPI总线接口模块,也就是建立一个可以复用的IP核,并用FPGA来实现。并且可以将设计好的模块保存,应用于其它需要此模块的系统中,减少大型设计的工作量。2.1 SPI接口模块的建立
我们设计的最终目标就是生成如图4所示的一个模块。各管脚的定义为:clk为外部时钟信号,一般由单片机来提供;rst为复位信号,当其处于有效时,系统恢复起始状态;datai与datao分别为SPI接口的输入输出并行数据线,用来和单片机交换数据;addr为输入地址线,单片机用来对内部寄存器进行读写编址;rd和we分别为单片机读写信号输
图3 典型SPI系统组成
入管脚;scki为从模式下的串行时钟输入,scko为主模式下的时钟输出;mosi和
从机输出主机接收的串行数据线;当该模块作miso分别为主机输出从机接收、
为从机时,ss是别的主机的选择信号;sso(7∶0)是其作为主机时从机选择信号输出,可以与8个从机相连。2.2 SPI接口电路结构的设计
按照设计目标,根据需要实现的功能,我们将SPI接口划分成几个模块,这些模块独自完成一定的任务,结合起来实现通信接口功能。划分模块以后,可以
图4 SPI接口模块封装外观图
更方便地用硬件描述语言对其进行描述。
如图5所示,我们将要设计的SPI接口电路分成两个主要功能块——微处理器接口部分、SPI总线接口部分。因为SPI有主从两种工作模式,我们设计的目的就是使一块FPGA芯片能够实现主从模式SPI接口电路的全部功能。图2中,单片机接口部分电路在主模式与从模式下大致差不多,而SPI总线接口部分却有很大的不同。主模式下,串行时钟产生控制模块对外部时钟进行分频得到串行通信时钟——SCK,因此它就相当于一个分频器。而在从模式下,SCK由外部输入,该模块就不起作用,完全可以省略。主要组成部分的功能阐述如下:
8比特读缓冲器与移位寄存器——SPI的核心单元。其中发送端是单缓冲,而接收是双缓冲。实际上就是新发送的数据直到前一个数据发送结束才能写进移存器;接收到的数据是被送到一个并行的
读数据缓冲器中以使得移存器能够自由的接收第
图5 SPI接口结构图二个串行数据,只要第一个数据在第二个数据准备
发送前被读出缓冲器,就不会产生数据的溢出。
控制寄存器——随时可以被单片机读写,置。可以控制传输模式(主或是从),控制I状态寄存器—当相应的事件方式时,这些标志自动设置,清除则由软件来完成从选择寄存器—。当SPI主机传送开始时,SSCR寄存器的内容自动赋给管脚SSO(7)2SSO(0)。
SCK产生控制模块——主模式下产生串行时钟SCK,软件利用控制寄存器(SPCR)里面的两个比特可以选择四种串行时钟极性与相位的组合。时钟的极性由CPOL控制比特确定,选择高电平有效或是低电平有效对传送模式没多大影响。时钟相位控制比特(CPHA)选择两种基本传输模式中的一种。从模式下只用来接收主机产生的SCK,用来控制数据的传输。
从操作模式并对传输进行控制。SPI控制器决定传输速度和模式(相位和极SPI控制器——决定主
性),还负责产生中断需求与检测错误。
3 SPI的Verilog描述
它允许设计者用它来进行各种级别的VerilogHDL是硬件描述语言的一种,用于数字电子系统的设计。
逻辑设计,可以用它来进行数字逻辑系统的仿真验证、时序分析、逻辑综合。它是目前应用最广泛的一种硬件
描述语言。在这里,我们主要用它对设计目标进行RTL(寄存器传输)级的描述,编写出可综合的Verilog模块。
3.1 SPI接口电路的Verilog实现
在这里,我们采用的是自顶向下(TOP2DOWN)的设计方法,从系统级开始,把系统划分为几个基本的单元,依据需要还可以将这几个基本单元再进行细划分。本设计的系统划分如图6所示。
- 基于PLC控制的航空电镀生产线自动输送
- 中考预测课内外文言文对比阅读2
- 2018-2023年中国商业智能(BI)产业市场
- 中国金融体制改革研究2011new
- 外窗淋水试验方案
- 精益生产(Lean Production)
- 学校安全事故处置和信息报送制度
- Chapter 5 Human Resources Management
- 【小学数学】人教版小学六年级上册数学
- 初中数学解题方法与技巧
- 山东省创伤中心建设与管理指导原则(试
- 函数与数列的极限的强化练习题答案
- 10分钟淋巴按摩消脂
- 网络应急演练预案
- 服装设计入门基础知识
- 初二数学分式计算题练习
- (人教新课标)高二数学必修5第二章 数列
- 最新自主创业项目
- 北京大学 无机化学课件 4第4章 配合物
- 贸易公司业务管理制度




