spi-及其接口设计_第1页
spi-及其接口设计_第2页
spi-及其接口设计_第3页
spi-及其接口设计_第4页
spi-及其接口设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SPI接口的设计第二章介绍了模数转换器的可编程控制架构,其中可编程控制功能的实现需要分成两部分:一部分为SPI接口电路,以及其根据内部寄存器存储的数据产生的控制信号;另一部分是具体的电路受控模块。本章将介绍接口与数字逻辑电路的设计,包括应用于本模数转换器的SPI接口与数字逻辑电路的设计、综合以及仿真验证。3.1 数据通信接口3.1.1 串行通信基本的通信方式有两种:并行通信和串行通信。并行通信是指数据以成组的方式,在多条并行信道上同时进行传输。串行通信指要传送的数据或信息按一定的格式编码,然后在单根线上,按位的先后顺序进行传送。接收数据时,每次从单根线上按位接收信息,再把它们拼成一个字符,送给

2、CPU(Central Processing Unit)做进一步的处理。收发双方必须保持字符同步,以使接收方能从接收的数据比特流中正确区分出与发送方相同的一个一个字符。串行通信只需要一条传输信道,易于实现,是目前主要采用的一种通信方式,它具有通信线少以及传送距离远等优点。串行通信时,按数据的传送的方向可以分为单工、半双工和全双工等三种方式。(1)单工(Simplex):数据线仅能向一个方向传输数据,两个设备进行通信时,一边只能发送数据,另一边只能接收数据。(2)半双工(Half Duplex):数据可在两个设备间向任一个方向传输,但因为只有一根传输线,故同一时间内只能向一个方向传输数据,不能同

3、时收发。(3)全双工(Full Duplex):对数据的两个传输方向采用不同的通路,可以同时发送和接收数据, 串行通信有两种基本工作方式:异步方式和同步方式。采用异步方式(Asynchronous)时,数据发送的格式如图3-1所示。不发送数据时,数据信号线呈现高电平,处于空闲状态。当有数据要发送时,数据信号线变成低电平,并持续一位的时间,用于表示字符的开始,称为起始位。起始位之后,在信号线上依次出现待发送的每一位字符数据,最低有效位最先出现。采用不同的编码方案,待发送的每个字符的位数就不同。当字符用ASCII码表示时,数据位占7位()。在数据位的后面有一个奇偶校验位,其后有停止位,用于指示字符

4、的结束。停止位可以是一位也可以是一位半或两位。可见,用异步方式发送一个7位的ASCII码字符时,实际需发送10位、10.5位或11位信息。如果用10位来发送的话,就意味着发送过程中将会浪费30%的传输时间。为了提高串行数据传输的速率,可以采用同步传送方式。图3-1 异步串行数据发送格式同步方式(Synchronous)中串行同步字符的格式如图3-2所示。没有数据发送时,传输线处于空闲状态。为了表示数据传输的开始,发送方先发送一个或两个特殊字符,称该字符为同步字符。当发送方和接收方达到同步后,就可以连续地发送数据,不需要起始位和停止位了,可以显著的提高数据的传输速率。采用同步方式传送的发送过程中

5、,收发双方须由同一个时钟来协调,用来确定串行传输每一位的位置。在接收数据时,接收方可利用同步字符将内部时钟与发送方保持同步,然后将同步字符后面的数据逐位移入,并转换成并行格式,直至收到结束符为止。图3-2 同步串行数据发送格式3.1.2 SPI接口简介SPI(Serial Peripheral Interface)是由Motorola公司提出的一种工业标准,后来交给Opencores组织进行维护。SPI模块是在MCU与MCU之间,或MCU与外围设备之间实现近距离、全双工、同步串行传送的接口。与其它串行接口相比,具有电路结构简单、速度快、通信可靠等优点。通过SPI接口,MCU可以很方便的与外围芯

