CN115080489A - 用于spi接口的传播延迟补偿 - Google Patents

用于spi接口的传播延迟补偿 Download PDF

Info

Publication number
CN115080489A
CN115080489A CN202210219031.0A CN202210219031A CN115080489A CN 115080489 A CN115080489 A CN 115080489A CN 202210219031 A CN202210219031 A CN 202210219031A CN 115080489 A CN115080489 A CN 115080489A
Authority
CN
China
Prior art keywords
spi
bit
client
host
transmission
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210219031.0A
Other languages
English (en)
Inventor
克里斯滕·N·莫根森
M·谢弗里耶
M·施特布勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of CN115080489A publication Critical patent/CN115080489A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/122Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware performs an I/O function other than control of data transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/374Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a self-select method with individual priority code comparator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Information Transfer Systems (AREA)

Abstract

本申请的实施例涉及用于SPI接口的传播延迟补偿。一种方法包含在SPI客户端装置(104)处接收芯片选择信号(108)。所述方法还包含响应于接收到所述芯片选择信号(108),将SPI发射的第一位发射到SPI主机装置(102),其中所述SPI发射的所述第一位至少部分地基于SPI信道的环路传播延迟(106)而延迟发射。所述方法包含在所述SPI客户端装置(104)处接收时钟信号(110)。所述方法还包含响应于接收到所述时钟信号(110),将所述SPI发射的第二位发射到所述SPI主机装置(102)。

Description

