您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > spi-及其接口设计
ISPI接口的设计第二章介绍了模数转换器的可编程控制架构,其中可编程控制功能的实现需要分成两部分:一部分为SPI接口电路,以及其根据内部寄存器存储的数据产生的控制信号;另一部分是具体的电路受控模块。本章将介绍接口与数字逻辑电路的设计,包括应用于本模数转换器的SPI接口与数字逻辑电路的设计、综合以及仿真验证。3.1数据通信接口3.1.1串行通信基本的通信方式有两种:并行通信和串行通信。并行通信是指数据以成组的方式,在多条并行信道上同时进行传输。串行通信指要传送的数据或信息按一定的格式编码,然后在单根线上,按位的先后顺序进行传送。接收数据时,每次从单根线上按位接收信息,再把它们拼成一个字符,送给CPU(CentralProcessingUnit)做进一步的处理。收发双方必须保持字符同步,以使接收方能从接收的数据比特流中正确区分出与发送方相同的一个一个字符。串行通信只需要一条传输信道,易于实现,是目前主要采用的一种通信方式,它具有通信线少以及传送距离远等优点。串行通信时,按数据的传送的方向可以分为单工、半双工和全双工等三种方式。(1)单工(Simplex):数据线仅能向一个方向传输数据,两个设备进行通信时,一边只能发送数据,另一边只能接收数据。(2)半双工(HalfDuplex):数据可在两个设备间向任一个方向传输,但因为只有一根传输线,故同一时间内只能向一个方向传输数据,不能同时收发。(3)全双工(FullDuplex):对数据的两个传输方向采用不同的通路,可以同时发送和接收数据,串行通信有两种基本工作方式:异步方式和同步方式。采用异步方式(Asynchronous)时,数据发送的格式如图3-1所示。不发送数据时,数据信号线呈现高电平,处于空闲状态。当有数据要发送时,数据信号线变成低电平,并持续一位的时间,用于表示字符的开始,称为起始位。起始位之后,在信号线上依次出现待发送的每一位字符数据,最低有效位0D最先出现。采用不同的编码方案,待发送的每个字符的位数就不同。当字符用ASCII码表示时,数据位占7位(60~DD)。在数据位的后面有一个奇偶校验位,其后有停止位,用于指示字符的结束。停止位可以是一位也可以是一位半或两位。可见,用异步方式发送一个7位的ASCII码字符时,实际需发送10位、10.5位或11位信息。如果用10II位来发送的话,就意味着发送过程中将会浪费30%的传输时间。为了提高串行数据传输的速率,可以采用同步传送方式。D0DXD1D0起始位数据位(5-8)校验位停止位空闲位起始位(1-2位)一帧第n个字符图3-1异步串行数据发送格式同步方式(Synchronous)中串行同步字符的格式如图3-2所示。没有数据发送时,传输线处于空闲状态。为了表示数据传输的开始,发送方先发送一个或两个特殊字符,称该字符为同步字符。当发送方和接收方达到同步后,就可以连续地发送数据,不需要起始位和停止位了,可以显著的提高数据的传输速率。采用同步方式传送的发送过程中,收发双方须由同一个时钟来协调,用来确定串行传输每一位的位置。在接收数据时,接收方可利用同步字符将内部时钟与发送方保持同步,然后将同步字符后面的数据逐位移入,并转换成并行格式,直至收到结束符为止。同步字符1同步字符2数据字符图3-2同步串行数据发送格式3.1.2SPI接口简介SPI(SerialPeripheralInterface)是由Motorola公司提出的一种工业标准,后来交给Opencores组织进行维护。SPI模块是在MCU与MCU之间,或MCU与外围设备之间实现近距离、全双工、同步串行传送的接口。与其它串行接口相比,具有电路结构简单、速度快、通信可靠等优点。通过SPI接口,MCU可以很方便的与外围芯片直接相连,用以传送控制/状态信息和输入/输出数据。一个典型的SPI模块的核心部件是一个8位的移位寄存器和一个8位的数据寄存器SPIDR。通过SPI进行数据传送的设备有主SPI和从SPI之分,即SPI传送在一个主SPI和一个从SPI之间进行。图3-3给出了两个SPI模块相互连接、进行SPI传送的示意图,图左边是一个主SPI,图右边为一个从SPI。III移位寄存器SPIDRSPIDR移位寄存器波特率发生器从SPI主SPIMISOMOSISCLK__SSMISOMOSISCLK__SSDDV图3-3典型SPI模块典型的SPI接口有四个引脚:MISO(主入从出)、MOSI(主出从入)、SCLK(串行时钟)和SS(从选择)。具体功能如表3-1。表3-1典型SPI接口引脚引脚名描述MISO(masterinslaveout)主机输入/从机输出线,串行数据传输MOSI(masteroutslavein)主机输出/从机输入线,串行数据传输SCLK(serialclock)串行时钟线。由SPI主模块产生,在主从交换数据时使用,确保数据交换的同步性。SS(slaveselect)从机选择线。由主机发送至从机,当输入时表示该从机被选中,与主机进行通信,否则未选中,从机不与主机进行通信。传送时双方的MISO(主入从出)、MOSI(主出从入)、SCLK(串行时钟)同名引脚相连。SS引脚的定义有几种选择,因而有不同的连法。可以看到,主SPI和从SPI的移位寄存器通过MISO和MOSI引脚连接为一个16位的移位寄存器。主SPI的波特率发生器产生移位时钟SCLK。主SPI启动传送过程,MCU向其SPIDR进行一次写入。写入SPIDR的数据被装载到SPI的移位寄存器。根据SCLK的8个周期,双方同步移位8次,移位寄存器中的内容交换,然后双方移位寄存器中的数据加载到各自的SPIDR,双方传送完成标志置1,完成一次传送。仅从传送路径上看,无所谓发送方和接收方。在一次传送开始之前发送方应将发送数据写入自己的SPIDR,该数据自动装载入移位寄存器。在一次传送完成后,接收方从SPIDR中读取接收数据[26]。目前已有的SPI接口IP软核,XILINX公司的CoolRunner系列SPI主机IP核[27](CoolRunnerSerialPeripheralInterfaceMasterIPCore),是通过有限状态机来控制SPI主机与从机以及微控制器之间的通信。Motorola公司的SPI核[28]是一个主从共用的IP软核,具有很高的可重用性和通用性。IV3.2SPI接口的设计与综合3.2.1设计方法、目标及流程本文SPI接口采用自顶向下设计方法。自顶向下设计[29][30]是一种逐级分解、变换,将系统要求转变为电路或者版图的过程。从系统级(SystemLevelDesign)开始考虑系统的行为、功能、性能以及允许的芯片面积和成本要求,进行系统划分和功能设计。用行为语言描述每个方框的外特性,并将全部方框连在一起进行系统仿真(SystemSimulation)来验证系统设计的正确性。RTL级设计按照系统要求编写程序,一般使用VerilogHDL或VHDL语言进行编程,使之符合系统设计规定的外特性。RTL级设计的结果须经行为仿真(Behaviorsimulation),保证源代码(SourceCode)的逻辑功能正确。把源代码转换为网表的过程叫做综合。网表是使用Verilog语言对门级电路的结构性描述,它是最底层文件。网表是原理图的语言描述,对应着门级电路原理图。网表中所有的器件都包含有必须的工业参数,如温度特性、电压特性、固有门延时、输入阻抗、上升时间、下降时间、驱动能力、面积等[31][32]。由于这些工业参数的存在,使得门级仿真(GateLevelSimulation)十分接近于真实芯片的物理测试。经过门级仿真后再经过自动布局布线(AutoPlaceandRoute),从而生成版图(Layout),经过物理验证和后仿真,就可以制版流片,并交付封装测试。整个流程如图3-4所示。系统要求系统划分和功能设计行为级/寄存器传输级(RTL)设计系统仿真行为仿真综合门级仿真自动布局布线物理验证后仿真制版流片封装测试可编程逻辑器件门级仿真加载到母片上生成专用芯片验证单元库IP单元库IP单元库IP系统级设计RTL级设计综合系统实现图3-4自顶向下的设计流程由上节可知,SPI接口有主从之分,本文设计重点为从SPI(SlaveSPI)。这主要是由于本文的应用环境决定的。本文设计的ADC接口电路及数字逻辑电路的主要目标是实现外部主SPI对从SPI的初始化。要求从主SPI接收数据,配置内部的寄存器,实现相应的控制目标,产生相应的控制信号。不需要产生数据来配置其他的芯片,所以本文设计的SPI接口中就没有考虑波特率发生器,它只能从外部接收移位时钟。首先,对所要设计的从SPI做整体规划,建立架构,并对系统进行层次划V分。根据实际需要,将主SPI与从SPI之间的连接架构简单的归结为图3-5所示。主SPI从SPICSBCSBSCLKSCLKSDIOSDIO图3-5主从SPI之间连接架构主SPI与从SPI之间通过CSB、SCLK、SDIO三个引脚进行相连,它们分别是片选引脚、串行时钟引脚、串行数据输入\输出引脚。此架构比典型的SPI接口引脚少了一个串行数据输出引脚,为了使芯片引脚数量最少,所以将这一引脚省略。3.2.2SPI接口外特性3.2.2.1SPI接口的端口引脚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接口中,该引脚目前只实现向寄存器中写入数据的功能。VI3.2.2.2SPI接口的数据基本传送规则(1)格式SDIO数据传输的第一阶段是指令阶段,指令由16位组成,之后是数据,数据由一个或多个8位构成,长度由前面的指令字长位确定。CSB的下降沿与SCLK的上升沿一起决定帧何时开始。如果器件的CSB与低电平相连,则帧开始于SCLK的第一个上升沿,如图3-6。图3-6数据格式(2)指令周期指令周期为串行传输数据的前16位,指令周期分为若干位段,如图3-7所示:图3-7指令周期(3)读/写指令位数据流中的第一位是读/写指令位(WR/)。当该位为高电平时,表示指令为读取指令,指令周期(前16位)完成时,内部状态机使用所提供的信息解码要读取的内部地址。SDIO的方向由输入变为输出,由字长定义的适当数量的字从从器件移位出来。当数据流中的第一位为低电平时,则进入写入阶段。指令周期完成时,内部状态机使用所提供的信息解码要写入的内部地址。指令完成之后的所有数据被送往目标地址。一旦传输完字长所要求的所有数据,状态机便返回空闲模式,等待下一个指令周期。(4)字长W1和W0表示要读取或者写入的数据字节数。具体设置和操作如下表:表3-2W1、W0的设置和操作W1:W0设置操
本文标题:spi-及其接口设计
链接地址:https://www.777doc.com/doc-4799950 .html