spi 及其接口设计(可打印修改)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
II
SPIDR
SPIDR
移位寄存器
波特率 发生器
MISO
MOSI
SCLK
__
SS
VDD
MISO
MOSI
SCLK
__
SS
移位寄存器
主SPI
从SPI
图 3-3 典型 SPI 模块
典型的 SPI 接口有四个引脚:MISO(主入从出)、MOSI(主出从入)、 SCLK(串行时钟)和 SS(从选择)。具体功能如表 3-1。
传送完成标志置 1,完成一次传送。仅从传送路径上看,无所谓发送方和接收方。
在一次传送开始之前发送方应将发送数据写入自己的 SPIDR,该数据自动装载入
移位寄存器。在一次传送完成后,接收方从 SPIDR 中读取接收数据[26]。
目前已有的 SPI 接口 IP 软核,XILINX 公司的 CoolRunner 系列 SPI 主机 IP
(3)全双工(Full Duplex):对数据的两个传输方向采用不同的通路,可 以同时发送和接收数据,
串行通信有两种基本工作方式:异步方式和同步方式。采用异步方式 (Asynchronous)时,数据发送的格式如图 3-1 所示。不发送数据时,数据信号 线呈现高电平,处于空闲状态。当有数据要发送时,数据信号线变成低电平,并 持续一位的时间,用于表示字符的开始,称为起始位。起始位之后,在信号线上 依次出现待发送的每一位字符数据,最低有效位 D0 最先出现。采用不同的编码方 案,待发送的每个字符的位数就不同。当字符用 ASCII 码表示时,数据位占 7 位 ( D0 ~ D6 )。在数据位的后面有一个奇偶校验位,其后有停止位,用于指示字符 的结束。停止位可以是一位也可以是一位半或两位。可见,用异步方式发送一个 7 位的 ASCII 码字符时,实际需发送 10 位、10.5 位或 11 位信息。如果用 10 位
首先,对所要设计的从 SPI 做整体规划,建立架构,并对系统进行层次划分。 根据实际需要,将主 SPI 与从 SPI 之间的连接架构简单的归结为图 3-5 所示。
IV
主SPI
CSB SCLK SDIO
CSB SCLK SDIO
从SPI
图 3-5 主从 SPI 之间连接架构
主 SPI 与从 SPI 之间通过 CSB、SCLK、SDIO 三个引脚进行相连,它们分 别是片选引脚、串行时钟引脚、串行数据输入\输出引脚。此架构比典型的 SPI 接 口引脚少了一个串行数据输出引脚,为了使芯片引脚数量最少,所以将这一引脚 省略。 3.2.2 SPI 接口外特性 3.2.2.1 SPI 接口的端口引脚
一起进行系统仿真(System Simulation)来验证系统设计的正确性。RTL 级设计
按照系统要求编写程序,一般使用 Verilog HDL 或 VHDL 语言进行编程,使之
符合系统设计规定的外特性。RTL 级设计的结果须经行为仿真(Behavior
simulation),保证源代码(Source Code)的逻辑功能正确。
一个典型的 SPI 模块的核心部件是一个 8 位的移位寄存器和一个 8 位的数据 寄存器 SPIDR。通过 SPI 进行数据传送的设备有主 SPI 和从 SPI 之分,即 SPI 传 送在一个主 SPI 和一个从 SPI 之间进行。图 3-3 给出了两个 SPI 模块相互连接、 进行 SPI 传送的示意图,图左边是一个主 SPI,图右边为一个从 SPI。
门级仿真
门级仿真
自动布局布线
单元库IP
物理验证
单元库IP
加载到母片上 生成专用芯片
验证
后仿真
RTL级设计
行为仿真
制版流片
封装测试
图 3-4 自顶向下的设计流程
由上节可知,SPI 接口有主从之分,本文设计重点为从 SPI(Slave SPI)。这 主要是由于本文的应用环境决定的。本文设计的 ADC 接口电路及数字逻辑电路 的主要目标是实现外部主 SPI 对从 SPI 的初始化。要求从主 SPI 接收数据,配置 内部的寄存器,实现相应的控制目标,产生相应的控制信号。不需要产生数据来 配置其他的芯片,所以本文设计的 SPI 接口中就没有考虑波特率发生器,它只能 从外部接收移位时钟。
SS(slave select)
从机选择线。由主机发送至从机,当输入 时表示该从机被选中,与主机进行通信, 否则未选中,从机不与主机进行通信。
传送时双方的 MISO(主入从出)、MOSI(主出从入)、SCLK(串行时钟)
同名引脚相连。SS 引脚的定义有几种选择,因而有不同的连法。可以看到,主
SPI 和从 SPI 的移位寄存器通过 MISO 和 MOSI 引脚连接为一个 16 位的移位寄
同步字符1 同步字符2
数据字符
图 3-2 同步串行数据发送格式
3.1.2 SPI 接口简介 SPI(Serial Peripheral Interface)是由 Motorola 公司提出的一种工业标准,后
来交给 Opencores 组织进行维护。SPI 模块是在 MCU 与 MCU 之间,或 MCU 与 外围设备之间实现近距离、全双工、同步串行传送的接口。与其它串行接口相比, 具有电路结构简单、速度快、通信可靠等优点。通过 SPI 接口,MCU 可以很方 便的与外围芯片直接相连,用以传送控制/状态信息和输入/输出数据。
片的物理测试。经过门级仿真后再经过自动布局布线(Auto Place and Route),
从而生成版图(Layout),经过物理验证和后仿真,就可以制版流片,并交付封
装测试。整个流程如图 3-4 所示。
系统要求
综合
单元库IP
可编程逻辑器件
综合
系统级设计
系统实现
系统划分 和
功能设计
系统仿真
行为级/寄存器传 输级(RTL)设计
SPI 接口的设计
第二章介绍了模数转换器的可编程控制架构,其中可编程控制功能的实现需 要分成两部分:一部分为 SPI 接口电路,以及其根据内部寄存器存储的数据产生 的控制信号;另一部分是具体的电路受控模块。本章将介绍接口与数字逻辑电路 的设计,包括应用于本模数转换器的 SPI 接口与数字逻辑电路的设计、综合以及 仿真验证。
存器。主 SPI 的波特率发生器产生移位时钟 SCLK。
主 SPI 启动传送过程,MCU 向其 SPIDR 进行一次写入。写入 SPIDR 的数据
被装载到 SPI 的移位寄存器。根据 SCLK 的 8 个周期,双方同步移位 8 次,移位
寄存器中的内容交换,然后双方移位寄存器中的数据加载到各自的 SPIDR,双方
3.1 数据通信接口 3.1.1 串行通信
基本的通信方式有两种:并行通信和串行通信。并行通信是指数据以成组的 方式,在多条并行信道上同时进行传输。
串行通信指要传送的数据或信息按一定的格式编码,然后在单根线上,按位 的先后顺序进行传送。接收数据时,每次从单根线上按位接收信息,再把它们拼 成一个字符,送给 CPU(Central Processing Unit)做进一步的处理。收发双方必 须保持字符同步,以使接收方能从接收的数据比特流中正确区分出与发送方相同 的一个一个字符。串行通信只需要一条传输信道,易于实现,是目前主要采用的 一种通信方式,它具有通信线少以及传送距离远等优点。
3.2.2.2 SPI 接口的数据基本传送规则 (1)格式 SDIO 数据传输的第一阶段是指令阶段,指令由 16 位组成,之后是数据,数
V
据由一个或多个 8 位构成,长度由前面的指令字长位确定。CSB 的下降沿与 SCLK 的上升沿一起决定帧何时开始。如果器件的 CSB 与低电平相连,则帧开始 于 SCLK 的第一个上升沿,如图 3-6。
SPI 接口的端口引脚包括:CSB、SCLK、SDIO。 (1)CSB 片选引脚 CSB 是一种低电平有效控制,用来选通读写周期。CSB 可以在多种模式下工 作,如果控制器具有芯片选择输出或其他多器件选择方法,则该引脚可以与 CSB 线相连。当该线为低电平时,器件被选择,SCLK 和 SDIO 线路上的信息便会得 到处理。当该引脚为高电平时,器件会忽略 SCLK 和 SDIO 线路上的所有信息。 这样,多个器件便可以与 SPI 端口相连。在只连接一个器件的情况下,可以将 CSB 线路与低电平相连,使器件始终处于使能状态,但是此时如果端口发生错误, 将无法使器件复位,因为复位信号要在 CSB 的上升沿才起作用。 (2)SCLK 串行时钟 SCLK 引脚为串行移位时钟输入引脚,用来使串行接口的操作同步。输入数 据在该时钟上升沿有效,输出数据在下降沿有效。因为本文中 SPI 接口仅仅用来 为配置寄存器传送数据,所以对数据传输的速率要求不高。为降低该引脚对时钟 线路上噪声的敏感度,它采用施密特触发器实现。 (3)SDIO 串行数据输入/输出 SDIO 引脚用作输入或输出,取决于所发送的指令(读或写)以及时序帧中 的相对位置(指令周期或者数据周期)。在写或读操作的第一阶段,该引脚用作 输入,将信息传递到内部状态机。如果该命令被确定为写命令,则在指令周期内, SDIO 引脚始终用作串行输入,将数据传送给内部移位寄存器。如果该命令被确 定为读命令,状态机将把 SDIO 引脚变为输出,然后该引脚将数据回传给控制器。 在本文设计的 SPI 接口中,该引脚目前只实现向寄存器中写入数据的功能。
把源代码转换为网表的过程叫做综合。网表是使用 Verilog 语言对门级电路
的结构性描述,它是最底层文件。网表是原理图的语言描述,对应着门级电路原
理图。网表中所有的器件都包含有必须的工业参数,如温度特性、电压特性、固
有门延时、输入阻抗、上升时间、下降时间、驱动能力、面积等[31][32]。由于这
些工业参数的存在,使得门级仿真(Gate Level Simulation)十分接近于真实芯
III
3.2.1 设计方法、目标及流程
本文 SPI 接口采用自顶向下设计方法。自顶向下设计[29][30]是一种逐级分解、
变换,将系统要求转变为电路或者版图的过来自百度文库。从系统级(System
Level
Design)开始考虑系统的行为、功能、性能以及允许的芯片面积和成本要求,进
行系统划分和功能设计。用行为语言描述每个方框的外特性,并将全部方框连在
串行通信时,按数据的传送的方向可以分为单工、半双工和全双工等三种方 式。
(1)单工(Simplex):数据线仅能向一个方向传输数据,两个设备进行通 信时,一边只能发送数据,另一边只能接收数据。
(2)半双工(Half Duplex):数据可在两个设备间向任一个方向传输,但 因为只有一根传输线,故同一时间内只能向一个方向传输数据,不能同时收发。
I
来发送的话,就意味着发送过程中将会浪费 30%的传输时间。为了提高串行数据 传输的速率,可以采用同步传送方式。
一帧 第n个字符
D0 D1
起始位
数据位(5-8)
DX
D0
(1-2位)
校验位 停止位 空闲位 起始位
图 3-1 异步串行数据发送格式
同步方式(Synchronous)中串行同步字符的格式如图 3-2 所示。没有数据发 送时,传输线处于空闲状态。为了表示数据传输的开始,发送方先发送一个或两 个特殊字符,称该字符为同步字符。当发送方和接收方达到同步后,就可以连续 地发送数据,不需要起始位和停止位了,可以显著的提高数据的传输速率。采用 同步方式传送的发送过程中,收发双方须由同一个时钟来协调,用来确定串行传 输每一位的位置。在接收数据时,接收方可利用同步字符将内部时钟与发送方保 持同步,然后将同步字符后面的数据逐位移入,并转换成并行格式,直至收到结 束符为止。
核[27](CoolRunner Serial Peripheral Interface Master IP Core),是通过有限状态
机来控制 SPI 主机与从机以及微控制器之间的通信。Motorola 公司的 SPI 核[28]
是一个主从共用的 IP 软核,具有很高的可重用性和通用性。
3.2 SPI 接口的设计与综合
表 3-1 典型 SPI 接口引脚
引脚名 MISO(master in slave out) MOSI(master out slave in)
SCLK(serial clock)
描述 主机输入/从机输出线,串行数据传输 主机输出/从机输入线,串行数据传输 串行时钟线。由 SPI 主模块产生,在主从 交换数据时使用,确保数据交换的同步性。