用于SPI接口的传播延迟补偿
技术领域
本申请的实施例涉及串行外围接口(SPI),且特定来说涉及一种用于SPI接口的传播延迟补偿的方法和系统。
背景技术
串行外围接口(SPI)是用于短距离通信(包含在嵌入式系统中)的同步串行通信接口规范。SPI装置在全双工模式中通信,其中一个装置指定为SPI主机且其余装置指定为SPI客户端。SPI系统使用一个SPI主机,所述一个SPI主机与一或多个SPI客户端通信。SPI系统使用由SPI主机提供的共同时钟。SPI主机将时钟信号和其它信号经由数据信道发射到SPI客户端。SPI客户端经由数据信道将数据发射到SPI主机。
发明内容
根据本公开的至少一个实例,一种方法包含在SPI客户端装置处接收芯片选择信号。所述方法还包含响应于接收到芯片选择信号,将SPI发射的第一位发射到SPI主机装置,其中SPI发射的第一位至少部分地基于SPI信道的环路传播延迟而延迟发射。所述方法包含在SPI客户端装置处接收时钟信号。所述方法还包含响应于接收到时钟信号,将SPI发射的第二位发射到SPI主机装置。
根据本公开的至少一个实例,一种系统包含被配置成接收芯片选择信号的SPI客户端装置。响应于接收到芯片选择信号,SPI客户端装置被配置成发射SPI发射的第一位。SPI客户端装置被配置成接收时钟信号。响应于接收到时钟信号,SPI客户端装置被配置成发射SPI发射的第二位。
根据本公开的至少一个实例,一种方法包含根据第一时钟信号将芯片选择信号从SPI主机装置发送到SPI客户端装置。所述方法还包含响应于在SPI客户端装置处接收到芯片选择信号,将SPI发射的第一位从SPI客户端装置发射到SPI主机装置。所述方法包含将第一时钟信号从SPI主机装置发送到SPI客户端装置。所述方法还包含响应于在SPI客户端装置处接收到第一时钟信号,将SPI发射的第二位从SPI客户端装置发射到SPI主机装置。所述方法包含根据第二时钟信号在SPI主机装置处接收SPI发射的第一位和第二位。
附图说明
为了详细描述各种实例,现将参考附图,附图中:
图1A是根据各种实例的SPI系统的框图。
图1B是根据各种实例的SPI系统中的波形的时序图。
图2A是根据各种实例的SPI系统的框图。
图2B是根据各种实例的SPI系统中的波形的时序图。
图3是根据各种实例的用于提供时钟信号的逻辑电路。
图4是根据各种实例的波形的集合。
图5是根据各种实例的用于传播延迟补偿的方法的流程图。
图6是根据各种实例的用于传播延迟补偿的方法的流程图。
具体实施方式
SPI使用由SPI主机提供的共同时钟信号。随着时钟信号和其它数据从SPI主机发射到SPI客户端,信道上在SPI主机和SPI客户端之间可能发生传播延迟。所述传播延迟可能由缓冲器、隔离器、物理迹线本身或若干其它原因导致。如果时钟信号和数据在从SPI主机发射到SPI客户端时延迟相同的延迟量,则SPI客户端处时钟信号和数据的经延迟到达通常不会导致SPI客户端处的错误。然而,当SPI客户端将数据发送回到SPI主机时,SPI主机处接收的数据相比于由SPI主机提供的时钟信号延迟(归因于传播延迟)。此总延迟取决于信道所导致的任何传播延迟。
如果来自SPI客户端的数据当在SPI主机处接收时延迟,则可能发生数据错误。举例来说,如果在SPI主机处在时钟信号的特定边沿(上升或下降)处对数据进行取样,但数据延迟超过时钟循环的1/2,则数据不能到达SPI主机且不可在时钟信号的适当边沿处取样。一个解决方案是减小SPI时钟频率使得SPI传播延迟小于时钟循环的1/2。然而,这种解决方案增加了时延且减少数据处理量。另一解决方案是插入额外传播延迟以使来自SPI客户端的数据与适当的时钟边沿同步。利用这种解决方案,从SPI客户端传递的数据在SPI主机处的第一时钟边沿处不可用,因此数据表现为在SPI主机处向右移位一个位,且传递的最后数据位丢失。
在本文的实例中,从SPI主机发射到SPI客户端的芯片选择(CS)信号在SPI客户端处充当第一时钟信号。CS信号通常用于在一些应用中启用SPI客户端。此处,在SPI主机将任何额外数据发送到SPI客户端之前,CS信号的下降沿(或另一类型的转变)在SPI客户端处充当第一时钟信号。SPI客户端在CS信号的下降沿处将其第一数据位发射回到SPI主机,而非等待来自SPI主机的第一时钟(SCLK)循环。接着,随着SCLK的第一循环到达SPI客户端,SPI客户端在SCLK的适当边沿(上升或下降)上在第一位之后发送后续位。作为实例,来自SPI客户端的第二位在SCLK的第一循环处发射,来自SPI客户端的第三位在SCLK的第二循环处发射,等等。以此方式,从SPI客户端发射的数据前进一个位。如果总环路延迟为一个SCLK循环,则来自SPI客户端的数据在适当的时间到达SPI主机。因为来自SPI客户端的第一位在第一SCLK循环处到达SPI主机,所以此技术补偿延迟的一个时钟循环。本文中的实例允许恢复从SPI客户端发射到SPI主机的第一位,而此位原本在先前解决方案中丢失。本文的解决方案可使用硬件、软件或两者的组合在SPI客户端处实施。
图1A是根据本文的各种实例的SPI系统100。SPI系统100包含SPI主机102和SPI客户端104。环路延迟106表示信道上的总传播延迟。传播延迟是信号到达其目的地所花的时间。此延迟可能由SPI系统中的硬件(例如,SPI外围设备本身、SPI信道中的反相器或缓冲器)、由物理迹线本身或其组合导致。环路延迟106表示信号从SPI主机102发送到SPI客户端104且回到SPI主机102的总传播延迟。
SPI信道由四条线表示:CS 108、SCLK 110、MOSI(主出从入,Master Out SlaveIn)112和MISO(主入从出,Master In Slave Out)114。在本说明书中,四条线的名称用以指代信号线以及SPI主机102和SPI客户端104上的连接到那些线的相应引脚。CS 108是由SPI主机102使用以选择特定SPI客户端104来开始通信的控制线。CS 108将SPI主机102上的CS引脚连接到SPI客户端104上的CS引脚。在其中多个SPI客户端104连接到SPI主机102的系统中,CS 108允许SPI主机102发送和接收数据或命令进出特定SPI客户端104。在此实例中,仅展示一个SPI客户端104,但多个SPI客户端104可存在于其它实例中,因此还可使用多个CS信号。在一实例中,CS 108是低电平有效(active low)逻辑,且保持高(例如,处于高电压或逻辑电平1),这使SPI客户端104从SPI信道断开连接。在另一实例中,CS 108可为高电平有效(active high)逻辑。在数据从SPI主机102发送到SPI客户端104之前,SPI主机102使CS108为低(例如,处于低电压或逻辑电平0),这激活SPI客户端104。当SPI主机102完成与SPI客户端104通信时,使CS108再次为高。
SCLK 110由SPI主机102提供。时钟信号经由SCLK 110提供到SPI客户端104(和任何其它SPI客户端104)。在本文的一些实例中,时钟频率可为10MHz、20MHz或40MHz。随着时钟频率变高,环路延迟106提出较大挑战。在10MHz时钟频率下,50纳秒的环路延迟106表示时钟循环的1/2。如上所述,1/2时钟循环或更长的环路延迟可能导致数据错误。在40MHz时钟频率下,12.5纳秒的环路延迟106表示时钟循环的1/2。因此,随着时钟频率增加,较小环路延迟106可能增加数据错误的机率。
MOSI 112是用于将数据从SPI主机102发送到SPI客户端104的数据线。MOSI 112将SPI主机102上的MOSI引脚连接到SPI客户端104上的MOSI引脚。MISO 114是用于将数据从SPI客户端104发送到SPI主机102的数据线。MISO 114将SPI主机102上的MISO引脚连接到SPI客户端104上的MISO引脚。
作为SPI主机102和SPI客户端104之间的通信的实例,SPI主机102在CS 108上以逻辑0选择SPI客户端104。在每一时钟循环期间,SPI主机102可在MOSI 112上将位发送到SPI客户端104,且SPI客户端104可在MISO 114上将位发送到SPI主机102。发射可涉及给定字大小(例如八个位)的两个移位寄存器(SPI主机102中一个,SPI客户端104中一个,图1A中未图示)。在适当的时钟边沿(上升或下降)上,SPI主机102和SPI客户端104两者移出一个位且在适当的发射线(MOSI 112或MISO 114)上将其输出到另一个。在下一时钟边沿上,在SPI主机102和SPI客户端104两者处,所述位从发射线(MOSI 112或MISO 114)取样且被设定为移位寄存器的新的最低有效位。在寄存器位已经移出和移入之后,SPI主机102和SPI客户端104已经交换寄存器值。如果更多数据待交换,则移位寄存器重新加载且过程重复。发射可继续持续任何数目的时钟循环。当发射完成时,SPI主机102可停止双态切换SCLK 110,且还可在CS 108上以逻辑1取消选择SPI客户端104。
在其它实例中,可使用其它大小的字,例如十二位字或十六位字。如果存在耦合到SPI主机102的多个SPI客户端104,则未经由CS 108激活的SPI客户端104忽略SCLK110和MOSI 112信号,且不驱动其相应的MISO 114线。
SPI客户端104包含延迟补偿模块116。延迟补偿模块116包含适当的硬件和/或软件以使SPI客户端104能够补偿环路延迟106所导致的传播延迟。具有延迟补偿模块116的SPI客户端104与现有SPI系统向后兼容。在此实例解决方案中,SPI主机102可以是任何标准SPI主机102,而无修改。在此实例中,在SPI客户端104处使用延迟补偿模块116执行针对环路延迟106的补偿。
作为实例,延迟补偿模块116使用SPI客户端104处接收的CS 108的下降沿(或在另一实例中,另一转变)来将第一位发射到SPI主机102。SPI主机102在SPI数据传递开始之前至少一个时钟循环驱动CS 108为低。接着,随着SCLK 110到达SPI客户端104,SPI客户端104在SCLK 110的适当边沿(上升或下降)上发送第一位之后的后续位。延迟补偿模块116还可添加可配置延迟使得总环路延迟106为一个时钟循环。如果总环路延迟106为一个SCLK 110循环,则来自SPI客户端104的数据在适当的时间到达SPI主机102。并且,对于来自SPI客户端104的大小N位的发射,延迟补偿模块116可在N-1时钟循环之后“消隐”最后时钟信号,使得仅N位发射到SPI主机102,而非N+1位。N是SPI数据宽度(例如,八个位、十六个位等)。N-1个时钟循环用于单向传递,其中SPI客户端104将数据传递到SPI主机102。在一些实例中,双向传递可使用不同数目的时钟循环。延迟补偿模块116的实例在下图中描述。
图1B是根据各种实例的波形150的集合。波形150是相对于时间t绘图,且表示当其由SPI主机102发射或接收时的信号。波形152是SCLK 110上发射的时钟信号的实例。波形152是由SPI主机102提供的周期性时钟波形。波形152在预定速率下在高和低状态之间振荡,所述预定速率例如在一些实例中为10MHz或20MHz。波形152的上升沿或下降沿可用于对数据进行取样。在此实例中,在波形152的上升沿处对数据进行取样。
波形154是MOSI 112上发射的MOSI信号的实例。波形154表示从SPI主机102发射到SPI客户端104的数据。在此实例中,波形154的数据在波形152的下降沿上发射(例如,在时间t1、t3、t5和t7处)。
波形156是MISO 114上发射的MISO信号的实例。波形156表示从SPI客户端104发射到SPI主机102的数据。波形156表示波形在SPI主机102处被接收的定时。波形156是不利用根据本文的实例的延迟补偿而发射的数据的实例。在波形156的实例中,总环路延迟106为1/2时钟循环。如所展示,波形156中的数据在数据被预期之后1/2时钟循环到达SPI主机102。波形156中的数据在时间t2、t4、t6和t8处改变状态。这些时间与波形152(SCLK 110)的上升沿一致。在此实例中,数据在波形152的上升沿处取样。在无延迟补偿的情况下,波形156在对数据取样时改变状态,这可能导致数据错误。
波形158是如上文所描述具有SPI客户端104处执行的延迟补偿的MISO 114上发射的MISO信号的实例。波形158表示波形在SPI主机102处被接收的定时。在利用延迟补偿的情况下,波形158中的数据在适当的时间到达SPI主机102,使得数据可在波形152的上升沿上取样(例如,在时间t2、t4、t6和t8处)。在那些时间处,波形158不改变状态,这降低数据错误的机率。
图2A是根据本文中的各种实例的SPI系统200。在图1A和2A中,相同标号表示相同组件。SPI主机102经由SPI信道耦合到SPI客户端104。数据线MOSI 112具有SPI主机102和SPI客户端104之间的延迟202A。数据线SCLK 110具有SPI主机102和SPI客户端104之间的延迟202B。数据线CS 108具有SPI主机102和SPI客户端104之间的延迟202C。数据线MISO 114具有SPI客户端104和SPI主机102之间的延迟202D。SPI环路延迟106是SPI信道上的总传播延迟。
移位寄存器204是存储在MOSI 112上发射的来自SPI主机102的数据的SPI客户端104中的寄存器。在此实例中,在MOSI 112上发射N位的发射。移位寄存器206是存储将在MISO 114上从SPI客户端104发射到SPI主机102的N位数据的SPI客户端104中的寄存器。
实例操作由SPI主机102和SPI客户端104执行。在此实例中,子模块210、212、214和216执行所述操作。子模块210、212、214和216可包含任何适当的硬件和/或软件以执行所述操作。子模块210、212、214和216可使用现有SPI主机102或SPI客户端104中的现有硬件和/或软件,或可实施专门设计的硬件和/或软件来执行实例操作。实例操作开始于SPI主机102处,其中子模块210在SPI主机102开始SPI传递之前至少一个SPI时钟循环设定CS 108为低。设定CS 108为低用以选择SPI客户端104供SPI主机102开始与之通信。在SPI客户端104处,子模块212在CS 108上接收低信号。SPI客户端104被配置成在CS 108的下降沿处将第一数据位发射到SPI主机102。SPI客户端104在MISO 114上发射第一数据位和后续位。
在第一数据位在CS 108的下降沿上从SPI客户端104发射到SPI主机102之后,当在SPI客户端104处接收到SCLK 110的下降沿时,在SCLK 110的下降沿上发射后续位。子模块212在SPI客户端104处接收SCLK 110,且在SCLK 110的下降沿上发射所述位。作为实例,在SCLK 110的第一下降沿上发射第二位,且在SCLK 110的第二下降沿上发射第三位,等等。在此实例中使用SCLK 110的下降沿,但在其它实例中可使用上升沿。
如果MISO 114数据传播延迟小于一个SPI时钟循环,则SPI客户端104装置处的子模块214在其在MISO 114上发射数据之前将相应延迟X添加到SCLK 110,使得SPI主机102处的所得延迟将大致等效于一个SPI时钟循环。子模块214执行此步骤,使得在SPI主机102正期望接收数据的适当时间(例如,基于时钟循环,不太早也不太迟)在SPI主机102处接收数据位。在SPI主机102处生成SCLK 110,且SPI主机102以相对于SCLK 110的定时操作。在此实例中,在SPI客户端104处执行针对环路延迟106的补偿。
可使用任何合适的硬件和/或软件执行在SPI客户端104发射数据之前添加相应延迟X。作为实例,如果环路延迟106为0.7个SPI时钟循环,则由子模块214添加的延迟X应为0.3个SPI时钟循环(X=(SPI时钟循环)-(SPI环路延迟))。在0.7个SPI时钟循环的环路延迟106以及由子模块214添加的0.3个SPI时钟循环的额外延迟X的情况下,SPI主机102处的总延迟为1.0个SPI时钟循环。1.0个SPI时钟循环的总延迟确保从SPI客户端104发射的数据在适当的时间到达SPI主机102以进行取样。在一实例中,在CS 108的下降沿上发射的来自SPI客户端104的第一数据位在SPI主机102设定CS 108为低之后大致一个SPI时钟循环到达SPI主机102。因为在SPI主机102开始SPI传递之前至少一个SPI时钟循环将CS 108设定为低,所以在SCLK 110切换状态且对数据位取样之前在SPI主机102处接收从SPI客户端104传递的数据位。因此,在SPI主机102处对数据位进行取样不在SCLK 110切换状态时发生,而是在SCLK 110不在切换状态时发生,这降低数据错误的机率。
在另一实例中,如果环路延迟106为0.5个SPI时钟循环,则相应延迟X将为0.5个SPI时钟循环,使得总延迟再次为1.0个时钟循环。任何适当的硬件或软件机制可用于创建相应延迟X。可通过延迟时钟信号SCLK 110来创建延迟。在另一实例中,可通过延迟MISO114上的数据来创建延迟。可通过使用延迟缓冲器、RC滤波器或任何其它合适的硬件将延迟在外部添加到SPI客户端104。可配置RC滤波器或可配置环形振荡器可在一些实例中使用以创建延迟。下文描述产生相应延迟X的硬件的实例。
在SPI客户端104处,在SPI发射的数据位中的每一个已经从SPI客户端104传递之后,来自SCLK 110的最后时钟循环被消隐,使得所传递的位数目为N而非N+1,其中N是SPI传递的大小。子模块216可使用任何适当的硬件和/或软件消隐最后时钟循环。下文描述消隐最后时钟循环的硬件的实例。
在一实例中,N为八,这意味着SPI发射为八个数据位。因此,SPI主机102在SCLK110上将八个时钟循环发送到SPI客户端104。SPI客户端在CS 108变低时将八个位中的第一位发送到SPI主机102,且接着在SCLK 110上在前七个时钟循环上发送8位发射中的最后七个位。然而,SPI主机102已经在SCLK 110上将八个时钟循环发送到SPI客户端104。因此,在SPI客户端104已经发射SPI发射的所有八个位之后,将在SPI客户端104处接收第八时钟循环。如果SPI客户端104也在第八SCLK时钟循环上发出数据位,则SPI客户端104将发送九个数据位,而非八个。因此,SCLK 110上的第八时钟循环应“消隐”,使得SPI客户端104仅发送八个数据位而非九个,其中在此实例中,八个数据位是SPI发射的大小。
图2B是根据各种实例的SPI系统中的波形的图式。图2B的左侧是SPI主机102处的波形。图2B的右侧是SPI客户端104处的波形。在SPI主机102处,CS 108在时间t1处断言为低。CS 108在SPI主机102将SCLK 110发射到SPI客户端104(这开始SPI发射)之前至少一个时钟循环断言为低。
SPI客户端104处的定时在图2B的右侧展示。在SPI客户端104处,CS 108的下降沿在时间tA处发生。时间tA在时间t1之后在SPI主机102上发生。时间tA在时间t1之后发生的时间长度取决于环路传播延迟。在时间tA处,在SPI客户端104处,SPI客户端104在MISO 114上发射SPI发射的第一位。块232表示时间tA处第一位的发射。SPI客户端104使用任何适当的硬件和/或软件在CS 108的下降沿上发射SPI发射的第一位,如上文相对于子模块212所描述。
在时间tB处,在SPI客户端104处,接收SCLK 110的下降沿。在此第一下降沿处,在MISO 114上将第二位发射到SPI主机102。块234表示MISO 114上SPI发射的第二位的发射。在SPI主机102处,时间tB在时间t2之后发生。在时间tC处,在SPI客户端104处接收SCLK 110的上升沿。在时间tD处,在SPI客户端104处接收SCLK 110的下降沿。在此下降沿处,SPI客户端104在MISO 114上发射SPI发射的第三位。块236表示第三位的发射。在最后数据位被取样之后,CS 108再次断言为高,这结束SPI主机102和SPI客户端104之间的通信。虽然图2B未示出SCLK 110的最后时钟循环的消隐,但下文在图3和4中描述的其它实例在SCLK 110上执行消隐。
图2B的左侧展示SPI主机102处的定时。在时间t2处,在SPI主机102处,发射SCLK110的下降沿。SCLK 110使下降沿和上升沿交替,如所展示。时间t2为时间t1之后至少一个SPI时钟循环。并且,在大致时间t2处,SPI主机102在MISO 114上从SPI客户端104接收第一数据位。如上文所描述,SPI客户端104在接收CS 108的下降沿之后在MISO 114上发射第一数据位。
在时间t3处,SCLK 110的上升沿在SPI主机102处发生。在此实例中,在SCLK 110的上升沿上对数据进行取样。在时间t3处,SPI主机102在MISO 114上对来自SPI客户端104的第一数据位进行取样。块230表示时间t3处MISO 114的取样。在时间t4处,SCLK 110的下降沿发生,且在MISO 114上接收来自SPI客户端104的第二数据位。在时间t5处,SCLK 110的上升沿发生,且SPI主机102在MISO 114上对来自SPI客户端104的第二数据位进行取样。过程继续,直至来自SPI发射的所有N个数据位已经发送到SPI主机102且被取样。在最后数据位被取样之后,CS 108再次断言为高,这结束SPI主机102和SPI客户端104之间的通信。
如图2B所示,在SPI主机102处在SCLK 110的第一上升沿上对SPI发射的第一数据位进行取样,尽管SPI信道具有环路传播延迟。如上文所描述的子模块212、214和216在SPI客户端104处执行步骤。后续位也在SCLK 110的上升沿处取样。最后时钟循环可被消隐,使得适当数目的位发射到SPI主机102。
图3是根据本文的各种实例的用于提供时钟信号的逻辑电路300。任何合适的电路或任何合适的软件可在其它实例中使用以提供本文的实例中使用的CS和SCLK信号。
电路300包含CS 108和SCLK 110作为输入。CS 108利用反相器302反相,使得SPI主机102处CS 108的下降沿在反相器302的输出处反相到上升沿。反相器302的输出耦合到NAND门304的第一输入。反相器302的输出还耦合到反相器306。反相器306的输出耦合到NAND门304的第二输入。NAND门304的输出是具有50%工作循环(50%高和50%低)的单个时钟脉冲。
NAND门304的输出耦合到AND门308的第一输入。SCLK 110耦合到AND门308的第二输入。AND门308将信号提供到OR门310的第一输入。CS 108耦合到OR门310的第二输入。OR门310提供由SPI客户端104使用的时钟信号。OR门310的输出称为SCLK_PRECOMP。SCLK_PRECOMP是预补偿的时钟信号,其类似于SCLK 110信号但具有开始处(SCLK 110的第一时钟循环之前)的额外时钟循环,其中所述额外时钟循环以CS 108创建。
当CS 108为低时,AND门308的输出由OR门310传递。也就是说,当CS 108为低时,OR门310的输出在SCLK 110为高时为高,且在SCLK 110为低时所述输出为低。当CS 108变高时,OR门310的输出为高。如果CS 108保持为高,则OR门310的输出始终为高,这用以消隐N个时钟循环之后的最后时钟循环(例如,保持SCLK_PRECOMP高)。也就是说,断言CS 108为高用以在适当的时间消隐最后时钟循环,使得提供N个时钟循环而非N+1个时钟循环。
在此实例中,缓冲器312和314提供50纳秒的延迟,来模拟50纳秒的实例环路延迟106,这样做是为了创建下文图4中的实例波形。在缓冲器312和314添加延迟之后,缓冲器314处的信号输出为SCLK_PRECOMP_CLIENT,其是SPI客户端104处的经延迟的预补偿时钟信号。此信号由SPI客户端104使用以将SPI发射发射到SPI主机102。
图4是根据各种实例的波形400的集合。在一个实例中,波形400是图2A和3中生成的波形。图4的底部展示时间t(以纳秒计)。在此实例中,SPI时钟循环为100纳秒。并且,在此实例中,延迟在每一发射和接收方向中为50纳秒,因此总环路延迟106为100纳秒。
在一个实例中,波形410为SPI主机102处的CS 108(NCS_PRECOMP_HOST)。波形410开始为高,但在大致50纳秒处断言为低。如上文所描述,波形410在其在SPI客户端104处被接收时由SPI客户端104使用来发射SPI发射的第一数据位。
波形420为SPI主机102处的SPI时钟信号(SCLK_HOST)。波形420具有大致200纳秒处的第一下降沿,其为波形410变低之后至少一个时钟循环(在此实例中,大致1.5个时钟循环)。波形420在SCLK 110上从SPI主机102发射到SPI客户端104。在此实例中,展示四个时钟循环,且四个位(N=4)的SPI发射用作实例。因此,波形420具有四个下降沿和四个上升沿。
波形430为SPI客户端104处的SPI时钟信号(SCLK_CLIENT)。如图4中所见,波形430在波形420后方延迟。在此实例中,所述延迟为大致50纳秒,其为环路延迟106的值的一半,因为在所述实例中发射和接收方向中的延迟均为50纳秒。也就是说,SPI信道具有大致50纳秒的延迟供信号从SPI主机102行进到SPI客户端104。作为实例,波形420的第一下降沿在200纳秒处发生,而波形430的第一下降沿在250纳秒处发生。波形430等同于波形420,但延迟了50纳秒。
波形440为如由图3中的电路300产生的SPI主机102处的SCLK_PRECOMP信号。SCLK_PRECOMP信号具有时钟波形的形式,其中交替的高值和低值间隔开50纳秒。如上文所描述,波形440类似于SCLK_HOST信号(波形420)但具有开始处(SCLK_HOST的第一时钟循环之前)的额外时钟循环,其中所述额外时钟循环以CS 108创建。如图4中所展示,SCLK_PRECOMP(波形440)具有大致100纳秒处的第一下降沿,其为在200纳秒处具有其第一下降沿的波形420(SCLK_HOST)的第一下降沿之前的完整时钟循环。因此,波形440用作时钟信号,所述时钟信号可用于在波形430(SCLK_CLIENT)的第一下降沿到达SPI客户端104之前将SPI发射的第一数据位从SPI客户端104发射到SPI主机102。波形440具有四个下降沿和四个上升沿。
波形450为如由图3中的电路300模拟的SPI客户端104处的SCLK_PRECOMP_CLIENT信号。波形450类似于波形440(SCLK_PRECOMP)但归因于从主机到客户端的延迟而延迟了大致50纳秒。波形450是SPI客户端104用以在MISO 114上将SPI发射从SPI客户端104发射到SPI主机102的信号。在波形450的下降沿上,SPI客户端104将SPI发射的一个数据位发射到SPI主机102。第一位将在大致150纳秒处发射,其中每一后续位在此之后以100纳秒的间隔发射。
波形460为MISO_PRECOMP_CLIENT信号。波形450为MISO 114上发射的从SPI客户端104到SPI主机102的数据SPI发射。SPI发射的第一位在波形450的下降沿上在大致150纳秒处发射。在此实例中,第一位为低或逻辑零。第二位在大致250纳秒处发射(高或逻辑一),第三位在大致350纳秒处发射(低或逻辑零),且第四位在大致450纳秒处发射(高或逻辑一)。
波形470为MISO_PRECOMP_HOST信号,其为如SPI主机102处接收的来自波形460的SPI发射。波形470归因于客户端和主机之间的50纳秒延迟而在波形460后方延迟大致50纳秒。在SPI主机102处在大致200纳秒处接收SPI传递的第一位,其中每一后续位以100纳秒间隔接收。
由波形470表示的SPI发射在SPI主机102处通过波形420(SCLK_HOST)的上升沿取样。第一位在大致250纳秒处取样,其中每一后续位以100纳秒间隔取样。因此,与波形420同步接收波形470,且波形470中的数据可在SPI主机102处由波形420恰当地取样,即使当SPI信道上存在延迟时也如此。
在大致500纳秒处,波形410(CS 108)断言为高。如上文相对于图3所描述,当CS108断言为高时,时钟信号(波形440)消隐。当波形410在大致500纳秒处为高时,波形440此时也保持为高。在500纳秒处断言波形410为高确保在波形440上发射仅四个时钟循环。因此,在SPI客户端104处接收仅四个时钟循环(波形450),且将依照这四个时钟循环发射仅四个数据位(波形460)。
在上文描述的实例中,SPI主机102基于SPI发射的预期长度(例如,四个位)在适当的时间断言波形410为高。在另一实例中,计数器可用以在适当时钟循环数目之后使时钟信号消隐。
图5是根据各种实例的用于延迟补偿的实例方法500的流程图。方法500的步骤可以任何合适的次序执行。在一个实例中执行方法500的步骤的硬件和/或软件在上文的图1A和2A中描述。可在其它实例中使用任何适当的硬件和/或软件。
方法500开始于510,其中例如SPI客户端104等SPI客户端装置接收芯片选择信号。在本文的实例中,芯片选择信号由SPI客户端装置使用以开始SPI发射。
在520处,响应于接收到芯片选择信号,SPI客户端装置将SPI发射的第一位发射到SPI主机装置,其中SPI发射的第一位至少部分地基于SPI信道的环路传播延迟而延迟发射。在一实例中,SPI客户端104在例如MISO 114等SPI信道上方将SPI发射发射到SPI主机102。如果在此实例中需要值X的延迟,则SPI客户端104处的子模块214可在其在MISO 114上发射数据之前将相应延迟X添加到SCLK 110,使得SPI主机102处的所得延迟将大致等效于一个SPI时钟。在另一实例中,未经补偿的环路延迟可大致为一个SPI时钟。在这种情况下,在所述实例中不需要如上文所描述的延迟X(例如,延迟X为零)。
在530处,SPI客户端装置接收时钟信号。如上文相对于图4所描述,时钟信号在芯片选择信号之后至少一个时钟循环到达SPI客户端104。
在540处,响应于接收到时钟信号,SPI客户端装置将SPI发射的第二位发射到SPI主机装置。响应于在SPI客户端装置处接收到额外时钟信号,将SPI发射的后续位发射到SPI主机装置。
在另一方法中,为了补偿SPI主机102处的环路延迟,可使用SPI主机102处的两个时钟。第一时钟用于从SPI主机102发射数据,且第二时钟用于在SPI主机102处接收数据。第二时钟与所接收数据的定时对准,这考虑总环路传播延迟。第二时钟可对准到SPI系统的延迟一次,且接着被允许操作。第二时钟将正确地操作,只要系统中的延迟不显著改变即可。可以若干方式创建第二时钟,例如利用RC滤波器、环形振荡器,或通过使用高频时钟。第二时钟信号可使用任何合适的对准过程对准。此解决方案还可使用相对于位寄存器的调谐使得时钟恰当地操作。此解决方案在任何长度的延迟下工作,甚至是长于一个时钟循环的延迟。
在另一实例解决方案中,MISO 114上发射的数据可用于使时钟与数据对准。此解决方案可在启动时使用调谐操作调谐,且接着在数据路径长度改变(这导致路径延迟改变)的情况下调整。调谐系统的一个实例方法是将测试模式从SPI主机102发送到SPI客户端104且接着回到SPI主机102。迭代地调整第二时钟直至在SPI主机102处接收正确的模式。此时,系统经调谐且为操作做好准备。延迟可改变直至在SPI主机102处接收到错误。当接收到错误时,延迟已到达SPI时钟循环的二分之一。接着,控制器可自动调整第二时钟,且系统设计者不必执行那些步骤。实际上,可自动确定和调整延迟。此变型对于上述实例中的任一个自动调整所添加延迟X都是有效的,使得总环路延迟为SPI时钟循环的整数N倍。在上文的一些实例中N等于1,但N在其它实例中可以是任何整数值。
图6是根据各种实例的用于延迟补偿的实例方法600的流程图。方法600的步骤可以任何合适的次序执行。在一个实例中执行方法600的步骤的硬件和/或软件在上文的图1A和2A中描述。可在其它实例中使用任何适当的硬件和/或软件。
方法600开始于610,其中SPI主机装置根据第一时钟信号将芯片选择信号发送到SPI客户端装置。在一实例中,SPI主机102将芯片选择信号发送到SPI客户端104,如上文所描述。
方法600在620处继续,其中,响应于在SPI客户端装置处接收到芯片选择信号,SPI客户端装置将SPI发射的第一位从SPI客户端装置发射到SPI主机装置。第一位的发射可如上文相对于图2A所描述延迟,使得总延迟大致等于一个时钟循环。任何合适的机制可用于添加延迟。在一个实例中,SPI客户端104处的子模块214在其在MISO 114上发射数据之前将相应延迟X添加到SCLK 110,使得SPI主机102处的所得延迟将大致等效于一个SPI时钟。
方法600在630处继续,其中SPI主机装置将第一时钟信号发送到SPI客户端装置。可如上文相对于图3和4所描述发送第一时钟信号。在各种实例中,可使用第一时钟信号的上升沿或下降沿。
方法600在640处继续,其中响应于在SPI客户端装置处接收到第一时钟信号,SPI客户端装置将SPI发射的第二位发射到SPI主机装置。响应于在SPI客户端装置处接收到第一时钟信号的额外时钟信号,将SPI发射的后续位发射到SPI主机装置。
方法600在步骤650处继续,其中SPI主机装置根据第二时钟信号接收SPI发射的第一位和第二位。如上文所描述,第一时钟信号用于从SPI主机102发射数据,且第二时钟信号用于在SPI主机102处接收数据。第二时钟信号与所接收数据的定时对准,这考虑总环路传播延迟。第二时钟信号可调整到SPI系统的延迟一次,且接着被允许操作。此实例解决方案在任何长度的延迟下工作,甚至是长于一个时钟循环的延迟。
贯穿本说明书使用术语“耦合”。所述术语可以涵盖实现与本说明书一致的功能关系的连接、通信或信号路径。举例来说,如果装置A向控制装置B生成信号以执行动作,则在第一实例中装置A耦合到装置B,或在第二实例中装置A经由中间组件C耦合到装置B,条件是中间组件C大体上不更改装置A与装置B之间的功能关系,使得装置B经由由装置A生成的控制信号而受装置A控制。
“被配置成”执行任务或功能的装置可在由制造商制造时配置(例如,经编程和/或硬接线)成执行所述功能,和/或可在制造之后由用户配置(或可重新配置)成执行所述功能和/或其它额外或替代功能。所述配置可通过装置的固件和/或软件编程、通过装置的硬件组件和互连的构造和/或布局,或其组合。
本文中描述为包含特定组件的电路或装置可实际上适于耦合到那些组件以形成所描述的电路系统或装置。举例来说,被描述为包含一或多个半导体元件(例如晶体管)、一或多个无源元件(例如电阻器、电容器和/或电感器)和/或一或多个源(例如电压和/或电流源)的结构可实际上仅包含单个物理装置(例如,半导体裸片和/或集成电路(IC)封装)内的半导体元件,且可适于耦合到至少一些所述无源元件和/或源以在制造时或在制造之后例如由终端用户和/或第三方形成所描述的结构。
本文中所描述的电路可重新配置以包含更换的组件以提供至少部分类似于组件更换之前可用的功能性的功能性。
除非另外陈述,否则值前面的“约”、“大致”或“大体上”意味着所陈述值的+/-百分之10。在权利要求书的范围内,对所描述实例的修改是可能的,且其它实例是可能的。