6、片直接相连,用以传送控制/状态信息和输入/输出数据。一个典型的SPI模块的核心部件是一个8位的移位寄存器和一个8位的数据寄存器SPIDR。通过SPI进行数据传送的设备有主SPI和从SPI之分,即SPI传送在一个主SPI和一个从SPI之间进行。图3-3给出了两个SPI模块相互连接、进行SPI传送的示意图,图左边是一个主SPI,图右边为一个从SPI。图3-3 典型SPI模块典型的SPI接口有四个引脚:MISO(主入从出)、MOSI(主出从入)、SCLK(串行时钟)和SS(从选择)。具体功能如表3-1。表3-1 典型SPI接口引脚引脚名描述MISO(master in slave out)主机输入/

7、从机输出线,串行数据传输MOSI(master out slave in)主机输出/从机输入线,串行数据传输SCLK(serial clock)串行时钟线。由SPI主模块产生,在主从交换数据时使用,确保数据交换的同步性。SS(slave select)从机选择线。由主机发送至从机,当输入时表示该从机被选中,与主机进行通信,否则未选中,从机不与主机进行通信。传送时双方的MISO(主入从出)、MOSI(主出从入)、SCLK(串行时钟)同名引脚相连。SS引脚的定义有几种选择,因而有不同的连法。可以看到,主SPI和从SPI的移位寄存器通过MISO和MOSI引脚连接为一个16位的移位寄存器。主SPI的波

8、特率发生器产生移位时钟SCLK。主SPI启动传送过程,MCU向其SPIDR进行一次写入。写入SPIDR的数据被装载到SPI的移位寄存器。根据SCLK的8个周期,双方同步移位8次,移位寄存器中的内容交换,然后双方移位寄存器中的数据加载到各自的SPIDR,双方传送完成标志置1,完成一次传送。仅从传送路径上看,无所谓发送方和接收方。在一次传送开始之前发送方应将发送数据写入自己的SPIDR,该数据自动装载入移位寄存器。在一次传送完成后,接收方从SPIDR中读取接收数据26。目前已有的SPI接口IP软核,XILINX公司的CoolRunner系列SPI主机IP核27(CoolRunner Serial

9、Peripheral Interface Master IP Core),是通过有限状态机来控制SPI主机与从机以及微控制器之间的通信。Motorola公司的SPI核28是一个主从共用的IP软核,具有很高的可重用性和通用性。3.2 SPI接口的设计与综合3.2.1 设计方法、目标及流程本文SPI接口采用自顶向下设计方法。自顶向下设计2930是一种逐级分解、变换,将系统要求转变为电路或者版图的过程。从系统级(System Level Design)开始考虑系统的行为、功能、性能以及允许的芯片面积和成本要求,进行系统划分和功能设计。用行为语言描述每个方框的外特性,并将全部方框连在一起进行系统仿真(

10、System Simulation)来验证系统设计的正确性。RTL级设计按照系统要求编写程序,一般使用Verilog HDL或VHDL语言进行编程,使之符合系统设计规定的外特性。RTL级设计的结果须经行为仿真(Behavior simulation),保证源代码(Source Code)的逻辑功能正确。把源代码转换为网表的过程叫做综合。网表是使用Verilog语言对门级电路的结构性描述,它是最底层文件。网表是原理图的语言描述,对应着门级电路原理图。网表中所有的器件都包含有必须的工业参数,如温度特性、电压特性、固有门延时、输入阻抗、上升时间、下降时间、驱动能力、面积等3132。由于这些工业参数的

11、存在,使得门级仿真(Gate Level Simulation)十分接近于真实芯片的物理测试。经过门级仿真后再经过自动布局布线(Auto Place and Route),从而生成版图(Layout),经过物理验证和后仿真,就可以制版流片,并交付封装测试。整个流程如图3-4所示。图3-4 自顶向下的设计流程由上节可知,SPI接口有主从之分,本文设计重点为从SPI(Slave SPI)。这主要是由于本文的应用环境决定的。本文设计的ADC接口电路及数字逻辑电路的主要目标是实现外部主SPI对从SPI的初始化。要求从主SPI接收数据,配置内部的寄存器,实现相应的控制目标,产生相应的控制信号。不需要产生

