用于串行通信的从设备及方法与流程

文档序号:17586657发布日期:2019-05-03 21:22阅读:222来源:国知局
用于串行通信的从设备及方法与流程

本发明涉及数据通信技术领域,具体涉及一种用于串行通信的从设备及方法。



背景技术:

现有技术中,spi(serialperipheralinterface,串行外设接口)从设备发送数据的一种常用设计方法的结构框图如图1所示。spi从设备100经由时钟信号端sclk接收串行时钟信号sclk,经由数据输入端mosi接收数据,以及经由数据输出端miso发送数据。spi从设备内部用一个比spi串行时钟(sclk)频率高数倍的系统时钟(sysclk),在边沿检测模块110同步并检测spi串行时钟信号sclk边沿,也称为发送沿,即串行时钟信号sclk的上升沿或下降沿的跳变,得到的发送沿信号。该发送沿信号作为使能信号entx,只维持一个系统时钟sysclk周期的高电平有效。逻辑模块120根据使能信号从存储模块130中读取数据,并且移位输出一位发送数据到数据输出端miso上,并且在一组数据(通常为8bit)移位输出完毕后,从存储器取出下一组数据并再次移位发送出去。

图2是该方法spi模式0发送数据的波形示意图。如图所示,spi串行时钟通常只在spi传输数据时(cs有效期间)工作,其他时间保持固定电平不变化(即使有变化也可以用cs门控住)。spi模式0需要在第一个spi串行时钟发送沿到来前准备好第一位数据,并输出到数据输出端miso上。在spi串行时钟到来前,无法使用spi串行时钟从存储器读取数据进行第一位数据的发送,因此通常使用系统时钟信号sysclk来发送数据。

这种数据发送方法存在着一些不足。图2中,从spi串行时钟的发送沿到系统时钟sysclk跨时钟域同步并检测到spi串行时钟的发送沿跳变信号,用该跳变信号作为使能信号entx移位输出数据,这段数据准备延迟ta(misodatapreparedelay)通常为2~3个系统时钟sysclk周期(tsysclk)。另外一个延迟是数据在pad/board上传输延迟tb(misopad/boarddelay)。spi串行时钟的半周期(tsclk/2)减去数据准备延迟ta和数据在pad/board传输延迟tb(misopad/boarddelay),就是输出数据在接收端的建立时间tc(misosetuptime)。一个项目中,数据在pad/board传输延迟tb是固定的,越大的数据准备延迟ta将使得输出数据建立时间tc越小,限制了传输速率的提高。

为了满足输出数据在接收端的建立时间要求,在spi串行时钟频率(即传输速率)一定的情况下(即tsclk/2一定),需要频率较高的系统时钟信号sysclk,以减少数据准备延迟ta;或者说在系统时钟信号sysclk频率一定的情况下,能支持的spi串行时钟的最高频率较低;这都表现为系统时钟sysclk/串行时钟sclk的频率比例较高。



技术实现要素:

鉴于上述问题,本发明的目的在于提供一种用于串行通信的从设备及方法,从而降低系统时钟sysclk/串行时钟信号sclk的频率比例,得到更好的输出数据建立时间。

根据本发明的一方面,提供一种用于从设备的串行通信方法,包括:

经由时钟信号端接收串行时钟信号;

经由数据输入端接收数据,所述数据包括多个连续的位数据;

与系统时钟信号同步,对所述数据进行移位以获得位数据;以及

与所述串行时钟信号同步,锁存所述位数据,以及经由数据输出端发送至少一部分锁存的位数据,

其中,所述串行时钟信号和所述系统时钟信号分别具有第一时钟周期和第二时钟周期,所述第一时钟周期大于所述第二时钟周期。

可选地,在所述串行时钟信号的连续周期中,分别对所述数据的选择位数据进行移位和锁存以及发送。

可选地,还包括:根据所述串行时钟信号产生驱动时钟信号,其中,在所述驱动时钟信号的边沿发送所述位数据。

可选地,所述驱动时钟信号由所述串行时钟信号经过门控和/或相位变换得到。

可选地,对所述数据进行移位的步骤包括:

在所述串行时钟信号的第一时钟周期中,延迟至少一个第二时钟周期,从而获得与所述系统时钟信号同步的使能信号;以及