Claims (20)

1.一种方法,其包括:
在串行外围接口(SPI)客户端装置处接收芯片选择信号;
响应于接收到所述芯片选择信号,将SPI发射的第一位发射到SPI主机装置,其中所述SPI发射的所述第一位至少部分地基于SPI信道的环路传播延迟而延迟发射;
在所述SPI客户端装置处接收时钟信号;以及
响应于接收到所述时钟信号,将所述SPI发射的第二位发射到所述SPI主机装置。
2.根据权利要求1所述的方法,其进一步包括执行调谐操作使得所述延迟与所述环路传播延迟的总和为所述时钟信号的时钟循环的整数N倍。
3.根据权利要求1所述的方法,其中所述延迟与所述环路传播延迟的组合大致等于所述时钟信号的一个时钟循环。
4.根据权利要求1所述的方法,其中所述SPI信道上的延迟缓冲器创建所述延迟。
5.根据权利要求1所述的方法,其进一步包括:
将所述SPI发射的N个位发射到所述SPI主机装置,其中响应于在所述SPI客户端装置处接收到第(N-1)时钟信号而发射第N位。
6.根据权利要求5所述的方法,其中所述SPI主机装置将N-1个时钟信号发射到所述SPI客户端装置。
7.根据权利要求1所述的方法,其中在接收所述时钟信号之前至少一个时钟循环接收所述芯片选择信号。
8.一种系统,其包括:
串行外围接口(SPI)客户端装置,其被配置成:
接收芯片选择信号;
响应于接收到所述芯片选择信号,发射SPI发射的第一位;
接收时钟信号;以及
响应于接收到所述时钟信号,发射所述SPI发射的第二位。
9.根据权利要求8所述的系统,其进一步包括:
SPI主机装置,其被配置成:
将所述芯片选择信号发送到所述SPI客户端装置;
从所述SPI客户端装置接收所述SPI发射的所述第一位;
将所述时钟信号发送到所述SPI客户端装置,所述时钟信号在所述芯片选择信号之后至少一个时钟循环发送;以及
从所述SPI客户端装置接收所述SPI发射的所述第二位。
10.根据权利要求8所述的系统,其中所述SPI客户端装置进一步被配置成:
延迟发射所述SPI发射的所述第一位,其中所述延迟至少部分地基于SPI信道的环路传播延迟。
11.根据权利要求10所述的系统,其中所述延迟与所述环路传播延迟的组合大致等于所述时钟信号的一个时钟循环。
12.根据权利要求8所述的系统,其中所述SPI发射的所述第一位响应于所述芯片选择信号中的转变而发射。
13.根据权利要求8所述的系统,其中所述SPI客户端装置进一步被配置成:
将所述SPI发射的N个位发射到所述SPI主机装置,其中响应于在所述SPI客户端装置处接收到第(N-1)时钟信号而发射第N位。
14.根据权利要求13所述的系统,其中所述SPI主机装置将N-1个时钟信号发射到所述SPI客户端装置。
15.一种方法,其包括:
根据第一时钟信号将芯片选择信号从串行外围接口(SPI)主机装置发送到SPI客户端装置;
响应于在所述SPI客户端装置处接收到所述芯片选择信号,将SPI发射的第一位从所述SPI客户端装置发射到所述SPI主机装置;
将所述第一时钟信号从所述SPI主机装置发送到所述SPI客户端装置;
响应于在所述SPI客户端装置处接收到所述第一时钟信号,将所述SPI发射的第二位从所述SPI客户端装置发射到所述SPI主机装置;以及
根据第二时钟信号在所述SPI主机装置处接收所述SPI发射的所述第一位和所述第二位。
16.根据权利要求15所述的方法,其中所述第二时钟信号与在所述SPI主机装置处从所述SPI客户端装置接收的数据对准。
17.根据权利要求16所述的方法,其中至少部分地基于SPI信道的环路传播延迟调整所述第二时钟信号的对准。
18.根据权利要求15所述的方法,其中在发送所述第一时钟信号之前至少一个时钟循环发送所述芯片选择信号。
19.根据权利要求15所述的方法,其进一步包括将所述SPI发射的N个位发射到所述SPI主机装置,其中响应于在所述SPI客户端装置处接收到所述第一时钟信号中的第(N-1)时钟信号而发射第N位。
20.根据权利要求15所述的方法,其中响应于所述芯片选择信号中的转变发射所述SPI发射的所述第一位。
CN202210219031.0A 2021-03-10 2022-03-08 用于spi接口的传播延迟补偿 Pending CN115080489A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/197,945 2021-03-10
US17/197,945 US11341081B1 (en) 2021-03-10 2021-03-10 Propagation delay compensation for SPI interfaces