12、数据来配置其他的芯片,所以本文设计的SPI接口中就没有考虑波特率发生器,它只能从外部接收移位时钟。首先,对所要设计的从SPI做整体规划,建立架构,并对系统进行层次划分。根据实际需要,将主SPI与从SPI之间的连接架构简单的归结为图3-5所示。图3-5 主从SPI之间连接架构主SPI与从SPI之间通过CSB、SCLK、SDIO三个引脚进行相连,它们分别是片选引脚、串行时钟引脚、串行数据输入输出引脚。此架构比典型的SPI接口引脚少了一个串行数据输出引脚,为了使芯片引脚数量最少,所以将这一引脚省略。3.2.2 SPI 接口外特性 SPI 接口的端口引脚SPI接口的端口引脚包括:CSB、

13、SCLK、SDIO。(1)CSB片选引脚CSB是一种低电平有效控制,用来选通读写周期。CSB可以在多种模式下工作,如果控制器具有芯片选择输出或其他多器件选择方法,则该引脚可以与CSB线相连。当该线为低电平时,器件被选择,SCLK和SDIO线路上的信息便会得到处理。当该引脚为高电平时,器件会忽略SCLK和SDIO线路上的所有信息。这样,多个器件便可以与SPI端口相连。在只连接一个器件的情况下,可以将CSB线路与低电平相连,使器件始终处于使能状态,但是此时如果端口发生错误,将无法使器件复位,因为复位信号要在CSB的上升沿才起作用。(2)SCLK串行时钟SCLK引脚为串行移位时钟输入引脚,用来使串行

14、接口的操作同步。输入数据在该时钟上升沿有效,输出数据在下降沿有效。因为本文中SPI接口仅仅用来为配置寄存器传送数据,所以对数据传输的速率要求不高。为降低该引脚对时钟线路上噪声的敏感度,它采用施密特触发器实现。(3)SDIO串行数据输入/输出SDIO引脚用作输入或输出,取决于所发送的指令(读或写)以及时序帧中的相对位置(指令周期或者数据周期)。在写或读操作的第一阶段,该引脚用作输入,将信息传递到内部状态机。如果该命令被确定为写命令,则在指令周期内,SDIO引脚始终用作串行输入,将数据传送给内部移位寄存器。如果该命令被确定为读命令,状态机将把SDIO引脚变为输出,然后该引脚将数据回传给控制器。在本

15、文设计的SPI接口中,该引脚目前只实现向寄存器中写入数据的功能。 SPI 接口的数据基本传送规则(1)格式SDIO数据传输的第一阶段是指令阶段,指令由16位组成,之后是数据,数据由一个或多个8位构成,长度由前面的指令字长位确定。CSB的下降沿与SCLK的上升沿一起决定帧何时开始。如果器件的CSB与低电平相连,则帧开始于SCLK的第一个上升沿,如图3-6。图3-6 数据格式(2)指令周期指令周期为串行传输数据的前16位,指令周期分为若干位段,如图3-7所示:图3-7 指令周期(3)读/写指令位数据流中的第一位是读/写指令位()。当该位为高电平时,表示指令为读取指令,指令周期(前16

16、位)完成时,内部状态机使用所提供的信息解码要读取的内部地址。SDIO的方向由输入变为输出,由字长定义的适当数量的字从从器件移位出来。当数据流中的第一位为低电平时,则进入写入阶段。指令周期完成时,内部状态机使用所提供的信息解码要写入的内部地址。指令完成之后的所有数据被送往目标地址。一旦传输完字长所要求的所有数据,状态机便返回空闲模式,等待下一个指令周期。(4)字长W1和W0表示要读取或者写入的数据字节数。具体设置和操作如下表:表3-2 W1、W0的设置和操作W1:W0 设置操作CSB 停止00可以传输1个字节数据可选01可以传输2个字节数据可选10可以传输3个字节数据可选11可以传输4个字节数据