根据所述使能信号,对所述数据进行移位以获得位数据。

可选地,还包括:根据所述使能信号,对所述位数据进行移位以获得第一位数据,以及锁存所述第一位数据,以及发送锁存的第一位数据。

可选地,还包括:根据所述串行时钟信号得到选择信号,用于选择性地将所述数据的第一位数据和其余位数据提供到数据输出端进行发送。

可选地,根据所述从设备的工作模式,在所述串行时钟信号的上升沿或下降沿发送所述位数据。

可选地,根据所述从设备的工作模式,在所述串行时钟信号的第一个边沿之前或之后发送所述第一位数据。

根据本发明的另一方面,提供一种用于串行通信的从设备,所述从设备经由时钟信号端接收串行时钟信号,经由数据输入端接收数据,以及经由数据输出端发送所述数据,其特征在于,所述从设备包括:

存储模块,用于存储所述数据;

逻辑模块,与存储模块耦接,用于与系统时钟信号同步,对所述数据进行移位以获得位数据;

第一锁存模块,与逻辑模块耦接,用于锁存所述数据的第一位数据;

第二锁存模块,与逻辑模块耦接,用于锁存所述数据的其余位数据;

选择信号生成模块,用于获得与所述串行时钟信号同步的选择信号;

选择模块,与第一锁存模块、第二锁存模块和选择信号生成模块耦接,用于根据选择信号将所述第一位数据和所述其余位数据之一提供至所述数据输出端,

其中,所述串行时钟信号和所述系统时钟信号分别具有第一时钟周期和第二时钟周期,所述第一时钟周期大于所述第二时钟周期。

可选地,还包括:边沿检测模块,用于在所述串行时钟信号的第一时钟周期中,延迟至少一个第二时钟周期,从而获得与所述系统时钟信号同步的使能信号。

可选地,还包括:时钟模块,用于对所述串行时钟信号经过门控和/或相位变换得到驱动时钟信号,

其中,所述选择信号生成模块根据所述驱动时钟信号的边沿检测生成所述选择信号。

可选地,所述逻辑模块根据从设备的工作模式选择将第一位位数据移位到所述第一锁存模块或所述第二锁存模块。

可选地,所述第一锁存模块包括触发器和控制逻辑,用于锁存和输出第一位数据。

可选地,所述第二锁存模块,包括触发器,所述驱动时钟信号作用于触发器的时钟端,用于锁存和输出其余位数据。

可选地,所述选择信号生成模块包括触发器和控制逻辑模块,用于控制选择信号。

根据本发明提供的一种用于串行通信的从设备及方法,具有以下优点或益处:用系统时钟sysclk,根据检测到的串行时钟信号sclk边沿,也称为发送沿,即串行时钟信号sclk上升沿或下降沿,预先移位准备好待发位数据,串行时钟信号sclk发送沿到来时即用该时钟沿作用于发送触发器,锁存及发送出该待发数据,并经选择器选择输出。这样,将发送数据的准备延迟转移到了发送沿到来之前,发送数据到达接收端只有传输延迟(pad/boarddelay),从而得到了最好的发送数据建立时间,降低了系统时钟sysclk/串行时钟信号sclk的频率比例。

进一步的,预先移位准备待发数据是根据系统时钟sysclk检测到的串行时钟信号sclk发送沿进行的,其最大延迟时间为3个系统时钟sysclk周期,只要串行时钟信号sclk的两个发送沿间隔(即周期)大于3个系统时钟sysclk周期,用串行时钟信号sclk的发送沿(按模式变换为驱动时钟信号gsclk)直接锁存及发送系统时钟sysclk预先移位准备好的待发数据,足以满足发送触发器的建立时间和保持时间要求,确保了数据的正确发送。

进一步的,用系统时钟sysclk操作存储模块,解决了spi传输开始前无串行时钟信号sclk情况下第一位数据读取、准备、发送的问题,以及存储器模块在无串行时钟信号sclk期间的操控问题(如清空、同步等)。

进一步的,增加第一位数据锁存模块,解决了spi不同模式中第一位数据在第一个串行时钟信号sclk发送沿之前发送的问题,且第一位数据锁存模块只用一个触发器,开销极小。