Publications (1)

Publication Number Publication Date
CN115080489A true CN115080489A (zh) 2022-09-20

Family

ID=81656305

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210219031.0A Pending CN115080489A (zh) 2021-03-10 2022-03-08 用于spi接口的传播延迟补偿

Country Status (2)

Country Link
US (2) US11341081B1 (zh)
CN (1) CN115080489A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117118777B (zh) * 2023-10-23 2024-01-02 合肥为国半导体有限公司 一种通信系统及方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510485B2 (en) * 2007-08-31 2013-08-13 Apple Inc. Low power digital interface
US9418037B2 (en) * 2012-07-11 2016-08-16 Infineon Technologies Ag SPI interface and method for serial communication via an SPI interface having an SPI protocol handler for evaluating signal transitions of SPI signals
US8928383B2 (en) * 2013-03-15 2015-01-06 Analog Devices, Inc. Integrated delayed clock for high speed isolated SPI communication
US9582441B2 (en) * 2014-02-27 2017-02-28 Infineon Technologies Ag Clockless serial slave device
US10503686B2 (en) * 2015-12-09 2019-12-10 Microchip Technology Incorporated SPI interface with automatic slave select generation
US10877673B2 (en) * 2017-12-15 2020-12-29 Microchip Technology Incorporated Transparently attached flash memory security