17、不允许如果要传输的字节数为3个或者更少,则CSB可以在字节边界上变为高电平,如果在非字节边界上变为高电平将终止通信周期。如果W1:W0为11,则数据可以传输到CSB变为高电平时为止。在数据流处理过程中,不允许CSB停止,一旦流处理开始(定义为第三个数据字节完成以后),则在操作完成之前,不允许CSB回到高电平。如果CSB确实变为高电平,流处理即终止,下次CSB变为低电平时,将开始新的指令周期。如果CSB在非8位边界变为高电平,通信周期即终止,任何未完成的字节均会丢失。不过已完成的数据字节会得到正确处理。在本文设计的SPI接口中,由于均是8位的寄存器,W1:W0固定为00。即传送一个字节的数据。(

18、5)地址位其余13位表示所发送数据的起始位置。如果要发送的数据不止一个字,则会使用顺序寻址,从指定地址开始,根据模式设置而递增或者递减。(6)数据周期指令周期之后是数据周期。发送的数据量由字长(W0和W1)决定,可以是一个或者多个字节的数据。所有数据均由8位字组成。(7)位序发送数据有两种模式:MSB优先或LSB优先。上电时,默认模式为MSB优先。可以通过对配置寄存器编程来改变为LSB优先。在MSB优先模式下,串行交换从最高位开始,结束于LSB。在LSB优先模式下,顺序相反。指令长度为16位,有两个字节组成。3.2.3 SPI 接口的RTL级设计 SPI 接口功能模块的划分图3-

19、8是从SPI接口的系统示意图。SPI接口是串行通信接口,它将主SPI发送过来的数据存入内部相应寄存器之后再输出控制信号到芯片其他部分。因此整个系统可以划分为接口、核心和输出端口三部分。图3-8 SPI接口系统示意图从SPI由指令移位寄存器、指令数据缓存器、寄存器控制逻辑、寄存器构成,如图3-9所示。主SPI发送过来的串行数据先依次进入指令移位寄存器,指令移位寄存器再依次将数据传送到指令缓存器。寄存器控制逻辑根据MSB优先或LSB优先控制指令移位寄存器的移位以及控制指令缓存器的输出,将其传送到相应地址的寄存器当中。寄存器包括三种类型:配置寄存器、传送寄存器和编程寄存器。寄存器存入相应数据之后,先

20、根据配置寄存器配置串行接口,编程寄存器再根据寄存器功能表中的定义输出相对应的控制信号,最后根据传送寄存器指令统一输出控制信号。图3-9 SPI接口的功能模块 寄存器的设计SPI端口是一种由外部输入信号来配置寄存器的机制,因此需要指令移位寄存器和指令缓存器对输入进来的数据进行暂存。此外对器件进行编程,需要定义一个结构化的寄存器空间,此结构可细分为多个地址,数据传输的指令阶段中的地址即指向这些地址。每个地址可寻址一个8位的字节,每一位均有其特定的含义和作用,详见表3-3。表3-3 寄存器表地址(Hex)名称Bit7(MSB)Bit6Bit5Bit4Bit3Bit2Bit1Bit0(L

21、SB)默认值00chipportconfig0LSB first0=off1=onSoft reset0=off1=on000000008modes00000Internal powerdown mode000-normal(power-up)001-full power-down010-standby011-normal0009clock0000000Duty cycle stabilizer0-disabled1-enabled0110offset00Digital Offset Adjust Offset in LSBs +31 +30 +29 +2 +1 +0 -1 -2 -3 -31

22、 -320014outputmode000000Data Format Select00-offset binay01-twos complement10-Gray Code11-invert0016outputphaseOutput ClockPolarity0=normal1=inverted00000000018VREFInternal reference resistor divider00-VREF=1.25V01-VREF=1.5V10-VREF=1.75V11- VREF=2V000000C0FFdeviceupdate0000000SW transfer0=off1=in00在

23、上表中可以看到寄存器分为三种类型:配置寄存器、传送寄存器和编程寄存器。(1)配置寄存器(地址00)配置寄存器位于地址00,该寄存器用来配置串行接口,包含有2个有效位,位于高半字节当中,低半字节未连接,留做备用。其功能是使芯片软复位并配置在已知状态,而与当前的数据移位方向无关,这将确保在发生故障时器件能够给予积极处理。位6LSB优先该位决定发送和接收信息的顺序,如果该位清零,数据将以MSB优先的方式处理。如果设置该位,数据将以LSB优先的方式处理。该位被配置后,立即产生作用。位5软复位控制该位控制软复位,该位的默认值为0。如果将该位设置为高电平,就会启动芯片芯片软复位,软复位将所有默认值写入寄存

24、器中,但配置寄存器(00)除外,无默认值的寄存器将保持用户最后一次编程的状态。软复位处理完毕后,该位清零,表示复位过程已完成。该位被配置后,在CSB上升沿到来时产生作用。(2)传送寄存器(地址FF)一般寄存器都需要采用主从触发器进行缓冲,缓冲可以增强系统的多器件同步能力,并有助于写入对存储器其他部分写入的值可能有依赖关系的配置。根据需要的不同,有些寄存器需要这样的缓冲,例如编程寄存器。有些寄存器则永远不会进行缓冲,例如配置寄存器和传送寄存器,因为出于程序和控制目的,这些寄存器要求及时获得响应。无论缓冲与否,SPI端口都要负责将信息放入寄存器中,不过对于采用缓冲的寄存器,必须启动传输以将数据移出

25、。传送寄存器即提供软件传输信号。位0软件传输设置位0为“1”将立即启动传输,当状态机识别到该位已经设置时,它会产生一个内部传输信号,将数据从编程寄存器中移出。完成之后,状态机将该位清零,以便下次传输。(3)编程寄存器本文设计中所用到的编程寄存器的地址包括(08、09、10、14、16、18),其他地址可以在有新的需求时进行添加。当编程寄存器按照表3-3输入相对应的值后,应产生一系列的控制信号,如表3-4所示。这些控制信号产生后被锁存,并在软件传输的命令下达后,才会被一起传输到后面的模块。受控电路则实现如表3-3中所示的功能。表3-4 编程寄存器列表地址(Hex)存入值输出信号值08C475=0

26、,K356=0,C82=1,C476=0C475=1,K356=0,C82=1,C476=1C475=0,K356=0,C82=1,C476=1C475=0,K356=0,C82=1,C476=009G13=0G13=110offs=offs=offs=offs=offs=offs=offs=offs=offs=offs=offs=14opm=00opm=01opm=10opm=1116opp=0opp=118C724=0,C725=0,C760=0,C763=0C724=0,C725=0,C760=1,C763=0C724=0,C725=0,C760=0,C763=1C724=0,C725=

27、0,C760=1,C763=13.2.4 SPI接口的逻辑综合逻辑综合是指从设计的高层次向低层次转换的过程,是一种自动设计的过程,即用Verilog HDL语言描述的程序经过优化转化成所用单元库的器件列表以及相对应的关系。可以是网表的形式,也可以是图表的形式。综合不是单纯的映射,更重要的是整体优化。一般的综合过程,其输入为RTL设计,经过转换和优化后得到优化后的门级网表。在布局布线之前,设计者可以通过逻辑综合优先考虑约束问题,尽早发现并解决设计出现的违规,不将其带入物理设计中。施加不同的约束条件,可以满足不同的设计要求。在时序驱动的设计中,优先考虑时序要求,其次为面积要求。逻辑综合可分为以下步

28、骤31:(1)转译(Translation):读入电路的RTL级描述,将其翻译成所对应的功能块以及功能块之间的拓扑结构。在综合器内部生成不作任何的逻辑重组和优化的布尔函数表达式。(2)优化(Optimization):基于所施加的面积和时序的约束条件,综合器按照一定的算法对转译结果进行逻辑重组和优化。(3)映射(Mapping):根据所施加的时序和面积的约束条件,在综合器和目标工艺库(Target Technology)中搜索符合条件的单元来构成实际电路。逻辑综合所需要的输入文件有RTL级的代码、约束条件以及所对应的综合库。输出文件是描述逻辑单元互连关系的网表。如下图所示:图3-10 逻辑综合

29、步骤本文所设计的SPI接口使用Synopsys公司的Design Complier软件进行综合,采用chartered 0.18um的深亚微米级综合库,对整个设计的参数进行了试验和调整,使其具有更小的面积和更快的速度。SPI接口的逻辑综合主要解决以下几个问题:设置综合环境、设置设计约束、选择编译策略以及制定出现时序违规后的解决方案。 综合环境的设置SPI接口的综合环境的设置要在进行综合之前进行,主要包括工艺偏差、电压和温度范围、必需的驱动强度和驱动类型等。工艺偏差(Process Deviation)是指在流片的阶段,晶圆(Wafer)在流水线上要经过几十道工序,这些工序在控制上

30、会有一些偏差,这些偏差导致器件的性能的变化。一般在逻辑电路上表现为信号延时或者驱动能力的变化。同样,当温度变化时会导致沟道电流强度变化,从而影响逻辑电路的驱动能力和信号延时。当电压比较高时,信号延时变小、逻辑电路单元的驱动能力增强,从而可以运行在较高的工作频率下。综合环境属性的设置脚本如下表所示:表3-5 综合环境属性脚本设置#Environment Attributeset_operating_conditions -library scx_csm_18ic_ss_1p62v-125cset_wire_load_model -name csm18_w10 -library scx_csm_1

31、8ic_ss_1p62v-125cset_driving_cell -lib_cell INVX1 -pin Y -from_PIN A -library scx_csm_18ic_ss_1p62v-125c nrstset_load 10 nrst首先对SPI进行操作环境设置,包括设计的工艺、电压和温度条件(set_operating_conditions)。综合库包括最好、典型以及最差环境,在综合时要使用最差环境,所以选择scx_csm_18ic_ss_1p62v-125c库文件,以最大建立时间(setup time)来优化设计。线负载模型(set_wire_load_model)可以对各

32、个模块的线网负载进行正确的建模,使用较宽松的线负载模型,可以为物理设计提供较充裕的时序空间,避免影响到布局布线后的时序收敛,导致综合迭代次数增加。线负载模式(set_wire_load_mode)一共有三种,即顶部(TOP)、依附(Enclosed)、分割(Segmented)。本文所选用的综合库默认为顶部模式,就不需要在脚本中另外设置。本文将库单元INVX1设置为驱动单元(set_driving_cell),使DC根据输入驱动来计算输入的跳变时间,进而计算路径时序。DC需要知道输出单元所驱动的全部电容负载,以便准确的计算输出电路的时序。默认情况下,DC假设所有端口的负载为0。可以通过set_

33、load命令给端口电容负载设置一个常数,此处设为10pF。 时序约束设置单纯的映射对综合来说是远远不够的,更重要的是设计的整体优化,这就需要为综合规定必要的面积、速度、功耗等设计约束,从而使优化有所依据。非时钟信号的时序约束包括接口约束和内部约束。接口约束包括建立时间(setup time)、保持时间(hold time)等。内部约束包括输入延时(set_input_delay)、输出延时(set_output_delay)、假路径(set_false_path)、多周期路径(set_multicycle_path)等。时序单元(sequential cell)的建立时间是在时钟

34、信号的有效沿到来之前,数据输入信号必须到达的最小时间长度,以保证该单元可以正确工作。建立时间起点为数据信号变换到VDD的50%,终点为时钟信号有效沿变换到VDD的50%33。时序单元的保持时间是在时钟信号的有效沿或其他特定信号到来之后,数据输入信号必须保持稳定的的最小时间长度。起点为时钟信号有效沿变换到VDD的50%,终点为数据信号有效沿变换到VDD的50%为33。SPI接口的时钟约束条件设置脚本如下表所示:表3-6 时钟约束条件设置脚本#Clock Definementcreat_clock -name clock clk #Timeing Constrainsset_input_delay

35、 16 -clock clock all_inputsset_output_delay 16 -clock clock all_outputs#Clock_straintscreat_clock -period 40 -waveform 0 20 clkset_dont_touch_network clkset_drive 0 clkset_clock_uncertainty 0.1 get_clocks clockset_clock_latency 0.1 get_clocks clockset_dont_touch get_nets nrstset_ideal_network get_ne

36、ts nrst脚本中,定义了时钟名,设置了输入端口上升延迟为 40%,即16ns。输出端口上升延迟也为16ns。设置sclk时钟周期为40ns,上升沿从0ns开始,下降沿从20ns开始。set_clock_uncertainty 选项模拟了时钟抖动。同时还设置了最大的时钟驱动,这里假设时钟驱动能力无限大,实际的时钟结构可以由布局布线工具通过时钟树综合实现。 设计规则约束设置设计规则需要对一些物理参数进行设置,比如0-1(1-0)跳变时间、电容、扇入扇出。这些参数之间是相互影响相互联系的。如果扇出过大,会导致电容过大。而电容过大,会导致充放电时间过长,也就是0-1(1-0)跳变时间

37、过长。要在工艺库器件的参数范围内进行设计规则的约束设置。一共有三种设计规则的约束:最大电容(max capacitance)、最大扇出(max fanout)、最大跳变(max transition)。三者相互联系,相互影响,用来控制设计中的缓冲(buffering)。SPI接口的设计规则约束设置的脚本如下表所示:表3-7 设计规则约束脚本#Design Rules Constrainsset_max_trainsition 3 nrstset_max_capacitance 10 nrstset_max_fanout 75 nrst 编译策略根据设计的结构和定义,选择最合适的编

38、译策略。对于少于10K门的设计,采用自顶向下的层次式编译。整个设计被读入并编译,然后基于设计指标,只需在顶层应用约束和属性,通过对整个设计进行优化,就可以得到理想的结果。使用时序预算(Time Budgeting)来编译根据每个模块的时序要求来划分的设计。设计者有包括内部模块的时序需求在内的整个设计的时序预算。通过手工规定每个模块的时序需求,从而为每个单独的模块产生单独的综合脚本。此时,综合通常采用自底向上的方法。时序预算编译方案适合于大型设计,由于它使用独立的脚本,因此更易于管理设计。即使对子模块添加改动,也不需要重新对整个设计进行综合。它还可以对单个模块进行优化得到较好的结果。对于内部模块

39、没有很好定义的大型设计,使用重新综合编译。它不受硬件内存的限制,允许模块之间的时序预算,但需要对顶层设计进行约束,并且预先编译子模块。子模块再使用顶层约束来规定特性,这样可以有效地传播时序信息从顶层到子模块。通过执行脚本,为每个子模块产生各自的约束文件,接着用这些文件对个子模块进行重新编译。由于可以自由进行子模块之间的时序预算,且占用内存小,子模块之间的优化可得到高质量的结果,产生单独的可被设计者修改的脚本。本文采用自顶向下的层次式编译方案,因为设计的SPI接口规模较小,且时钟网络较简单。 SPI接口综合的面积报告分析SPI的面积报告如下图所示,组合逻辑面积:2794.18,内部

40、连线面积为40786.88,总面积为51694.14。符合预期的要求。表3-8 综合后的面积分析报告*Report : areaDesign : spi_slaveVersion: Z-2007.03-SP2*Library(s) Used: scx_csm_18ic_ss_1p62v_125cCombinational area: 4790.Noncombinational area: 6755.Net Interconnect area: 47413. Total cell area: 11545.Total area: 58959.* End Of Report * SPI

41、接口综合的时序报告分析时序分析主要用来显示单个路径在每个路径组中的最坏时序迟滞。时序分析报告中包含:路径起点、终点和中间点;路径上每个点增加和积累的延迟;数据最终到达终点的时间和数据输出应该所需的时间;建立时间迟滞,即所需时间与到达时间之差。由表3-9可知,路径时序符合要求,并且有21.45ns的时序裕量。表3-9 综合后的时序分析报告*Report : timing -path full -delay max -max_paths 1 -sort_by groupDesign : spi_slaveVersion: Z-2007.03-SP2*Operating Conditions: ss

42、_1p62v_125c Library: scx_csm_18ic_ss_1p62v_125cWire Load Model Mode: top Startpoint: csb (input port clocked by clock) Endpoint: addr_reg8 (rising edge-triggered flip-flop clocked by clock) Path Group: clock Path Type: max Des/Clust/Port Wire Load Model Library - spi_slave csm18_wl10 scx_csm_18ic_ss

43、_1p62v_125c Point Incr Path - clock clock (rise edge) 0.00 0.00 clock network delay (ideal) 0.10 0.10 input external delay 16.00 16.10 f csb (in) 0.00 16.10 f U14/Y (NAND2BX4) 0.36 16.46 f U29/Y (OAI21X1) 1.01 17.47 r addr_reg8/E (EDFFX1) 0.00 17.47 r data arrival time 17.47 clock clock (rise edge)

44、40.00 40.00 clock network delay (ideal) 0.10 40.10 clock uncertainty -0.10 40.00 addr_reg8/CK (EDFFX1) 0.00 40.00 r library setup time -1.08 38.92 data required time 38.92 - data required time 38.92 data arrival time -17.47 - slack (MET) 21.45* End Of Report * 综合后得到的电路图下图为综合后的整体电路图:图3-11 整体电路

45、图3.3 SPI接口的仿真与验证仿真与验证是芯片设计中重要环节。随着技术的快速进步,芯片上市周期越来越短,这就需要提高芯片的设计效率以缩短产品研发周期。而在芯片设计流程中,仿真验证所需时间已经占整个设计周期的70%,甚至高达85%,因此仿真验证成为芯片设计的主要瓶颈。集成电路的验证分为功能验证、时序验证、物理验证和可测试性验证等。本章将介绍SPI接口的功能验证。功能验证方法主要采用基于仿真的验证方法。本文采用仿真的验证方法来验证SPI接口的功能正确性。对芯片功能的验证可以分为三个阶段:RTL级验证、全芯片验证和扩展验证34。RTL级验证通常由模块的设计者进行,运行大量简单的测试方案,保证该模块可以与其他功能模块很好地集成在同一芯片上。全芯片验证的目的是保证可以覆盖功能测试计划中的所有测试目标。扩展验证目的是发现设计中所有角落的错误。由于测试向量集不能预先确定,并且可能延续到版图设计阶段,因此这个阶段相对较长。本章将介绍RTL级的验证。3.3.1 SPI接口的RTL级仿真及结果RTL级设计是对各个功能模块进行寄存器传输级的描述,系统的行为功能由寄存器之间的连接关系所实现的逻辑来承载。RTL级仿真的主要目标是完成逻辑功能的验证。仿真的输入是不含任何延迟的源代码程序。RTL级仿真

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论