进一步的,增加移位数据锁存及发送模块,确保了每位发送数据在每个串行时钟信号sclk发送沿之后才发送出该发送位数据,保证了发送数据在接收端的保持时间(holdtime),确保了数据发送不至于错位,且移位数据锁存及发送模块只用一个触发器,开销极小。

进一步的,增加了选择信号生成模块和选择模块,确保了不同模式中,选择模块选择正确的移位位数据输出。

附图说明

通过以下参照附图对本发明实施例的描述,本发明的上述以及其他目的、特征和优点将更为清楚,在附图中:

图1示出了现有技术中用于串行通信的从设备的结构框图;

图2示出了现有技术中从设备串行通信的时序图;

图3示出了本发明第一实施例从设备串行通信方法的流程图;

图4示出了本发明第二实施例从设备串行通信方法的流程图;

图5示出了本发明实施例从设备串行通信的四种工作模式;

图6示出了本发明第三实施例用于串行通信的从设备的结构框图;

图7示出了本发明第四实施例从设备spi模式0发送数据方法的时序图。

图8示出了本发明第五实施例从设备spi模式1发送数据方法的时序图。

具体实施方式

以下将参照附图更详细地描述本发明的各种实施例。在各个附图中,相同的元件采用相同或类似的附图标记来表示。为了清楚起见,附图中的各个部分没有按比例绘制。

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

spi总线是一种全双工,同步的外围接口总线,该接口包含4根信号线:低电平有效的从机选择线cs,串行时钟线(sclk)、主机输入/从机输出数据线miso、主机输出/从机输入数据线mosi。由于信号线少,协议简单,相对数据速率高,很大一部分的芯片集成了spi接口。spi以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,数据在主从设备之间按照spi串行时钟的采样沿接收一位数据,发送沿发送一位数据进行数据收发,做到全双工传输(收发)。

cs是片选信号,由主设备产生,每个从设备对应唯一的cs,表征从设备是否被主设备选中,通常低电平有效。cs有效期间才是主从设备间一次有效的spi传输,可以传输多组多位数据。spi串行时钟sclk也由主设备产生,主从设备按spi串行时钟sclk的采样沿/发送沿收/发数据;主设备在采样沿采样接收从设备发送的miso数据,在发送沿发送数据到mosi给从设备;从设备在采样沿采样接收主设备发送的mosi数据,在发送沿发送数据到miso给主设备。

发送沿是时钟信号的电平跳变边沿,为上升沿或下降沿,在一个时序图中,发送沿是时序分析的起点。

图3示出了本发明第一实施例从设备串行通信方法的流程图,该方法由从设备串行通信装置实现,具体步骤包括:

步骤s301:接收串行时钟信号和接收数据。

在spi从设备的片选信号cs有效之前,接收来自主设备的串行时钟信号sclk,经由数据接入端(mosi)接收要发送的数据(data),并存储在数据存储模块中。

串行时钟信号sclk为spi主设备系统时钟信号,由主设备产生。

步骤s302:与系统时钟信号同步,对数据进行移位获得位数据。

系统时钟信号sysclk为spi从设备内部的系统时钟,用系统时钟信号sysclk同步并检测串行时钟信号sclk的边沿,获得使能信号enbit。使能信号enbit维持相应的一个有效时间段,有效时间段从串行时钟信号的边沿延迟第一时间段开始,并且有效时间段持续第二时间段,第一时间段和所述第二时间段分别包括至少一个第二时钟周期。例如:系统时钟信号sysclk的周期是第二时钟周期,使能信号enbit的有效时间段相较于串行时钟信号sclk的边沿会有2~3个系统时钟信号周期的延迟,且有效时间段仅维持一个系统时钟周期的有效。

使能信号enbit的边沿与系统时钟信号sysclk的边沿同步,在这个边沿对存储器中的数据进行移位,以获得位数据。

所述边沿是时钟信号的电平跳变沿,为上升沿或下降沿,也称为发送沿。

步骤s303:与串行时钟信号同步,锁存并发送预移位的位数据。

在串行时钟信号sclk的边沿即发送沿,对预移位的位数据进行锁存和发送,锁存在第二锁存模块,发送到选择模块。

所述预移位的位数据是指本个发送沿发送的数据是系统时钟信号sysclk同步并检测上个发送沿获得的使能信号enbit移位的数据,而系统时钟信号sysclk同步并检测本个发送沿获得的使能信号enbit移位的数据则在下个发送沿时刻进行发送。

使能信号enbit相较于串行时钟信号sclk的边沿有一个延迟,因此根据使能信号enbit进行移位的位数据相较于串行时钟信号sclk的边沿也存在一个延迟,即与串行时钟信号同步,锁存并发送的移位位数据是根据检测串行时钟信号sclk上个周期的边沿获得的使能信号移位的位数据。

步骤s304:生成选择信号,选择模块根据选择信号选择输出位数据。

选择信号sel是根据串行时钟信号sclk得到的。在串行时钟信号sclk的第一个发送沿到来之前,选择信号sel为1,在第一个发送沿之后,选择信号sel为0。当选择信号sel为1时,选择模块连接至第一锁存输出端,当选择信号sel为0时,选择模块连接至第二锁存输出端。

上述步骤仅示出了从设备串行通信方法在数据传输开始后,即从第一个发送沿开始的数据传输流程。在从设备正式开始传输数据前,即第一个发送沿之前,该方法还包括:在第一个发送沿之前,准备好一个移位位数据,以便在第一个发送沿时刻发送。根据spi从设备模式的不同选择,该方法还包括:在提前准备好一个移位位数据之前,进行一个位数据的移位并锁存,将其移位并锁存至第一锁存模块,并在第一个发送沿之前将其发送到数据输出端miso。

图4示出了本发明第二实施例从设备串行通信方法的流程图,与图3示出的方法相比较,图4是一个优选地实施例,不同之处在于增加了一个驱动时钟信号gsclk,在驱动时钟的边沿对移位位数据进行锁存和发送,该方法的步骤包括:

步骤s401:接收串行时钟信号和接收数据。

在spi从设备的片选信号cs有效之前,接收来自主设备的串行时钟信号sclk,经由数据接入端(mosi)接收要发送的数据(data),并存储在数据存储模块中。

串行时钟信号sclk为spi主设备系统时钟信号,由主设备产生。

步骤s402:根据串行时钟信号获得驱动时钟信号。

增加一个模块,输入为串行时钟信号sclk,输出为驱动时钟信号gsclk,具体的,驱动时钟信号gsclk可以由变换相位和/或门控串行时钟信号sclk生成。仅在cs有效期间使能门控,允许驱动时钟信号gsclk工作。

步骤s403:与系统时钟信号同步,对数据进行移位获得位数据。

系统时钟信号sysclk为spi从设备内部的系统时钟,用系统时钟信号sysclk同步并检测串行时钟信号sclk的边沿,获得使能信号enbit。使能信号enbit维持相应的一个有效时间段,有效时间段从串行时钟信号的边沿延迟第一时间段开始,并且有效时间段持续第二时间段,第一时间段和所述第二时间段分别包括至少一个第二时钟周期。例如:系统时钟信号sysclk的周期是第二时钟周期,使能信号enbit的有效时间段相较于串行时钟信号sclk的边沿会有2~3个系统时钟信号周期的延迟,且有效时间段仅维持一个系统时钟周期的有效。

使能信号enbit的边沿与系统时钟信号sysclk的边沿同步,在这个边沿对存储器中的数据进行移位,以获得位数据。

所述边沿是时钟信号的电平跳变沿,为上升沿或下降沿,也称为发送沿。

步骤s404:与驱动时钟信号同步,锁存并发送预移位的位数据。

在驱动时钟信号sclk的边沿即发送沿,对预移位的位数据进行锁存和发送,锁存在第二锁存模块,发送到选择模块。

所述预移位的位数据是指本个发送沿发送的数据是系统时钟信号sysclk同步并检测上个发送沿获得的使能信号enbit移位的数据,而系统时钟信号sysclk同步并检测本个发送沿获得的使能信号enbit移位的数据则在下个发送沿时刻进行发送。

在第二实施例中,由于驱动时钟由变换相位和/或门控串行时钟信号sclk获得,因此驱动时钟的边沿与串行时钟的边沿同步。

使能信号enbit相较于串行时钟信号sclk的边沿有一个延迟,因此根据使能信号enbit进行移位的位数据相较于串行时钟信号sclk的边沿也存在一个延迟。与驱动时钟信号gsclk同步,即与串行时钟信号sclk同步,锁存并发送的移位位数据是根据检测串行时钟信号sclk上个周期的边沿获得的使能信号移位的位数据。

步骤s405:生成选择信号,选择模块根据选择信号选择输出位数据。

选择信号sel是根据串行时钟信号sclk和驱动时钟信号gsclk得到的。在串行时钟信号sclk的第一个发送沿到来之前,选择信号sel为1,在第一个发送沿之后,选择信号sel为0。当选择信号sel为1时,选择模块连接至第一锁存输出端,当选择信号sel为0时,选择模块连接至第二锁存输出端。

上述步骤仅示出了从设备串行通信方法在数据传输开始后,即从第一个发送沿开始数据传输流程。在从设备正式开始传输数据前,即第一个发送沿之前,该方法还包括:在第一个发送沿之前,准备好一个移位位数据,以便在第一个发送沿时刻发送。根据spi从设备模式的不同选择,该方法还包括:在提前准备好一个移位位数据之前,进行一个位数据的移位并锁存,将其移位并锁存至第一锁存模块,并在第一个发送沿之前将其发送到数据输出端miso。

图5示出了本发明实施例从设备串行通信的四种工作模式。如图所示,根据系统时钟的相位cpha和极性cpol,将其分为四种工作方式。

方式一(spi0):极性cpol为0,相位cpha为0,

方式二(spi1):极性cpol为0,相位cpha为1,

方式三(spi2):极性cpol为1,相位cpha为0,

方式四(spi3):极性cpol为1,相位cpha为1,

极性cpol,表示spi在空闲时,串行时钟信号sclk是高电平还是低电平。若cpol被设为1,那么该设备在空闲时串行时钟信号sclk管脚下的时钟信号为高电平。当cpol被设为0时则正好相反。

相位cpha,表示spi设备是在串行时钟信号sclk管脚上的时钟信号变为上升沿时触发数据采样,还是在串行时钟信号sclk变为下降沿时触发数据采样。若cpha被设置为1,则spi设备在串行时钟信号sclk变为下降沿时触发数据采样,在上升沿时发送数据。当cpha被设为0时也正好相反。

在本发明中,四种模式的区别还表现为:

表一:spi四种模式的区别

从图5和表格一中可以看出,spi模式2与模式0的发送数据节拍是一样的,唯一不同在于模式2其驱动时钟信号gsclk与串行时钟信号sclk同相。

spi模式1与模式3的发送数据节拍一样,但是模式1驱动时钟信号gsclk与串行时钟信号sclk同相,模式3驱动时钟信号gsclk与串行时钟信号sclk反相。

spi模式1与模式0发送数据节拍的区别在于:spi模式0在第一个发送沿到来之前已经将第一位数据发送,而模式1则在第一个发送沿之后发送第一位数据。

在模式1和模式3中,所有发送数据都从第二锁存模块发送出去,选择信号sel一直保持为0。在模式0和模式2中,第一个发送数据来自第一锁存模块,其余发送数据来自第二锁存模块,选择信号sel的电平在第一个发送沿之前为1,在第一个发送沿之后保持为0.

图6示出了本发明第三实施例用于串行通信的从设备的结构框图,该图具体为实现图4所示流程图所对应的结构框图。如图所示,本发明实施例spi从设备200可以分成系统时钟域d1和驱动时钟信号gsclk域d2,还包括时钟模块310,选择模块214。

所述系统时钟域d1,包括边沿检测模块110,存储模块130,逻辑模块120和第一锁存模块211。

所述驱动时钟信号域d2包括第二锁存模块212和选择信号生成模块213。

边沿检测模块110,使用内部系统时钟sysclk检测串行时钟信号sclk的发送沿,得到维持一个内部系统时钟周期的发送沿使能信号enbit。

存储模块130,存储所有待发送数据。

逻辑模块120,从存储模块130取一组一组的发送数据,以及在检测得到一个使能信号enbit时移位发送数据组中的一个位数据bitdata到第二锁存模块212。

第一锁存模块211,包括一个触发器和控制逻辑,在spi模式0和模式2中使用,在每次传输开始前锁存好该次传输第一组第一位发送数据,并在cs有效之后发送第一位位数据,且在本次传输中一直保持。

时钟模块310,仅在cs有效时使能门控,在spi模式0和模式3中取反相串行时钟信号sclk,模式1和模式2取同相串行时钟信号sclk,从而得到驱动时钟信号gsclk。驱动时钟信号gsclk只在cs有效期间工作,并且驱动时钟信号gsclk的发送沿对应于spi各种模式中串行系统时钟sclk的发送沿,驱动时钟信号gsclk的发送沿在各种模式中都是上升沿,从而驱动时钟信号域d2统一用上升沿触发器工作。

第二锁存模块212,包括一个触发器,驱动时钟信号gsclk的发送沿作用于触发器时钟端,锁存及发送系统时钟域d1中预先移位准备好的发送位数据bitdata,并经由第二锁存模块212的输出端发送到选择模块214。

选择信号生成模块213,包括一个触发器和控制逻辑,用于生成选择信号sel并选择发送位数据输出,其要求是,spi模式0和模式2的选择信号在第一个发送沿之前为1,第一个发送沿之后为0,并且一直保持0到一次spi传输结束;spi模式1和模式3一直保持为0。

选择模块214,用选择信号sel选择系统时钟域d1中的第一锁存模块211的输出端数据或者驱动时钟信号域d2中的第二锁存模块212的输出端数据。具体而言,当选择信号sel为1时选择第一锁存模块211的输出端数据,当选择信号sel为0时选择第二锁存模块212的输出端数据。

图7示出了本发明第四实施例spi从设备spi模式0发送数据方法的时序图。结合图5,该时序图分为两个部分,虚线上方信号工作于系统时钟域d1,虚线下方信号工作于驱动时钟信号gsclk域d2。

spi模式0的驱动时钟信号gsclk是取串行时钟信号sclk的反相位。

cs变为低电平前,系统时钟域d1中,从设备从存储模块130中取出第一组数据,并把第一位数据存于bit0第一锁存模块211,并且移位把第一个发送沿将要发送的数据bitdata移到bit1-n第二锁存模块212。同时,系统时钟域d1生成一个异步复位信号,复位驱动时钟信号gsclk域d2中的选择信号sel为1。

cs变为低电平后,在驱动时钟域d2中,第一个发送沿前,选择信号sel为1,选择模块214选择bit0第一锁存模块211的bit0输出到miso上为bit0。第一个发送沿后,驱动时钟信号gsclk经由第二锁存模块212锁存并发送bitdata到选择模块214,选择信号sel变换为0,选择模块214选择第二锁存模块212的数据输出到miso上。

同时,在系统时钟域d1中,系统时钟sysclk检测串行时钟信号sclk的发送沿得到使能信号enbit,逻辑模块120根据使能信号enbit进行一个位数据bitdata的移位,该位数据bitdata移位至第二锁存模块212。

具体的如图7所示,在第一个发送沿t0时刻之前,bit0第一锁存模块211中的位数据bit0已经被输出到miso上,在t0时刻,驱动时钟信号gsclk锁存并发送出传输开始前已经准备好的bit1,同时也是bit1-n第二存储模块212中的bit1,然后被选择模块214选择输出到miso上为bit1。

同时,在t0时刻,串行时钟信号sclk发送沿被系统时钟sysclk检测到,生成使能信号enbit(维持一个系统时钟sysclk周期有效时间段),该使能信号enbit在t1时刻移位数据得到bit2,为第二个发送沿准备好数据。

在第二个发送沿t2时刻,驱动时钟信号gsclk锁存并发送出传输开始前已经准备好的bit2,即在第二存储模块中的bit2,然后被选择模块214选择输出到miso上为bit2。

同时,在t2时刻,串行时钟信号sclk发送沿被系统时钟sysclk检测到,生成使能信号enbit,该使能信号在t3时刻移位数据得到bit3,为第三个发送沿准备好数据。

t4时刻即为第三个发送沿时刻,按照上述节拍,流水线地进行下去发送数据。第一组数据发送完毕后,从存储器取出下一组数据发送,直至本次spi传输结束(cs从低变高成无效)。

在传输过程中,只要系统时钟sysclk的时钟周期为串行系统时钟sclk周期的至少三倍,就可以在串行系统时钟信号sclk的发送沿到来时,待发送数据data1足够稳定,满足bitdata的预备时间t1。

图8示出了本发明第五实施例spi从设备spi模式1发送数据方法的时序图,如图所示,该时序图分为两个部分,虚线上方信号工作于系统时钟域d1,虚线下方信号工作于驱动时钟信号域d2。spi模式1的驱动时钟信号gsclk是取串行时钟信号sclk的同相位。

cs变为低电平前,系统时钟域d1中,从设备从存储模块130取出第一组数据,并把第一位数据bit0移位到第二锁存模块212。选择信号sel一直保持为0。

cs变为低电平后,在驱动时钟域d2中,选择信号sel在第一个发送沿之前和之后都一直保持为0,选择模块214根据选择信号sel选择第二锁存模块212的数据输出到miso上。

同时在系统时钟域d1中,系统时钟sysclk检测串行时钟信号sclk的发送沿得到使能信号enbit,逻辑模块120根据使能信号enbit进行将存储模块130中的一个位数据进行移位得到bitdata,该位数据bitdata移位至第二锁存模块212。

具体的如图8所示,在第一个发送沿t0时刻之前,将存储模块130中的数据移位获得bitdata,在t0时刻,驱动时钟信号gsclk锁存并发送出传输开始前已经准备好的bit0,同时也是bit1-n第二存储模块212中的bit0,然后被选择模块214选择输出到miso上为bit0。

同时,在t0时刻,串行时钟信号sclk发送沿被系统时钟sysclk检测到,生成使能信号enbit(维持一个系统时钟sysclk周期有效时间段),该使能信号enbit在t1时刻移位数据得到bit1,为第二个发送沿准备好数据。

在第二个发送沿t2时刻,驱动时钟信号gsclk锁存并发送出传输开始前已经准备好的bit1,即在第二存储模块中的bit1,然后被选择模块214选择输出到miso上为bit1。

同时,在t2时刻,串行时钟信号sclk发送沿被系统时钟sysclk检测到,生成使能信号enbit,该使能信号在t3时刻移位数据得到bit2,为第三个发送沿准备好数据。

t4时刻即为第三个发送沿时刻,按照上述节拍,流水线地进行下去发送数据。第一组数据发送完毕后,从存储器取出下一组数据发送,直至本次spi传输结束(cs从低变高成无效)。

本发明提供的用于串行通信的从设备及方法,能够大大降低系统时钟sysclk/串行时钟信号sclk的频率比例,提高从设备数据发送速率,或者降低从设备系统时钟sysclk频率。下面通过两个实例来说明本发明与现有技术相比的有益效果。

假设从设备发送数据传输延迟(pad/boarddelay)时间(图7中的t3)为15ns(其他相关细微次要延时此处不做考虑,可以统一计入此总延时),接收端接收从设备的发送数据的建立时间(图7中的t4)最小要求为5ns,以此为例,比较两种方案:

表二:系统时钟信号sysclk为50mhz时能支持的spi串行时钟信号sclk的最高频率

从表二可以看出,同样系统时钟信号sysclk为50mhz,原方案支持spi串行时钟信号sclk最高频率为6.25mhz,本方案可支持spi串行时钟信号sclk最高频率到16.6mhz。

表三:spi串行时钟信sclk为10mhz时,对系统时钟信号sysclk最低频率要求

从表三可以看出,同样spi串行时钟信号sclk为10mhz,原方案要求系统时钟信号sysclk最低频率为100mhz,本方案要求系统时钟信号sysclk最低频率为33mhz。

通过上述两个表格的比较,可以清楚的看出,在spi系统时钟sysclk的频率确定时,本发明中对串行时钟信号sclk的支持频率有大幅提高,因此可以提高spi数据传输的速率;而在spi串行时钟信号sclk频率确定时,本发明中对系统时钟sysclk的频率要求大幅降低,因此可以降低功耗。因此,本发明在提高数据传输率和降低功耗方面有很好的效果。

依照本发明的实施例如上文所述,这些实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施例。显然,根据以上描述,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地利用本发明以及在本发明基础上的修改使用。本发明仅受权利要求书及其全部范围和等效物的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1