Also Published As

Publication number Publication date
US20220292048A1 (en) 2022-09-15
US11341081B1 (en) 2022-05-24
US11704276B2 (en) 2023-07-18

Similar Documents

Publication Publication Date Title
US6744285B2 (en) Method and apparatus for synchronously transferring data across multiple clock domains
CN101496367B (zh) 串行互联多通道的对齐和纠偏的方法及发送器
US6629250B2 (en) Adjustable data delay using programmable clock shift
EP0940758B1 (en) Serial bus speed-up circuit
US7783911B2 (en) Programmable bus driver launch delay/cycle delay to reduce elastic interface elasticity requirements
US20070002845A1 (en) Multi-channel synchronization architecture
US7673073B2 (en) Multiphase encoded protocol and synchronization of buses
US7894537B2 (en) Adaptive data alignment
CN101849381A (zh) 使用延迟电路的无时钟串行化
WO2021213237A1 (zh) 多通道信号同步系统、电路及方法
US8391433B2 (en) Flow controlled pulsed serial link
US11704276B2 (en) Propagation delay compensation for SPI interfaces
US7694264B2 (en) Pulse link and apparatus for transmitting data and timing information on a single line
US5274628A (en) Multisignal synchronizer with shared last stage
WO2001016774A1 (en) A circuit design for high-speed digital communication
EP1584019A2 (en) System for providing a calibrated clock and methods thereof
JP2002009748A (ja) インターフェース回路
CN117009267B (zh) 源同步数据流中插入时间信息的方法
US20050152407A1 (en) Output clock adjustment for a digital I/O between physical layer device and media access controller
CN100426532C (zh) 用于流水线插入的电路和方法
US6172539B1 (en) Synchronous buffer circuit and data transmission circuit having the synchronous buffer circuit
US6404257B1 (en) Variable delay element for jitter control in high speed data links
KR100336759B1 (ko) 클럭신호 선택회로
JP4765668B2 (ja) データ受信回路
GB2603516A (en) Apparatus and method for serial data communication between a master device and peripheral devices

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination