当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]1 引 言SPI(Serial Peripheral Interface)串行外围接口是一种3线同步串行全双工通信接口,它具有电路简单,速度陕,通信可靠等优点,近年来大量的新型器件如LCD模块、FLAS

1 引 言

SPI(Serial Peripheral Interface)串行外围接口是一种3线同步串行全双工通信接口,它具有电路简单,速度陕,通信可靠等优点,近年来大量的新型器件如LCD模块、FLASH、EEPROM存储器、数据输入输出设备都采用了SPI接口,新型的单片机一般都已将SPI接口控制器集成在单片机内部,这样能够大大降低软件的工作量。

由于SPI系统总线一共只需3~4位数据线和控制线即可实现与具有SPI总线接口功能的各种I/O器件进行接口,而扩展并行总线则需要8根数据线、8—16位地址线、2~3位控制线,因此,采用SPI总线接口可以简化电路设计,节省很多常规电路中的接口器件和I/0口线,提高设计的可靠性,使用 SPI总线可以增加应用系统接口器件的种类,提高应用系统的性能。

2 SPI模块的接口信号、时序要求及工作模式

2.1 内部总线接口

在本设计中,内部总线接口采用的是AMBA总线3.0协议,具有较好的可移植性和可复用性。SPI是APB总线上的Slave模块。APB总线的时序完全遵照(ABMA Specification)(Rev 3.0)。因此此SPI模块支持3种DMA操作,除了标准信号线外,还有3根与DMA模块连接的中断请求信号线。

2.2 SPI总线接口及时序

SPI串行接口使用4条线可与多种标准外围器件直接接口:串行时钟线SCLK,主机输入/从机输出数据线MISO,主机输出/从机输人数据线MOSI和低电平有效的从机选择线SSN。SCLK是主机时钟线,为MISO数据的发送和接收提供同步时钟信号。

在正常工作的时候,主机的4个引脚应和从机对应的4个引脚分别相连。

SPI模块为了和外设进行数据交换,根据外设的工作要求,其输出串行同步时钟的极性和相位可以进行配置,时钟的极性(CPOL)对传输的协议没有重大影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;相反,如果CPOL=l,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。

如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设时钟相位和极性应该一致。SPI接口时序如图1、图2所示。

 


图1 CPOL=0 CPHA =0

 


图2 CPOL=0 CPHA=1

2.3 工作模式

SPI有两种工作模式,可以通过外部引脚跳线的方式来切换。

主模式:发送和接收可以同时工作在主模式下。

主模式的显著特征是不论是发送还是接收始终有SCLK信号,发送操作是由向发送FIFO中写数据而触发的。在主模式下,时钟信号的1次作用对应一位数据的发送(MOSI)和另一位数据的接收(MISO)。

如图3所示,在主片中数据从移位寄存器中自右向左发出送到从片(MOSI),同时从片中的数据自左向右发到主片(MISO),经过8位时钟周期完成1个字节的发送。输入字节保留在移位寄存器中,此时SPI INT FLAG位自动置位(如果有中断设置,则产生中断),移位寄存器的数据将被锁存到接收FIFO中,此后对接收FIFO的读操作将把数据读出。

从模式:发送和接收同时工作在从模式下。从模式的显著特征是:不论是发送还是接收始终必须在SCLK信号作用下进行,并且SSN信号必须有效。

当SSN信号无效时,数据的发送无法进行并且输入的数据视为无效。数据的发送和接收过程见图3所示,与主模式下基本相似,只是移位寄存器的数据移出和输入方向与之相反。

 


图3 主片和从片发送和接收操作

3 SPI模块功能设计

3.1 模块划分

根据功能定义及SPI的工作原理,将整个SPI IP划分为8个子模块:APB接口模块、时钟分频模块、发送数据FIFO模块、接收数据FIFO模块、寄存器控制模块、命令解析模块、中断处理模块及发送接收数据模块。整个SPI模块划分结构图如图4所示。

 


图4 数据传输结构

在这些模块中,Tx—FIFO和Rx—FIFO用来做接收发送数据的FIFO。DMA/INT是中断控制模块,通知MCU或者DMA发送或者接收数据的FIFO。CMD ANALYSIS模块用来解析在从模式下Host发过来的命令。CTRl/Register用来放置寄存器,供MCU读写配置SPI的各种参数。 Shifter用来做串并转换,收发送数据。Clock模块用来产生主模式下时钟。

3.2 设计方案

通过深入分析SPI的四种传输协议可以发现,根据一种协议,只要对串行同步时钟进行转换,就能得到其余的三种协议。为了简化设计,规定如果要连续传输多个数据,在两个数据传输之问插入一个串行时钟的空闲等待,这样状态机只需两种状态(空闲和工作)就能正确工作。相比其它设计,在基本不降低性能的前提下,思路比较精炼、清晰,能够大大缩短写代码的时间,降低出错率。

此SPI模块有两种工作方式:查询方式和DMA方式。查询方式通过处理器核监视SPI的状态寄存器来获取其所处的状态,从而决定下一步动作。

DMA方式由DMA模块控制数据在内存和SPI间的交换,而不需要处理器核的参与,有效提高了总线利用率。

外部MCU可以通过和内部MCU通讯的方式,把从模式的SPI配置成可以解析命令的模式,这样外部主模式的SPI可以在SSN低电平的时候连续传输多位数据,在下降沿的第一个数据被认为是命令。从模式的SPI可以解析这些命令然后做相应的操作。这些操作主要包括,清除接收FIFO或者发送 FIFO中的数据,选择MCU或者DMA来作为数据交互的对象等,可以大大节省和MCU交互所需要的带宽。[!--empirenews.page--]

作为主要组成部分的寄存器控制模块和SPI核心模块采用同步电路设计,它们之间的通讯采用异步电路设计。这些主要是考虑到SPI的带宽通过MCU的控制是可调的。SPI核心部分的时钟频率可调,可实现多种带宽,增加了本设计SPI的灵活性。

3.3 电路实现

为了保证RTL代码的正确性,对IP的功能进行全面的仿真验证。仿真包括RTL级和门级仿真验证。RTL级仿真是将代码文件调入硬件描述语言的仿真软件进行功能仿真,门级仿真包括布局布线前和布局布线后仿真。布局布线后仿真,获得精确的时延参数。将RTL级代码转换成门级网表,0.13um工艺标准单元库。

在传统的设计流程中进行功能验证,首先需要通过写测试矢量的方式给需要进行功能测试的模块加激励,然后通过观察模块的输出结果,判断模块的功能是否正确。但是在写测试矢量时,测试工程师是在自己对模块功能理解的基础上进行的。这样就存在一个问题,测试矢量对模块的激励有可能是不完备的,还有可能是错误的,但测试矢量的激励并没有使错误体现出来;也有可能模块的功能是正确的,误报错误使验证过程变得非常低效。为避免以上问题,对本设计模块的功能验证中,采用系统级验证环境。该环境由IP总线、驱动器、监视器、外部模块和协调它们工作的脚本组成。组成系统的各模块可以按需要加人环境。每次验证过程就是相应的激励作用于环境的过程。验证结果由环境产生、检验和输出。以保证测试矢量的完备性和正确性。

该验证环境在LINUX操作系统下,仿真器采用Cadence公司的Nc—verilog,支持C/C++、Verilog和VHDL协同仿真,可以直接把SPI模块挂在验证环境中,通过Verilog的$readmemh任务读入软件激励进行验证。

在系统时钟为36MHz的情况下,图5(a)给出了CPOL=0,CPHA=1时,发送6位数据的仿真结果。图5(b)给出了在CPOL=0,CPHA=0的情况下,接收6位数据的仿真结果。

 


图5 仿真结果

这两个仿真结果说明本设计完全支持4种SPI传输协议,而且能够以最大的速率无缝传输数据。

4 结束语

本设计的SPI可作为IP核嵌入监控系统SOC芯片中。芯片通过流片验证,各项指标已达到了原设计的要求,通过板级测试,芯片中SPI能支持4 种传输协议,工作的最高频率可达18M bps,在一秒钟内能够抓图或者回显l5帧图像,达到业内较高水平。本设计中的不足之处是没有做数据校验,随着市场需求的提高,可在设计中增加CRC校验以增加数据的正确性,提高系统效率。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

SPI,Serial Peripheral Interface,串行外围设备接口,是一种同步通信协议,通常用于芯片间进行数据交互。

关键字: SPI 通信协议 外围设备

单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大地扩展了单片机的应用范围,增强了单片机系统的硬件实力。简单双向串口通信有两根通信线(发送端TX和接收端RX);TX与RX要交叉连接;当只...

关键字: 串行通信 SPI

仪表放大器是电子电路中常用的功能模块,用于测量和放大微弱信号。它具有高放大精度、低噪声和抗干扰等特点,因此在各种电子设备和工程中都得到广泛应用。本文将详细介绍仪表放大器的原理和功能,并探讨如何设计和实现基于仪表放大器的功...

关键字: 仪表放大器 电子电路 功能模块

FIFO(First In, First Out)存储器是一种常见的存储器类型,它具有以下特点,并在实际应用中发挥着重要的作用。

关键字: FIFO 存储器 数据传输

今天,小编将在这篇文章中为大家带来SPI总线和I2C总线的有关报道,通过阅读这篇文章,大家可以对二者具备清晰的认识,主要内容如下。

关键字: SPI I2C 总线

纽约2023年3月12日 /美通社/ -- 领先的数字绘图设备创新者和制造商绘王(Huion),在所有平台上欢庆诞生12周年,包括社交媒体网站和官方社区。 绘王于2011年...

关键字: SPI TE BSP DESIGN

北京2023年2月20日 /美通社/ -- CEiC被投企业俱乐部成员、新加坡金融科技服务商Aspire近日完成1亿美元的C轮融资,本轮投资方由Lightspeed和红杉资本SEA领投,PayPal Ventures、腾...

关键字: SPI IC CE TOP

舍弗勒收购高品质陶瓷部件专业供应商,进一步增强工业事业部技术实力 通过收购,舍弗勒获得战略性技术并进一步强化供应链 进一步提升陶瓷技术解决方案能力,满足工业客户需求 赫尔佐根奥拉赫2022年11月21...

关键字: SPI CE 供应链 滚动轴承

(全球TMT2022年11月8日讯)近日,浪潮信息四款服务器NF5180M6、NF5280A6、NF5280R6及NF8260M6通过OCP Inspired认证,并在OCP官网公布。 浪潮NF5180M6...

关键字: SPI 处理器 英特尔 ALTRA

发个方便测试I2C、SPI、1Wire接口的工具模块 总的思路是通过USB或者UART接口发送一些协议字符串,由模块转换成上面几种接口的硬件时序电信号,实现与这几种接口芯片、设备的快速测试。 首先声明一下,大家都是搞...

关键字: 可编程USB UART I2C SMBusS SPI
关闭
关闭